summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorg Brandl <georg@python.org>2020-09-08 20:20:19 +0200
committerGitHub <noreply@github.com>2020-09-08 20:20:19 +0200
commit9f5672672bd61f7149d2a165b49f0617a1a9fe8e (patch)
treead3d62c5c167c6a75edf67a88c20341c77566c7e
parentd9a9e9ee40eb9815ecc3d9ec9d6f5e57499009d2 (diff)
downloadpygments-git-9f5672672bd61f7149d2a165b49f0617a1a9fe8e.tar.gz
all: remove "u" string prefix (#1536)
* all: remove "u" string prefix * util: remove unirange Since Python 3.3, all builds are wide unicode compatible. * unistring: remove support for narrow-unicode builds which stopped being relevant with Python 3.3
-rw-r--r--doc/conf.py12
-rw-r--r--external/rst-directive.py2
-rw-r--r--pygments/filters/__init__.py1124
-rw-r--r--pygments/formatters/html.py12
-rw-r--r--pygments/formatters/latex.py18
-rw-r--r--pygments/formatters/other.py8
-rw-r--r--pygments/formatters/rtf.py52
-rw-r--r--pygments/lexer.py12
-rw-r--r--pygments/lexers/apl.py26
-rw-r--r--pygments/lexers/archetype.py4
-rw-r--r--pygments/lexers/erlang.py2
-rw-r--r--pygments/lexers/esoteric.py34
-rw-r--r--pygments/lexers/ezhil.py22
-rw-r--r--pygments/lexers/haskell.py4
-rw-r--r--pygments/lexers/haxe.py2
-rw-r--r--pygments/lexers/int_fiction.py10
-rw-r--r--pygments/lexers/javascript.py2
-rw-r--r--pygments/lexers/julia.py70
-rw-r--r--pygments/lexers/jvm.py282
-rw-r--r--pygments/lexers/lisp.py1540
-rw-r--r--pygments/lexers/markup.py4
-rw-r--r--pygments/lexers/mime.py4
-rw-r--r--pygments/lexers/modeling.py2
-rw-r--r--pygments/lexers/modula2.py10
-rw-r--r--pygments/lexers/perl.py132
-rw-r--r--pygments/lexers/php.py6
-rw-r--r--pygments/lexers/prolog.py20
-rw-r--r--pygments/lexers/python.py12
-rw-r--r--pygments/lexers/qvt.py2
-rw-r--r--pygments/lexers/rdf.py64
-rw-r--r--pygments/lexers/scripting.py10
-rw-r--r--pygments/lexers/slash.py2
-rw-r--r--pygments/lexers/testing.py8
-rw-r--r--pygments/lexers/theorem.py10
-rw-r--r--pygments/lexers/webmisc.py41
-rw-r--r--pygments/lexers/whiley.py8
-rw-r--r--pygments/styles/arduino.py2
-rw-r--r--pygments/unistring.py151
-rw-r--r--pygments/util.py48
-rwxr-xr-xscripts/check_sources.py2
-rwxr-xr-xscripts/debug_lexer.py2
-rw-r--r--tests/test_asm.py4
-rw-r--r--tests/test_basic.py2
-rw-r--r--tests/test_basic_api.py20
-rw-r--r--tests/test_bibtex.py290
-rw-r--r--tests/test_cfm.py32
-rw-r--r--tests/test_clexer.py306
-rw-r--r--tests/test_cpp.py12
-rw-r--r--tests/test_csound.py490
-rw-r--r--tests/test_data.py102
-rw-r--r--tests/test_examplefiles.py10
-rw-r--r--tests/test_ezhil.py246
-rw-r--r--tests/test_grammar_notation.py94
-rw-r--r--tests/test_html_formatter.py6
-rw-r--r--tests/test_idris.py74
-rw-r--r--tests/test_irc_formatter.py2
-rw-r--r--tests/test_java.py32
-rw-r--r--tests/test_julia.py64
-rw-r--r--tests/test_kotlin.py158
-rw-r--r--tests/test_objectiveclexer.py84
-rw-r--r--tests/test_praat.py230
-rw-r--r--tests/test_promql.py18
-rw-r--r--tests/test_python.py118
-rw-r--r--tests/test_qbasiclexer.py34
-rw-r--r--tests/test_r.py76
-rw-r--r--tests/test_regexlexer.py2
-rw-r--r--tests/test_rtf_formatter.py32
-rw-r--r--tests/test_ruby.py186
-rw-r--r--tests/test_shell.py234
-rw-r--r--tests/test_smarty.py30
-rw-r--r--tests/test_sql.py2
-rw-r--r--tests/test_textfmts.py64
-rwxr-xr-x[-rw-r--r--]tests/test_usd.py426
-rw-r--r--tests/test_util.py29
-rw-r--r--tests/test_whiley.py14
-rw-r--r--tests/test_yang.py76
76 files changed, 3632 insertions, 3745 deletions
diff --git a/doc/conf.py b/doc/conf.py
index 9e896890..1a08e0d6 100644
--- a/doc/conf.py
+++ b/doc/conf.py
@@ -34,8 +34,8 @@ source_suffix = '.rst'
master_doc = 'index'
# General information about the project.
-project = u'Pygments'
-copyright = u'2006-2020, Georg Brandl and Pygments contributors'
+project = 'Pygments'
+copyright = '2006-2020, Georg Brandl and Pygments contributors'
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
@@ -180,8 +180,8 @@ latex_elements = {
# Grouping the document tree into LaTeX files. List of tuples
# (source start file, target name, title, author, documentclass [howto/manual]).
latex_documents = [
- ('docs/index', 'Pygments.tex', u'Pygments Documentation',
- u'Pygments authors', 'manual'),
+ ('docs/index', 'Pygments.tex', 'Pygments Documentation',
+ 'Pygments authors', 'manual'),
]
# The name of an image file (relative to this directory) to place at the top of
@@ -210,8 +210,8 @@ latex_documents = [
# One entry per manual page. List of tuples
# (source start file, name, description, authors, manual section).
man_pages = [
- ('docs/index', 'pygments', u'Pygments Documentation',
- [u'Pygments authors'], 1)
+ ('docs/index', 'pygments', 'Pygments Documentation',
+ ['Pygments authors'], 1)
]
# If true, show URL addresses after external links.
diff --git a/external/rst-directive.py b/external/rst-directive.py
index a381ce43..937c3765 100644
--- a/external/rst-directive.py
+++ b/external/rst-directive.py
@@ -76,7 +76,7 @@ class Pygments(Directive):
lexer = TextLexer()
# take an arbitrary option if more than one is given
formatter = self.options and VARIANTS[list(self.options)[0]] or DEFAULT
- parsed = highlight(u'\n'.join(self.content), lexer, formatter)
+ parsed = highlight('\n'.join(self.content), lexer, formatter)
return [nodes.raw('', parsed, format='html')]
directives.register_directive('sourcecode', Pygments)
diff --git a/pygments/filters/__init__.py b/pygments/filters/__init__.py
index b57c64d3..37f87722 100644
--- a/pygments/filters/__init__.py
+++ b/pygments/filters/__init__.py
@@ -107,563 +107,563 @@ class SymbolFilter(Filter):
"""
latex_symbols = {
- '\\alpha' : u'\U000003b1',
- '\\beta' : u'\U000003b2',
- '\\gamma' : u'\U000003b3',
- '\\delta' : u'\U000003b4',
- '\\varepsilon' : u'\U000003b5',
- '\\zeta' : u'\U000003b6',
- '\\eta' : u'\U000003b7',
- '\\vartheta' : u'\U000003b8',
- '\\iota' : u'\U000003b9',
- '\\kappa' : u'\U000003ba',
- '\\lambda' : u'\U000003bb',
- '\\mu' : u'\U000003bc',
- '\\nu' : u'\U000003bd',
- '\\xi' : u'\U000003be',
- '\\pi' : u'\U000003c0',
- '\\varrho' : u'\U000003c1',
- '\\sigma' : u'\U000003c3',
- '\\tau' : u'\U000003c4',
- '\\upsilon' : u'\U000003c5',
- '\\varphi' : u'\U000003c6',
- '\\chi' : u'\U000003c7',
- '\\psi' : u'\U000003c8',
- '\\omega' : u'\U000003c9',
- '\\Gamma' : u'\U00000393',
- '\\Delta' : u'\U00000394',
- '\\Theta' : u'\U00000398',
- '\\Lambda' : u'\U0000039b',
- '\\Xi' : u'\U0000039e',
- '\\Pi' : u'\U000003a0',
- '\\Sigma' : u'\U000003a3',
- '\\Upsilon' : u'\U000003a5',
- '\\Phi' : u'\U000003a6',
- '\\Psi' : u'\U000003a8',
- '\\Omega' : u'\U000003a9',
- '\\leftarrow' : u'\U00002190',
- '\\longleftarrow' : u'\U000027f5',
- '\\rightarrow' : u'\U00002192',
- '\\longrightarrow' : u'\U000027f6',
- '\\Leftarrow' : u'\U000021d0',
- '\\Longleftarrow' : u'\U000027f8',
- '\\Rightarrow' : u'\U000021d2',
- '\\Longrightarrow' : u'\U000027f9',
- '\\leftrightarrow' : u'\U00002194',
- '\\longleftrightarrow' : u'\U000027f7',
- '\\Leftrightarrow' : u'\U000021d4',
- '\\Longleftrightarrow' : u'\U000027fa',
- '\\mapsto' : u'\U000021a6',
- '\\longmapsto' : u'\U000027fc',
- '\\relbar' : u'\U00002500',
- '\\Relbar' : u'\U00002550',
- '\\hookleftarrow' : u'\U000021a9',
- '\\hookrightarrow' : u'\U000021aa',
- '\\leftharpoondown' : u'\U000021bd',
- '\\rightharpoondown' : u'\U000021c1',
- '\\leftharpoonup' : u'\U000021bc',
- '\\rightharpoonup' : u'\U000021c0',
- '\\rightleftharpoons' : u'\U000021cc',
- '\\leadsto' : u'\U0000219d',
- '\\downharpoonleft' : u'\U000021c3',
- '\\downharpoonright' : u'\U000021c2',
- '\\upharpoonleft' : u'\U000021bf',
- '\\upharpoonright' : u'\U000021be',
- '\\restriction' : u'\U000021be',
- '\\uparrow' : u'\U00002191',
- '\\Uparrow' : u'\U000021d1',
- '\\downarrow' : u'\U00002193',
- '\\Downarrow' : u'\U000021d3',
- '\\updownarrow' : u'\U00002195',
- '\\Updownarrow' : u'\U000021d5',
- '\\langle' : u'\U000027e8',
- '\\rangle' : u'\U000027e9',
- '\\lceil' : u'\U00002308',
- '\\rceil' : u'\U00002309',
- '\\lfloor' : u'\U0000230a',
- '\\rfloor' : u'\U0000230b',
- '\\flqq' : u'\U000000ab',
- '\\frqq' : u'\U000000bb',
- '\\bot' : u'\U000022a5',
- '\\top' : u'\U000022a4',
- '\\wedge' : u'\U00002227',
- '\\bigwedge' : u'\U000022c0',
- '\\vee' : u'\U00002228',
- '\\bigvee' : u'\U000022c1',
- '\\forall' : u'\U00002200',
- '\\exists' : u'\U00002203',
- '\\nexists' : u'\U00002204',
- '\\neg' : u'\U000000ac',
- '\\Box' : u'\U000025a1',
- '\\Diamond' : u'\U000025c7',
- '\\vdash' : u'\U000022a2',
- '\\models' : u'\U000022a8',
- '\\dashv' : u'\U000022a3',
- '\\surd' : u'\U0000221a',
- '\\le' : u'\U00002264',
- '\\ge' : u'\U00002265',
- '\\ll' : u'\U0000226a',
- '\\gg' : u'\U0000226b',
- '\\lesssim' : u'\U00002272',
- '\\gtrsim' : u'\U00002273',
- '\\lessapprox' : u'\U00002a85',
- '\\gtrapprox' : u'\U00002a86',
- '\\in' : u'\U00002208',
- '\\notin' : u'\U00002209',
- '\\subset' : u'\U00002282',
- '\\supset' : u'\U00002283',
- '\\subseteq' : u'\U00002286',
- '\\supseteq' : u'\U00002287',
- '\\sqsubset' : u'\U0000228f',
- '\\sqsupset' : u'\U00002290',
- '\\sqsubseteq' : u'\U00002291',
- '\\sqsupseteq' : u'\U00002292',
- '\\cap' : u'\U00002229',
- '\\bigcap' : u'\U000022c2',
- '\\cup' : u'\U0000222a',
- '\\bigcup' : u'\U000022c3',
- '\\sqcup' : u'\U00002294',
- '\\bigsqcup' : u'\U00002a06',
- '\\sqcap' : u'\U00002293',
- '\\Bigsqcap' : u'\U00002a05',
- '\\setminus' : u'\U00002216',
- '\\propto' : u'\U0000221d',
- '\\uplus' : u'\U0000228e',
- '\\bigplus' : u'\U00002a04',
- '\\sim' : u'\U0000223c',
- '\\doteq' : u'\U00002250',
- '\\simeq' : u'\U00002243',
- '\\approx' : u'\U00002248',
- '\\asymp' : u'\U0000224d',
- '\\cong' : u'\U00002245',
- '\\equiv' : u'\U00002261',
- '\\Join' : u'\U000022c8',
- '\\bowtie' : u'\U00002a1d',
- '\\prec' : u'\U0000227a',
- '\\succ' : u'\U0000227b',
- '\\preceq' : u'\U0000227c',
- '\\succeq' : u'\U0000227d',
- '\\parallel' : u'\U00002225',
- '\\mid' : u'\U000000a6',
- '\\pm' : u'\U000000b1',
- '\\mp' : u'\U00002213',
- '\\times' : u'\U000000d7',
- '\\div' : u'\U000000f7',
- '\\cdot' : u'\U000022c5',
- '\\star' : u'\U000022c6',
- '\\circ' : u'\U00002218',
- '\\dagger' : u'\U00002020',
- '\\ddagger' : u'\U00002021',
- '\\lhd' : u'\U000022b2',
- '\\rhd' : u'\U000022b3',
- '\\unlhd' : u'\U000022b4',
- '\\unrhd' : u'\U000022b5',
- '\\triangleleft' : u'\U000025c3',
- '\\triangleright' : u'\U000025b9',
- '\\triangle' : u'\U000025b3',
- '\\triangleq' : u'\U0000225c',
- '\\oplus' : u'\U00002295',
- '\\bigoplus' : u'\U00002a01',
- '\\otimes' : u'\U00002297',
- '\\bigotimes' : u'\U00002a02',
- '\\odot' : u'\U00002299',
- '\\bigodot' : u'\U00002a00',
- '\\ominus' : u'\U00002296',
- '\\oslash' : u'\U00002298',
- '\\dots' : u'\U00002026',
- '\\cdots' : u'\U000022ef',
- '\\sum' : u'\U00002211',
- '\\prod' : u'\U0000220f',
- '\\coprod' : u'\U00002210',
- '\\infty' : u'\U0000221e',
- '\\int' : u'\U0000222b',
- '\\oint' : u'\U0000222e',
- '\\clubsuit' : u'\U00002663',
- '\\diamondsuit' : u'\U00002662',
- '\\heartsuit' : u'\U00002661',
- '\\spadesuit' : u'\U00002660',
- '\\aleph' : u'\U00002135',
- '\\emptyset' : u'\U00002205',
- '\\nabla' : u'\U00002207',
- '\\partial' : u'\U00002202',
- '\\flat' : u'\U0000266d',
- '\\natural' : u'\U0000266e',
- '\\sharp' : u'\U0000266f',
- '\\angle' : u'\U00002220',
- '\\copyright' : u'\U000000a9',
- '\\textregistered' : u'\U000000ae',
- '\\textonequarter' : u'\U000000bc',
- '\\textonehalf' : u'\U000000bd',
- '\\textthreequarters' : u'\U000000be',
- '\\textordfeminine' : u'\U000000aa',
- '\\textordmasculine' : u'\U000000ba',
- '\\euro' : u'\U000020ac',
- '\\pounds' : u'\U000000a3',
- '\\yen' : u'\U000000a5',
- '\\textcent' : u'\U000000a2',
- '\\textcurrency' : u'\U000000a4',
- '\\textdegree' : u'\U000000b0',
+ '\\alpha' : '\U000003b1',
+ '\\beta' : '\U000003b2',
+ '\\gamma' : '\U000003b3',
+ '\\delta' : '\U000003b4',
+ '\\varepsilon' : '\U000003b5',
+ '\\zeta' : '\U000003b6',
+ '\\eta' : '\U000003b7',
+ '\\vartheta' : '\U000003b8',
+ '\\iota' : '\U000003b9',
+ '\\kappa' : '\U000003ba',
+ '\\lambda' : '\U000003bb',
+ '\\mu' : '\U000003bc',
+ '\\nu' : '\U000003bd',
+ '\\xi' : '\U000003be',
+ '\\pi' : '\U000003c0',
+ '\\varrho' : '\U000003c1',
+ '\\sigma' : '\U000003c3',
+ '\\tau' : '\U000003c4',
+ '\\upsilon' : '\U000003c5',
+ '\\varphi' : '\U000003c6',
+ '\\chi' : '\U000003c7',
+ '\\psi' : '\U000003c8',
+ '\\omega' : '\U000003c9',
+ '\\Gamma' : '\U00000393',
+ '\\Delta' : '\U00000394',
+ '\\Theta' : '\U00000398',
+ '\\Lambda' : '\U0000039b',
+ '\\Xi' : '\U0000039e',
+ '\\Pi' : '\U000003a0',
+ '\\Sigma' : '\U000003a3',
+ '\\Upsilon' : '\U000003a5',
+ '\\Phi' : '\U000003a6',
+ '\\Psi' : '\U000003a8',
+ '\\Omega' : '\U000003a9',
+ '\\leftarrow' : '\U00002190',
+ '\\longleftarrow' : '\U000027f5',
+ '\\rightarrow' : '\U00002192',
+ '\\longrightarrow' : '\U000027f6',
+ '\\Leftarrow' : '\U000021d0',
+ '\\Longleftarrow' : '\U000027f8',
+ '\\Rightarrow' : '\U000021d2',
+ '\\Longrightarrow' : '\U000027f9',
+ '\\leftrightarrow' : '\U00002194',
+ '\\longleftrightarrow' : '\U000027f7',
+ '\\Leftrightarrow' : '\U000021d4',
+ '\\Longleftrightarrow' : '\U000027fa',
+ '\\mapsto' : '\U000021a6',
+ '\\longmapsto' : '\U000027fc',
+ '\\relbar' : '\U00002500',
+ '\\Relbar' : '\U00002550',
+ '\\hookleftarrow' : '\U000021a9',
+ '\\hookrightarrow' : '\U000021aa',
+ '\\leftharpoondown' : '\U000021bd',
+ '\\rightharpoondown' : '\U000021c1',
+ '\\leftharpoonup' : '\U000021bc',
+ '\\rightharpoonup' : '\U000021c0',
+ '\\rightleftharpoons' : '\U000021cc',
+ '\\leadsto' : '\U0000219d',
+ '\\downharpoonleft' : '\U000021c3',
+ '\\downharpoonright' : '\U000021c2',
+ '\\upharpoonleft' : '\U000021bf',
+ '\\upharpoonright' : '\U000021be',
+ '\\restriction' : '\U000021be',
+ '\\uparrow' : '\U00002191',
+ '\\Uparrow' : '\U000021d1',
+ '\\downarrow' : '\U00002193',
+ '\\Downarrow' : '\U000021d3',
+ '\\updownarrow' : '\U00002195',
+ '\\Updownarrow' : '\U000021d5',
+ '\\langle' : '\U000027e8',
+ '\\rangle' : '\U000027e9',
+ '\\lceil' : '\U00002308',
+ '\\rceil' : '\U00002309',
+ '\\lfloor' : '\U0000230a',
+ '\\rfloor' : '\U0000230b',
+ '\\flqq' : '\U000000ab',
+ '\\frqq' : '\U000000bb',
+ '\\bot' : '\U000022a5',
+ '\\top' : '\U000022a4',
+ '\\wedge' : '\U00002227',
+ '\\bigwedge' : '\U000022c0',
+ '\\vee' : '\U00002228',
+ '\\bigvee' : '\U000022c1',
+ '\\forall' : '\U00002200',
+ '\\exists' : '\U00002203',
+ '\\nexists' : '\U00002204',
+ '\\neg' : '\U000000ac',
+ '\\Box' : '\U000025a1',
+ '\\Diamond' : '\U000025c7',
+ '\\vdash' : '\U000022a2',
+ '\\models' : '\U000022a8',
+ '\\dashv' : '\U000022a3',
+ '\\surd' : '\U0000221a',
+ '\\le' : '\U00002264',
+ '\\ge' : '\U00002265',
+ '\\ll' : '\U0000226a',
+ '\\gg' : '\U0000226b',
+ '\\lesssim' : '\U00002272',
+ '\\gtrsim' : '\U00002273',
+ '\\lessapprox' : '\U00002a85',
+ '\\gtrapprox' : '\U00002a86',
+ '\\in' : '\U00002208',
+ '\\notin' : '\U00002209',
+ '\\subset' : '\U00002282',
+ '\\supset' : '\U00002283',
+ '\\subseteq' : '\U00002286',
+ '\\supseteq' : '\U00002287',
+ '\\sqsubset' : '\U0000228f',
+ '\\sqsupset' : '\U00002290',
+ '\\sqsubseteq' : '\U00002291',
+ '\\sqsupseteq' : '\U00002292',
+ '\\cap' : '\U00002229',
+ '\\bigcap' : '\U000022c2',
+ '\\cup' : '\U0000222a',
+ '\\bigcup' : '\U000022c3',
+ '\\sqcup' : '\U00002294',
+ '\\bigsqcup' : '\U00002a06',
+ '\\sqcap' : '\U00002293',
+ '\\Bigsqcap' : '\U00002a05',
+ '\\setminus' : '\U00002216',
+ '\\propto' : '\U0000221d',
+ '\\uplus' : '\U0000228e',
+ '\\bigplus' : '\U00002a04',
+ '\\sim' : '\U0000223c',
+ '\\doteq' : '\U00002250',
+ '\\simeq' : '\U00002243',
+ '\\approx' : '\U00002248',
+ '\\asymp' : '\U0000224d',
+ '\\cong' : '\U00002245',
+ '\\equiv' : '\U00002261',
+ '\\Join' : '\U000022c8',
+ '\\bowtie' : '\U00002a1d',
+ '\\prec' : '\U0000227a',
+ '\\succ' : '\U0000227b',
+ '\\preceq' : '\U0000227c',
+ '\\succeq' : '\U0000227d',
+ '\\parallel' : '\U00002225',
+ '\\mid' : '\U000000a6',
+ '\\pm' : '\U000000b1',
+ '\\mp' : '\U00002213',
+ '\\times' : '\U000000d7',
+ '\\div' : '\U000000f7',
+ '\\cdot' : '\U000022c5',
+ '\\star' : '\U000022c6',
+ '\\circ' : '\U00002218',
+ '\\dagger' : '\U00002020',
+ '\\ddagger' : '\U00002021',
+ '\\lhd' : '\U000022b2',
+ '\\rhd' : '\U000022b3',
+ '\\unlhd' : '\U000022b4',
+ '\\unrhd' : '\U000022b5',
+ '\\triangleleft' : '\U000025c3',
+ '\\triangleright' : '\U000025b9',
+ '\\triangle' : '\U000025b3',
+ '\\triangleq' : '\U0000225c',
+ '\\oplus' : '\U00002295',
+ '\\bigoplus' : '\U00002a01',
+ '\\otimes' : '\U00002297',
+ '\\bigotimes' : '\U00002a02',
+ '\\odot' : '\U00002299',
+ '\\bigodot' : '\U00002a00',
+ '\\ominus' : '\U00002296',
+ '\\oslash' : '\U00002298',
+ '\\dots' : '\U00002026',
+ '\\cdots' : '\U000022ef',
+ '\\sum' : '\U00002211',
+ '\\prod' : '\U0000220f',
+ '\\coprod' : '\U00002210',
+ '\\infty' : '\U0000221e',
+ '\\int' : '\U0000222b',
+ '\\oint' : '\U0000222e',
+ '\\clubsuit' : '\U00002663',
+ '\\diamondsuit' : '\U00002662',
+ '\\heartsuit' : '\U00002661',
+ '\\spadesuit' : '\U00002660',
+ '\\aleph' : '\U00002135',
+ '\\emptyset' : '\U00002205',
+ '\\nabla' : '\U00002207',
+ '\\partial' : '\U00002202',
+ '\\flat' : '\U0000266d',
+ '\\natural' : '\U0000266e',
+ '\\sharp' : '\U0000266f',
+ '\\angle' : '\U00002220',
+ '\\copyright' : '\U000000a9',
+ '\\textregistered' : '\U000000ae',
+ '\\textonequarter' : '\U000000bc',
+ '\\textonehalf' : '\U000000bd',
+ '\\textthreequarters' : '\U000000be',
+ '\\textordfeminine' : '\U000000aa',
+ '\\textordmasculine' : '\U000000ba',
+ '\\euro' : '\U000020ac',
+ '\\pounds' : '\U000000a3',
+ '\\yen' : '\U000000a5',
+ '\\textcent' : '\U000000a2',
+ '\\textcurrency' : '\U000000a4',
+ '\\textdegree' : '\U000000b0',
}
isabelle_symbols = {
- '\\<zero>' : u'\U0001d7ec',
- '\\<one>' : u'\U0001d7ed',
- '\\<two>' : u'\U0001d7ee',
- '\\<three>' : u'\U0001d7ef',
- '\\<four>' : u'\U0001d7f0',
- '\\<five>' : u'\U0001d7f1',
- '\\<six>' : u'\U0001d7f2',
- '\\<seven>' : u'\U0001d7f3',
- '\\<eight>' : u'\U0001d7f4',
- '\\<nine>' : u'\U0001d7f5',
- '\\<A>' : u'\U0001d49c',
- '\\<B>' : u'\U0000212c',
- '\\<C>' : u'\U0001d49e',
- '\\<D>' : u'\U0001d49f',
- '\\<E>' : u'\U00002130',
- '\\<F>' : u'\U00002131',
- '\\<G>' : u'\U0001d4a2',
- '\\<H>' : u'\U0000210b',
- '\\<I>' : u'\U00002110',
- '\\<J>' : u'\U0001d4a5',
- '\\<K>' : u'\U0001d4a6',
- '\\<L>' : u'\U00002112',
- '\\<M>' : u'\U00002133',
- '\\<N>' : u'\U0001d4a9',
- '\\<O>' : u'\U0001d4aa',
- '\\<P>' : u'\U0001d4ab',
- '\\<Q>' : u'\U0001d4ac',
- '\\<R>' : u'\U0000211b',
- '\\<S>' : u'\U0001d4ae',
- '\\<T>' : u'\U0001d4af',
- '\\<U>' : u'\U0001d4b0',
- '\\<V>' : u'\U0001d4b1',
- '\\<W>' : u'\U0001d4b2',
- '\\<X>' : u'\U0001d4b3',
- '\\<Y>' : u'\U0001d4b4',
- '\\<Z>' : u'\U0001d4b5',
- '\\<a>' : u'\U0001d5ba',
- '\\<b>' : u'\U0001d5bb',
- '\\<c>' : u'\U0001d5bc',
- '\\<d>' : u'\U0001d5bd',
- '\\<e>' : u'\U0001d5be',
- '\\<f>' : u'\U0001d5bf',
- '\\<g>' : u'\U0001d5c0',
- '\\<h>' : u'\U0001d5c1',
- '\\<i>' : u'\U0001d5c2',
- '\\<j>' : u'\U0001d5c3',
- '\\<k>' : u'\U0001d5c4',
- '\\<l>' : u'\U0001d5c5',
- '\\<m>' : u'\U0001d5c6',
- '\\<n>' : u'\U0001d5c7',
- '\\<o>' : u'\U0001d5c8',
- '\\<p>' : u'\U0001d5c9',
- '\\<q>' : u'\U0001d5ca',
- '\\<r>' : u'\U0001d5cb',
- '\\<s>' : u'\U0001d5cc',
- '\\<t>' : u'\U0001d5cd',
- '\\<u>' : u'\U0001d5ce',
- '\\<v>' : u'\U0001d5cf',
- '\\<w>' : u'\U0001d5d0',
- '\\<x>' : u'\U0001d5d1',
- '\\<y>' : u'\U0001d5d2',
- '\\<z>' : u'\U0001d5d3',
- '\\<AA>' : u'\U0001d504',
- '\\<BB>' : u'\U0001d505',
- '\\<CC>' : u'\U0000212d',
- '\\<DD>' : u'\U0001d507',
- '\\<EE>' : u'\U0001d508',
- '\\<FF>' : u'\U0001d509',
- '\\<GG>' : u'\U0001d50a',
- '\\<HH>' : u'\U0000210c',
- '\\<II>' : u'\U00002111',
- '\\<JJ>' : u'\U0001d50d',
- '\\<KK>' : u'\U0001d50e',
- '\\<LL>' : u'\U0001d50f',
- '\\<MM>' : u'\U0001d510',
- '\\<NN>' : u'\U0001d511',
- '\\<OO>' : u'\U0001d512',
- '\\<PP>' : u'\U0001d513',
- '\\<QQ>' : u'\U0001d514',
- '\\<RR>' : u'\U0000211c',
- '\\<SS>' : u'\U0001d516',
- '\\<TT>' : u'\U0001d517',
- '\\<UU>' : u'\U0001d518',
- '\\<VV>' : u'\U0001d519',
- '\\<WW>' : u'\U0001d51a',
- '\\<XX>' : u'\U0001d51b',
- '\\<YY>' : u'\U0001d51c',
- '\\<ZZ>' : u'\U00002128',
- '\\<aa>' : u'\U0001d51e',
- '\\<bb>' : u'\U0001d51f',
- '\\<cc>' : u'\U0001d520',
- '\\<dd>' : u'\U0001d521',
- '\\<ee>' : u'\U0001d522',
- '\\<ff>' : u'\U0001d523',
- '\\<gg>' : u'\U0001d524',
- '\\<hh>' : u'\U0001d525',
- '\\<ii>' : u'\U0001d526',
- '\\<jj>' : u'\U0001d527',
- '\\<kk>' : u'\U0001d528',
- '\\<ll>' : u'\U0001d529',
- '\\<mm>' : u'\U0001d52a',
- '\\<nn>' : u'\U0001d52b',
- '\\<oo>' : u'\U0001d52c',
- '\\<pp>' : u'\U0001d52d',
- '\\<qq>' : u'\U0001d52e',
- '\\<rr>' : u'\U0001d52f',
- '\\<ss>' : u'\U0001d530',
- '\\<tt>' : u'\U0001d531',
- '\\<uu>' : u'\U0001d532',
- '\\<vv>' : u'\U0001d533',
- '\\<ww>' : u'\U0001d534',
- '\\<xx>' : u'\U0001d535',
- '\\<yy>' : u'\U0001d536',
- '\\<zz>' : u'\U0001d537',
- '\\<alpha>' : u'\U000003b1',
- '\\<beta>' : u'\U000003b2',
- '\\<gamma>' : u'\U000003b3',
- '\\<delta>' : u'\U000003b4',
- '\\<epsilon>' : u'\U000003b5',
- '\\<zeta>' : u'\U000003b6',
- '\\<eta>' : u'\U000003b7',
- '\\<theta>' : u'\U000003b8',
- '\\<iota>' : u'\U000003b9',
- '\\<kappa>' : u'\U000003ba',
- '\\<lambda>' : u'\U000003bb',
- '\\<mu>' : u'\U000003bc',
- '\\<nu>' : u'\U000003bd',
- '\\<xi>' : u'\U000003be',
- '\\<pi>' : u'\U000003c0',
- '\\<rho>' : u'\U000003c1',
- '\\<sigma>' : u'\U000003c3',
- '\\<tau>' : u'\U000003c4',
- '\\<upsilon>' : u'\U000003c5',
- '\\<phi>' : u'\U000003c6',
- '\\<chi>' : u'\U000003c7',
- '\\<psi>' : u'\U000003c8',
- '\\<omega>' : u'\U000003c9',
- '\\<Gamma>' : u'\U00000393',
- '\\<Delta>' : u'\U00000394',
- '\\<Theta>' : u'\U00000398',
- '\\<Lambda>' : u'\U0000039b',
- '\\<Xi>' : u'\U0000039e',
- '\\<Pi>' : u'\U000003a0',
- '\\<Sigma>' : u'\U000003a3',
- '\\<Upsilon>' : u'\U000003a5',
- '\\<Phi>' : u'\U000003a6',
- '\\<Psi>' : u'\U000003a8',
- '\\<Omega>' : u'\U000003a9',
- '\\<bool>' : u'\U0001d539',
- '\\<complex>' : u'\U00002102',
- '\\<nat>' : u'\U00002115',
- '\\<rat>' : u'\U0000211a',
- '\\<real>' : u'\U0000211d',
- '\\<int>' : u'\U00002124',
- '\\<leftarrow>' : u'\U00002190',
- '\\<longleftarrow>' : u'\U000027f5',
- '\\<rightarrow>' : u'\U00002192',
- '\\<longrightarrow>' : u'\U000027f6',
- '\\<Leftarrow>' : u'\U000021d0',
- '\\<Longleftarrow>' : u'\U000027f8',
- '\\<Rightarrow>' : u'\U000021d2',
- '\\<Longrightarrow>' : u'\U000027f9',
- '\\<leftrightarrow>' : u'\U00002194',
- '\\<longleftrightarrow>' : u'\U000027f7',
- '\\<Leftrightarrow>' : u'\U000021d4',
- '\\<Longleftrightarrow>' : u'\U000027fa',
- '\\<mapsto>' : u'\U000021a6',
- '\\<longmapsto>' : u'\U000027fc',
- '\\<midarrow>' : u'\U00002500',
- '\\<Midarrow>' : u'\U00002550',
- '\\<hookleftarrow>' : u'\U000021a9',
- '\\<hookrightarrow>' : u'\U000021aa',
- '\\<leftharpoondown>' : u'\U000021bd',
- '\\<rightharpoondown>' : u'\U000021c1',
- '\\<leftharpoonup>' : u'\U000021bc',
- '\\<rightharpoonup>' : u'\U000021c0',
- '\\<rightleftharpoons>' : u'\U000021cc',
- '\\<leadsto>' : u'\U0000219d',
- '\\<downharpoonleft>' : u'\U000021c3',
- '\\<downharpoonright>' : u'\U000021c2',
- '\\<upharpoonleft>' : u'\U000021bf',
- '\\<upharpoonright>' : u'\U000021be',
- '\\<restriction>' : u'\U000021be',
- '\\<Colon>' : u'\U00002237',
- '\\<up>' : u'\U00002191',
- '\\<Up>' : u'\U000021d1',
- '\\<down>' : u'\U00002193',
- '\\<Down>' : u'\U000021d3',
- '\\<updown>' : u'\U00002195',
- '\\<Updown>' : u'\U000021d5',
- '\\<langle>' : u'\U000027e8',
- '\\<rangle>' : u'\U000027e9',
- '\\<lceil>' : u'\U00002308',
- '\\<rceil>' : u'\U00002309',
- '\\<lfloor>' : u'\U0000230a',
- '\\<rfloor>' : u'\U0000230b',
- '\\<lparr>' : u'\U00002987',
- '\\<rparr>' : u'\U00002988',
- '\\<lbrakk>' : u'\U000027e6',
- '\\<rbrakk>' : u'\U000027e7',
- '\\<lbrace>' : u'\U00002983',
- '\\<rbrace>' : u'\U00002984',
- '\\<guillemotleft>' : u'\U000000ab',
- '\\<guillemotright>' : u'\U000000bb',
- '\\<bottom>' : u'\U000022a5',
- '\\<top>' : u'\U000022a4',
- '\\<and>' : u'\U00002227',
- '\\<And>' : u'\U000022c0',
- '\\<or>' : u'\U00002228',
- '\\<Or>' : u'\U000022c1',
- '\\<forall>' : u'\U00002200',
- '\\<exists>' : u'\U00002203',
- '\\<nexists>' : u'\U00002204',
- '\\<not>' : u'\U000000ac',
- '\\<box>' : u'\U000025a1',
- '\\<diamond>' : u'\U000025c7',
- '\\<turnstile>' : u'\U000022a2',
- '\\<Turnstile>' : u'\U000022a8',
- '\\<tturnstile>' : u'\U000022a9',
- '\\<TTurnstile>' : u'\U000022ab',
- '\\<stileturn>' : u'\U000022a3',
- '\\<surd>' : u'\U0000221a',
- '\\<le>' : u'\U00002264',
- '\\<ge>' : u'\U00002265',
- '\\<lless>' : u'\U0000226a',
- '\\<ggreater>' : u'\U0000226b',
- '\\<lesssim>' : u'\U00002272',
- '\\<greatersim>' : u'\U00002273',
- '\\<lessapprox>' : u'\U00002a85',
- '\\<greaterapprox>' : u'\U00002a86',
- '\\<in>' : u'\U00002208',
- '\\<notin>' : u'\U00002209',
- '\\<subset>' : u'\U00002282',
- '\\<supset>' : u'\U00002283',
- '\\<subseteq>' : u'\U00002286',
- '\\<supseteq>' : u'\U00002287',
- '\\<sqsubset>' : u'\U0000228f',
- '\\<sqsupset>' : u'\U00002290',
- '\\<sqsubseteq>' : u'\U00002291',
- '\\<sqsupseteq>' : u'\U00002292',
- '\\<inter>' : u'\U00002229',
- '\\<Inter>' : u'\U000022c2',
- '\\<union>' : u'\U0000222a',
- '\\<Union>' : u'\U000022c3',
- '\\<squnion>' : u'\U00002294',
- '\\<Squnion>' : u'\U00002a06',
- '\\<sqinter>' : u'\U00002293',
- '\\<Sqinter>' : u'\U00002a05',
- '\\<setminus>' : u'\U00002216',
- '\\<propto>' : u'\U0000221d',
- '\\<uplus>' : u'\U0000228e',
- '\\<Uplus>' : u'\U00002a04',
- '\\<noteq>' : u'\U00002260',
- '\\<sim>' : u'\U0000223c',
- '\\<doteq>' : u'\U00002250',
- '\\<simeq>' : u'\U00002243',
- '\\<approx>' : u'\U00002248',
- '\\<asymp>' : u'\U0000224d',
- '\\<cong>' : u'\U00002245',
- '\\<smile>' : u'\U00002323',
- '\\<equiv>' : u'\U00002261',
- '\\<frown>' : u'\U00002322',
- '\\<Join>' : u'\U000022c8',
- '\\<bowtie>' : u'\U00002a1d',
- '\\<prec>' : u'\U0000227a',
- '\\<succ>' : u'\U0000227b',
- '\\<preceq>' : u'\U0000227c',
- '\\<succeq>' : u'\U0000227d',
- '\\<parallel>' : u'\U00002225',
- '\\<bar>' : u'\U000000a6',
- '\\<plusminus>' : u'\U000000b1',
- '\\<minusplus>' : u'\U00002213',
- '\\<times>' : u'\U000000d7',
- '\\<div>' : u'\U000000f7',
- '\\<cdot>' : u'\U000022c5',
- '\\<star>' : u'\U000022c6',
- '\\<bullet>' : u'\U00002219',
- '\\<circ>' : u'\U00002218',
- '\\<dagger>' : u'\U00002020',
- '\\<ddagger>' : u'\U00002021',
- '\\<lhd>' : u'\U000022b2',
- '\\<rhd>' : u'\U000022b3',
- '\\<unlhd>' : u'\U000022b4',
- '\\<unrhd>' : u'\U000022b5',
- '\\<triangleleft>' : u'\U000025c3',
- '\\<triangleright>' : u'\U000025b9',
- '\\<triangle>' : u'\U000025b3',
- '\\<triangleq>' : u'\U0000225c',
- '\\<oplus>' : u'\U00002295',
- '\\<Oplus>' : u'\U00002a01',
- '\\<otimes>' : u'\U00002297',
- '\\<Otimes>' : u'\U00002a02',
- '\\<odot>' : u'\U00002299',
- '\\<Odot>' : u'\U00002a00',
- '\\<ominus>' : u'\U00002296',
- '\\<oslash>' : u'\U00002298',
- '\\<dots>' : u'\U00002026',
- '\\<cdots>' : u'\U000022ef',
- '\\<Sum>' : u'\U00002211',
- '\\<Prod>' : u'\U0000220f',
- '\\<Coprod>' : u'\U00002210',
- '\\<infinity>' : u'\U0000221e',
- '\\<integral>' : u'\U0000222b',
- '\\<ointegral>' : u'\U0000222e',
- '\\<clubsuit>' : u'\U00002663',
- '\\<diamondsuit>' : u'\U00002662',
- '\\<heartsuit>' : u'\U00002661',
- '\\<spadesuit>' : u'\U00002660',
- '\\<aleph>' : u'\U00002135',
- '\\<emptyset>' : u'\U00002205',
- '\\<nabla>' : u'\U00002207',
- '\\<partial>' : u'\U00002202',
- '\\<flat>' : u'\U0000266d',
- '\\<natural>' : u'\U0000266e',
- '\\<sharp>' : u'\U0000266f',
- '\\<angle>' : u'\U00002220',
- '\\<copyright>' : u'\U000000a9',
- '\\<registered>' : u'\U000000ae',
- '\\<hyphen>' : u'\U000000ad',
- '\\<inverse>' : u'\U000000af',
- '\\<onequarter>' : u'\U000000bc',
- '\\<onehalf>' : u'\U000000bd',
- '\\<threequarters>' : u'\U000000be',
- '\\<ordfeminine>' : u'\U000000aa',
- '\\<ordmasculine>' : u'\U000000ba',
- '\\<section>' : u'\U000000a7',
- '\\<paragraph>' : u'\U000000b6',
- '\\<exclamdown>' : u'\U000000a1',
- '\\<questiondown>' : u'\U000000bf',
- '\\<euro>' : u'\U000020ac',
- '\\<pounds>' : u'\U000000a3',
- '\\<yen>' : u'\U000000a5',
- '\\<cent>' : u'\U000000a2',
- '\\<currency>' : u'\U000000a4',
- '\\<degree>' : u'\U000000b0',
- '\\<amalg>' : u'\U00002a3f',
- '\\<mho>' : u'\U00002127',
- '\\<lozenge>' : u'\U000025ca',
- '\\<wp>' : u'\U00002118',
- '\\<wrong>' : u'\U00002240',
- '\\<struct>' : u'\U000022c4',
- '\\<acute>' : u'\U000000b4',
- '\\<index>' : u'\U00000131',
- '\\<dieresis>' : u'\U000000a8',
- '\\<cedilla>' : u'\U000000b8',
- '\\<hungarumlaut>' : u'\U000002dd',
- '\\<some>' : u'\U000003f5',
- '\\<newline>' : u'\U000023ce',
- '\\<open>' : u'\U00002039',
- '\\<close>' : u'\U0000203a',
- '\\<here>' : u'\U00002302',
- '\\<^sub>' : u'\U000021e9',
- '\\<^sup>' : u'\U000021e7',
- '\\<^bold>' : u'\U00002759',
- '\\<^bsub>' : u'\U000021d8',
- '\\<^esub>' : u'\U000021d9',
- '\\<^bsup>' : u'\U000021d7',
- '\\<^esup>' : u'\U000021d6',
+ '\\<zero>' : '\U0001d7ec',
+ '\\<one>' : '\U0001d7ed',
+ '\\<two>' : '\U0001d7ee',
+ '\\<three>' : '\U0001d7ef',
+ '\\<four>' : '\U0001d7f0',
+ '\\<five>' : '\U0001d7f1',
+ '\\<six>' : '\U0001d7f2',
+ '\\<seven>' : '\U0001d7f3',
+ '\\<eight>' : '\U0001d7f4',
+ '\\<nine>' : '\U0001d7f5',
+ '\\<A>' : '\U0001d49c',
+ '\\<B>' : '\U0000212c',
+ '\\<C>' : '\U0001d49e',
+ '\\<D>' : '\U0001d49f',
+ '\\<E>' : '\U00002130',
+ '\\<F>' : '\U00002131',
+ '\\<G>' : '\U0001d4a2',
+ '\\<H>' : '\U0000210b',
+ '\\<I>' : '\U00002110',
+ '\\<J>' : '\U0001d4a5',
+ '\\<K>' : '\U0001d4a6',
+ '\\<L>' : '\U00002112',
+ '\\<M>' : '\U00002133',
+ '\\<N>' : '\U0001d4a9',
+ '\\<O>' : '\U0001d4aa',
+ '\\<P>' : '\U0001d4ab',
+ '\\<Q>' : '\U0001d4ac',
+ '\\<R>' : '\U0000211b',
+ '\\<S>' : '\U0001d4ae',
+ '\\<T>' : '\U0001d4af',
+ '\\<U>' : '\U0001d4b0',
+ '\\<V>' : '\U0001d4b1',
+ '\\<W>' : '\U0001d4b2',
+ '\\<X>' : '\U0001d4b3',
+ '\\<Y>' : '\U0001d4b4',
+ '\\<Z>' : '\U0001d4b5',
+ '\\<a>' : '\U0001d5ba',
+ '\\<b>' : '\U0001d5bb',
+ '\\<c>' : '\U0001d5bc',
+ '\\<d>' : '\U0001d5bd',
+ '\\<e>' : '\U0001d5be',
+ '\\<f>' : '\U0001d5bf',
+ '\\<g>' : '\U0001d5c0',
+ '\\<h>' : '\U0001d5c1',
+ '\\<i>' : '\U0001d5c2',
+ '\\<j>' : '\U0001d5c3',
+ '\\<k>' : '\U0001d5c4',
+ '\\<l>' : '\U0001d5c5',
+ '\\<m>' : '\U0001d5c6',
+ '\\<n>' : '\U0001d5c7',
+ '\\<o>' : '\U0001d5c8',
+ '\\<p>' : '\U0001d5c9',
+ '\\<q>' : '\U0001d5ca',
+ '\\<r>' : '\U0001d5cb',
+ '\\<s>' : '\U0001d5cc',
+ '\\<t>' : '\U0001d5cd',
+ '\\<u>' : '\U0001d5ce',
+ '\\<v>' : '\U0001d5cf',
+ '\\<w>' : '\U0001d5d0',
+ '\\<x>' : '\U0001d5d1',
+ '\\<y>' : '\U0001d5d2',
+ '\\<z>' : '\U0001d5d3',
+ '\\<AA>' : '\U0001d504',
+ '\\<BB>' : '\U0001d505',
+ '\\<CC>' : '\U0000212d',
+ '\\<DD>' : '\U0001d507',
+ '\\<EE>' : '\U0001d508',
+ '\\<FF>' : '\U0001d509',
+ '\\<GG>' : '\U0001d50a',
+ '\\<HH>' : '\U0000210c',
+ '\\<II>' : '\U00002111',
+ '\\<JJ>' : '\U0001d50d',
+ '\\<KK>' : '\U0001d50e',
+ '\\<LL>' : '\U0001d50f',
+ '\\<MM>' : '\U0001d510',
+ '\\<NN>' : '\U0001d511',
+ '\\<OO>' : '\U0001d512',
+ '\\<PP>' : '\U0001d513',
+ '\\<QQ>' : '\U0001d514',
+ '\\<RR>' : '\U0000211c',
+ '\\<SS>' : '\U0001d516',
+ '\\<TT>' : '\U0001d517',
+ '\\<UU>' : '\U0001d518',
+ '\\<VV>' : '\U0001d519',
+ '\\<WW>' : '\U0001d51a',
+ '\\<XX>' : '\U0001d51b',
+ '\\<YY>' : '\U0001d51c',
+ '\\<ZZ>' : '\U00002128',
+ '\\<aa>' : '\U0001d51e',
+ '\\<bb>' : '\U0001d51f',
+ '\\<cc>' : '\U0001d520',
+ '\\<dd>' : '\U0001d521',
+ '\\<ee>' : '\U0001d522',
+ '\\<ff>' : '\U0001d523',
+ '\\<gg>' : '\U0001d524',
+ '\\<hh>' : '\U0001d525',
+ '\\<ii>' : '\U0001d526',
+ '\\<jj>' : '\U0001d527',
+ '\\<kk>' : '\U0001d528',
+ '\\<ll>' : '\U0001d529',
+ '\\<mm>' : '\U0001d52a',
+ '\\<nn>' : '\U0001d52b',
+ '\\<oo>' : '\U0001d52c',
+ '\\<pp>' : '\U0001d52d',
+ '\\<qq>' : '\U0001d52e',
+ '\\<rr>' : '\U0001d52f',
+ '\\<ss>' : '\U0001d530',
+ '\\<tt>' : '\U0001d531',
+ '\\<uu>' : '\U0001d532',
+ '\\<vv>' : '\U0001d533',
+ '\\<ww>' : '\U0001d534',
+ '\\<xx>' : '\U0001d535',
+ '\\<yy>' : '\U0001d536',
+ '\\<zz>' : '\U0001d537',
+ '\\<alpha>' : '\U000003b1',
+ '\\<beta>' : '\U000003b2',
+ '\\<gamma>' : '\U000003b3',
+ '\\<delta>' : '\U000003b4',
+ '\\<epsilon>' : '\U000003b5',
+ '\\<zeta>' : '\U000003b6',
+ '\\<eta>' : '\U000003b7',
+ '\\<theta>' : '\U000003b8',
+ '\\<iota>' : '\U000003b9',
+ '\\<kappa>' : '\U000003ba',
+ '\\<lambda>' : '\U000003bb',
+ '\\<mu>' : '\U000003bc',
+ '\\<nu>' : '\U000003bd',
+ '\\<xi>' : '\U000003be',
+ '\\<pi>' : '\U000003c0',
+ '\\<rho>' : '\U000003c1',
+ '\\<sigma>' : '\U000003c3',
+ '\\<tau>' : '\U000003c4',
+ '\\<upsilon>' : '\U000003c5',
+ '\\<phi>' : '\U000003c6',
+ '\\<chi>' : '\U000003c7',
+ '\\<psi>' : '\U000003c8',
+ '\\<omega>' : '\U000003c9',
+ '\\<Gamma>' : '\U00000393',
+ '\\<Delta>' : '\U00000394',
+ '\\<Theta>' : '\U00000398',
+ '\\<Lambda>' : '\U0000039b',
+ '\\<Xi>' : '\U0000039e',
+ '\\<Pi>' : '\U000003a0',
+ '\\<Sigma>' : '\U000003a3',
+ '\\<Upsilon>' : '\U000003a5',
+ '\\<Phi>' : '\U000003a6',
+ '\\<Psi>' : '\U000003a8',
+ '\\<Omega>' : '\U000003a9',
+ '\\<bool>' : '\U0001d539',
+ '\\<complex>' : '\U00002102',
+ '\\<nat>' : '\U00002115',
+ '\\<rat>' : '\U0000211a',
+ '\\<real>' : '\U0000211d',
+ '\\<int>' : '\U00002124',
+ '\\<leftarrow>' : '\U00002190',
+ '\\<longleftarrow>' : '\U000027f5',
+ '\\<rightarrow>' : '\U00002192',
+ '\\<longrightarrow>' : '\U000027f6',
+ '\\<Leftarrow>' : '\U000021d0',
+ '\\<Longleftarrow>' : '\U000027f8',
+ '\\<Rightarrow>' : '\U000021d2',
+ '\\<Longrightarrow>' : '\U000027f9',
+ '\\<leftrightarrow>' : '\U00002194',
+ '\\<longleftrightarrow>' : '\U000027f7',
+ '\\<Leftrightarrow>' : '\U000021d4',
+ '\\<Longleftrightarrow>' : '\U000027fa',
+ '\\<mapsto>' : '\U000021a6',
+ '\\<longmapsto>' : '\U000027fc',
+ '\\<midarrow>' : '\U00002500',
+ '\\<Midarrow>' : '\U00002550',
+ '\\<hookleftarrow>' : '\U000021a9',
+ '\\<hookrightarrow>' : '\U000021aa',
+ '\\<leftharpoondown>' : '\U000021bd',
+ '\\<rightharpoondown>' : '\U000021c1',
+ '\\<leftharpoonup>' : '\U000021bc',
+ '\\<rightharpoonup>' : '\U000021c0',
+ '\\<rightleftharpoons>' : '\U000021cc',
+ '\\<leadsto>' : '\U0000219d',
+ '\\<downharpoonleft>' : '\U000021c3',
+ '\\<downharpoonright>' : '\U000021c2',
+ '\\<upharpoonleft>' : '\U000021bf',
+ '\\<upharpoonright>' : '\U000021be',
+ '\\<restriction>' : '\U000021be',
+ '\\<Colon>' : '\U00002237',
+ '\\<up>' : '\U00002191',
+ '\\<Up>' : '\U000021d1',
+ '\\<down>' : '\U00002193',
+ '\\<Down>' : '\U000021d3',
+ '\\<updown>' : '\U00002195',
+ '\\<Updown>' : '\U000021d5',
+ '\\<langle>' : '\U000027e8',
+ '\\<rangle>' : '\U000027e9',
+ '\\<lceil>' : '\U00002308',
+ '\\<rceil>' : '\U00002309',
+ '\\<lfloor>' : '\U0000230a',
+ '\\<rfloor>' : '\U0000230b',
+ '\\<lparr>' : '\U00002987',
+ '\\<rparr>' : '\U00002988',
+ '\\<lbrakk>' : '\U000027e6',
+ '\\<rbrakk>' : '\U000027e7',
+ '\\<lbrace>' : '\U00002983',
+ '\\<rbrace>' : '\U00002984',
+ '\\<guillemotleft>' : '\U000000ab',
+ '\\<guillemotright>' : '\U000000bb',
+ '\\<bottom>' : '\U000022a5',
+ '\\<top>' : '\U000022a4',
+ '\\<and>' : '\U00002227',
+ '\\<And>' : '\U000022c0',
+ '\\<or>' : '\U00002228',
+ '\\<Or>' : '\U000022c1',
+ '\\<forall>' : '\U00002200',
+ '\\<exists>' : '\U00002203',
+ '\\<nexists>' : '\U00002204',
+ '\\<not>' : '\U000000ac',
+ '\\<box>' : '\U000025a1',
+ '\\<diamond>' : '\U000025c7',
+ '\\<turnstile>' : '\U000022a2',
+ '\\<Turnstile>' : '\U000022a8',
+ '\\<tturnstile>' : '\U000022a9',
+ '\\<TTurnstile>' : '\U000022ab',
+ '\\<stileturn>' : '\U000022a3',
+ '\\<surd>' : '\U0000221a',
+ '\\<le>' : '\U00002264',
+ '\\<ge>' : '\U00002265',
+ '\\<lless>' : '\U0000226a',
+ '\\<ggreater>' : '\U0000226b',
+ '\\<lesssim>' : '\U00002272',
+ '\\<greatersim>' : '\U00002273',
+ '\\<lessapprox>' : '\U00002a85',
+ '\\<greaterapprox>' : '\U00002a86',
+ '\\<in>' : '\U00002208',
+ '\\<notin>' : '\U00002209',
+ '\\<subset>' : '\U00002282',
+ '\\<supset>' : '\U00002283',
+ '\\<subseteq>' : '\U00002286',
+ '\\<supseteq>' : '\U00002287',
+ '\\<sqsubset>' : '\U0000228f',
+ '\\<sqsupset>' : '\U00002290',
+ '\\<sqsubseteq>' : '\U00002291',
+ '\\<sqsupseteq>' : '\U00002292',
+ '\\<inter>' : '\U00002229',
+ '\\<Inter>' : '\U000022c2',
+ '\\<union>' : '\U0000222a',
+ '\\<Union>' : '\U000022c3',
+ '\\<squnion>' : '\U00002294',
+ '\\<Squnion>' : '\U00002a06',
+ '\\<sqinter>' : '\U00002293',
+ '\\<Sqinter>' : '\U00002a05',
+ '\\<setminus>' : '\U00002216',
+ '\\<propto>' : '\U0000221d',
+ '\\<uplus>' : '\U0000228e',
+ '\\<Uplus>' : '\U00002a04',
+ '\\<noteq>' : '\U00002260',
+ '\\<sim>' : '\U0000223c',
+ '\\<doteq>' : '\U00002250',
+ '\\<simeq>' : '\U00002243',
+ '\\<approx>' : '\U00002248',
+ '\\<asymp>' : '\U0000224d',
+ '\\<cong>' : '\U00002245',
+ '\\<smile>' : '\U00002323',
+ '\\<equiv>' : '\U00002261',
+ '\\<frown>' : '\U00002322',
+ '\\<Join>' : '\U000022c8',
+ '\\<bowtie>' : '\U00002a1d',
+ '\\<prec>' : '\U0000227a',
+ '\\<succ>' : '\U0000227b',
+ '\\<preceq>' : '\U0000227c',
+ '\\<succeq>' : '\U0000227d',
+ '\\<parallel>' : '\U00002225',
+ '\\<bar>' : '\U000000a6',
+ '\\<plusminus>' : '\U000000b1',
+ '\\<minusplus>' : '\U00002213',
+ '\\<times>' : '\U000000d7',
+ '\\<div>' : '\U000000f7',
+ '\\<cdot>' : '\U000022c5',
+ '\\<star>' : '\U000022c6',
+ '\\<bullet>' : '\U00002219',
+ '\\<circ>' : '\U00002218',
+ '\\<dagger>' : '\U00002020',
+ '\\<ddagger>' : '\U00002021',
+ '\\<lhd>' : '\U000022b2',
+ '\\<rhd>' : '\U000022b3',
+ '\\<unlhd>' : '\U000022b4',
+ '\\<unrhd>' : '\U000022b5',
+ '\\<triangleleft>' : '\U000025c3',
+ '\\<triangleright>' : '\U000025b9',
+ '\\<triangle>' : '\U000025b3',
+ '\\<triangleq>' : '\U0000225c',
+ '\\<oplus>' : '\U00002295',
+ '\\<Oplus>' : '\U00002a01',
+ '\\<otimes>' : '\U00002297',
+ '\\<Otimes>' : '\U00002a02',
+ '\\<odot>' : '\U00002299',
+ '\\<Odot>' : '\U00002a00',
+ '\\<ominus>' : '\U00002296',
+ '\\<oslash>' : '\U00002298',
+ '\\<dots>' : '\U00002026',
+ '\\<cdots>' : '\U000022ef',
+ '\\<Sum>' : '\U00002211',
+ '\\<Prod>' : '\U0000220f',
+ '\\<Coprod>' : '\U00002210',
+ '\\<infinity>' : '\U0000221e',
+ '\\<integral>' : '\U0000222b',
+ '\\<ointegral>' : '\U0000222e',
+ '\\<clubsuit>' : '\U00002663',
+ '\\<diamondsuit>' : '\U00002662',
+ '\\<heartsuit>' : '\U00002661',
+ '\\<spadesuit>' : '\U00002660',
+ '\\<aleph>' : '\U00002135',
+ '\\<emptyset>' : '\U00002205',
+ '\\<nabla>' : '\U00002207',
+ '\\<partial>' : '\U00002202',
+ '\\<flat>' : '\U0000266d',
+ '\\<natural>' : '\U0000266e',
+ '\\<sharp>' : '\U0000266f',
+ '\\<angle>' : '\U00002220',
+ '\\<copyright>' : '\U000000a9',
+ '\\<registered>' : '\U000000ae',
+ '\\<hyphen>' : '\U000000ad',
+ '\\<inverse>' : '\U000000af',
+ '\\<onequarter>' : '\U000000bc',
+ '\\<onehalf>' : '\U000000bd',
+ '\\<threequarters>' : '\U000000be',
+ '\\<ordfeminine>' : '\U000000aa',
+ '\\<ordmasculine>' : '\U000000ba',
+ '\\<section>' : '\U000000a7',
+ '\\<paragraph>' : '\U000000b6',
+ '\\<exclamdown>' : '\U000000a1',
+ '\\<questiondown>' : '\U000000bf',
+ '\\<euro>' : '\U000020ac',
+ '\\<pounds>' : '\U000000a3',
+ '\\<yen>' : '\U000000a5',
+ '\\<cent>' : '\U000000a2',
+ '\\<currency>' : '\U000000a4',
+ '\\<degree>' : '\U000000b0',
+ '\\<amalg>' : '\U00002a3f',
+ '\\<mho>' : '\U00002127',
+ '\\<lozenge>' : '\U000025ca',
+ '\\<wp>' : '\U00002118',
+ '\\<wrong>' : '\U00002240',
+ '\\<struct>' : '\U000022c4',
+ '\\<acute>' : '\U000000b4',
+ '\\<index>' : '\U00000131',
+ '\\<dieresis>' : '\U000000a8',
+ '\\<cedilla>' : '\U000000b8',
+ '\\<hungarumlaut>' : '\U000002dd',
+ '\\<some>' : '\U000003f5',
+ '\\<newline>' : '\U000023ce',
+ '\\<open>' : '\U00002039',
+ '\\<close>' : '\U0000203a',
+ '\\<here>' : '\U00002302',
+ '\\<^sub>' : '\U000021e9',
+ '\\<^sup>' : '\U000021e7',
+ '\\<^bold>' : '\U00002759',
+ '\\<^bsub>' : '\U000021d8',
+ '\\<^esub>' : '\U000021d9',
+ '\\<^bsup>' : '\U000021d7',
+ '\\<^esup>' : '\U000021d6',
}
lang_map = {'isabelle' : isabelle_symbols, 'latex' : latex_symbols}
@@ -816,9 +816,9 @@ class VisibleWhitespaceFilter(Filter):
def __init__(self, **options):
Filter.__init__(self, **options)
- for name, default in [('spaces', u'·'),
- ('tabs', u'»'),
- ('newlines', u'¶')]:
+ for name, default in [('spaces', '·'),
+ ('tabs', '»'),
+ ('newlines', '¶')]:
opt = options.get(name, False)
if isinstance(opt, str) and len(opt) == 1:
setattr(self, name, opt)
@@ -833,9 +833,9 @@ class VisibleWhitespaceFilter(Filter):
def filter(self, lexer, stream):
if self.wstt:
- spaces = self.spaces or u' '
- tabs = self.tabs or u'\t'
- newlines = self.newlines or u'\n'
+ spaces = self.spaces or ' '
+ tabs = self.tabs or '\t'
+ newlines = self.newlines or '\n'
regex = re.compile(r'\s')
def replacefunc(wschar):
@@ -885,7 +885,7 @@ class GobbleFilter(Filter):
if left < len(value):
return value[left:], 0
else:
- return u'', left - len(value)
+ return '', left - len(value)
def filter(self, lexer, stream):
n = self.n
@@ -896,7 +896,7 @@ class GobbleFilter(Filter):
(parts[0], left) = self.gobble(parts[0], left)
for i in range(1, len(parts)):
(parts[i], left) = self.gobble(parts[i], n)
- value = u'\n'.join(parts)
+ value = '\n'.join(parts)
if value != '':
yield ttype, value
diff --git a/pygments/formatters/html.py b/pygments/formatters/html.py
index 421710f7..29cc9fb8 100644
--- a/pygments/formatters/html.py
+++ b/pygments/formatters/html.py
@@ -27,11 +27,11 @@ __all__ = ['HtmlFormatter']
_escape_html_table = {
- ord('&'): u'&amp;',
- ord('<'): u'&lt;',
- ord('>'): u'&gt;',
- ord('"'): u'&quot;',
- ord("'"): u'&#39;',
+ ord('&'): '&amp;',
+ ord('<'): '&lt;',
+ ord('>'): '&gt;',
+ ord('"'): '&quot;',
+ ord("'"): '&#39;',
}
@@ -433,7 +433,7 @@ class HtmlFormatter(Formatter):
self.linenostep = abs(get_int_opt(options, 'linenostep', 1))
self.linenospecial = abs(get_int_opt(options, 'linenospecial', 0))
self.nobackground = get_bool_opt(options, 'nobackground', False)
- self.lineseparator = options.get('lineseparator', u'\n')
+ self.lineseparator = options.get('lineseparator', '\n')
self.lineanchors = options.get('lineanchors', '')
self.linespans = options.get('linespans', '')
self.anchorlinenos = get_bool_opt(options, 'anchorlinenos', False)
diff --git a/pygments/formatters/latex.py b/pygments/formatters/latex.py
index 9e23740d..a0e9421b 100644
--- a/pygments/formatters/latex.py
+++ b/pygments/formatters/latex.py
@@ -265,7 +265,7 @@ class LatexFormatter(Formatter):
self.right = self.escapeinside[1]
else:
self.escapeinside = ''
- self.envname = options.get('envname', u'Verbatim')
+ self.envname = options.get('envname', 'Verbatim')
self._create_stylesheet()
@@ -336,17 +336,17 @@ class LatexFormatter(Formatter):
realoutfile = outfile
outfile = StringIO()
- outfile.write(u'\\begin{' + self.envname + u'}[commandchars=\\\\\\{\\}')
+ outfile.write('\\begin{' + self.envname + '}[commandchars=\\\\\\{\\}')
if self.linenos:
start, step = self.linenostart, self.linenostep
- outfile.write(u',numbers=left' +
- (start and u',firstnumber=%d' % start or u'') +
- (step and u',stepnumber=%d' % step or u''))
+ outfile.write(',numbers=left' +
+ (start and ',firstnumber=%d' % start or '') +
+ (step and ',stepnumber=%d' % step or ''))
if self.mathescape or self.texcomments or self.escapeinside:
- outfile.write(u',codes={\\catcode`\\$=3\\catcode`\\^=7\\catcode`\\_=8}')
+ outfile.write(',codes={\\catcode`\\$=3\\catcode`\\^=7\\catcode`\\_=8}')
if self.verboptions:
- outfile.write(u',' + self.verboptions)
- outfile.write(u']\n')
+ outfile.write(',' + self.verboptions)
+ outfile.write(']\n')
for ttype, value in tokensource:
if ttype in Token.Comment:
@@ -409,7 +409,7 @@ class LatexFormatter(Formatter):
else:
outfile.write(value)
- outfile.write(u'\\end{' + self.envname + u'}\n')
+ outfile.write('\\end{' + self.envname + '}\n')
if self.full:
encoding = self.encoding or 'utf8'
diff --git a/pygments/formatters/other.py b/pygments/formatters/other.py
index 9f8bab4b..a86e81e0 100644
--- a/pygments/formatters/other.py
+++ b/pygments/formatters/other.py
@@ -119,12 +119,12 @@ class RawTokenFormatter(Formatter):
flush()
-TESTCASE_BEFORE = u'''\
+TESTCASE_BEFORE = '''\
def testNeedsName(lexer):
fragment = %r
tokens = [
'''
-TESTCASE_AFTER = u'''\
+TESTCASE_AFTER = '''\
]
assert list(lexer.get_tokens(fragment)) == tokens
'''
@@ -152,8 +152,8 @@ class TestcaseFormatter(Formatter):
rawbuf.append(value)
outbuf.append('%s(%s, %r),\n' % (indentation, ttype, value))
- before = TESTCASE_BEFORE % (u''.join(rawbuf),)
- during = u''.join(outbuf)
+ before = TESTCASE_BEFORE % (''.join(rawbuf),)
+ during = ''.join(outbuf)
after = TESTCASE_AFTER
if self.encoding is None:
outfile.write(before + during + after)
diff --git a/pygments/formatters/rtf.py b/pygments/formatters/rtf.py
index 7f51bacd..34393d47 100644
--- a/pygments/formatters/rtf.py
+++ b/pygments/formatters/rtf.py
@@ -10,7 +10,7 @@
"""
from pygments.formatter import Formatter
-from pygments.util import get_int_opt, _surrogatepair
+from pygments.util import get_int_opt, surrogatepair
__all__ = ['RtfFormatter']
@@ -65,14 +65,14 @@ class RtfFormatter(Formatter):
self.fontsize = get_int_opt(options, 'fontsize', 0)
def _escape(self, text):
- return text.replace(u'\\', u'\\\\') \
- .replace(u'{', u'\\{') \
- .replace(u'}', u'\\}')
+ return text.replace('\\', '\\\\') \
+ .replace('{', '\\{') \
+ .replace('}', '\\}')
def _escape_text(self, text):
# empty strings, should give a small performance improvement
if not text:
- return u''
+ return ''
# escape text
text = self._escape(text)
@@ -85,21 +85,21 @@ class RtfFormatter(Formatter):
buf.append(str(c))
elif (2**7) <= cn < (2**16):
# single unicode escape sequence
- buf.append(u'{\\u%d}' % cn)
+ buf.append('{\\u%d}' % cn)
elif (2**16) <= cn:
# RTF limits unicode to 16 bits.
# Force surrogate pairs
- buf.append(u'{\\u%d}{\\u%d}' % _surrogatepair(cn))
+ buf.append('{\\u%d}{\\u%d}' % surrogatepair(cn))
- return u''.join(buf).replace(u'\n', u'\\par\n')
+ return ''.join(buf).replace('\n', '\\par\n')
def format_unencoded(self, tokensource, outfile):
# rtf 1.8 header
- outfile.write(u'{\\rtf1\\ansi\\uc0\\deff0'
- u'{\\fonttbl{\\f0\\fmodern\\fprq1\\fcharset0%s;}}'
- u'{\\colortbl;' % (self.fontface and
- u' ' + self._escape(self.fontface) or
- u''))
+ outfile.write('{\\rtf1\\ansi\\uc0\\deff0'
+ '{\\fonttbl{\\f0\\fmodern\\fprq1\\fcharset0%s;}}'
+ '{\\colortbl;' % (self.fontface and
+ ' ' + self._escape(self.fontface) or
+ ''))
# convert colors and save them in a mapping to access them later.
color_mapping = {}
@@ -108,15 +108,15 @@ class RtfFormatter(Formatter):
for color in style['color'], style['bgcolor'], style['border']:
if color and color not in color_mapping:
color_mapping[color] = offset
- outfile.write(u'\\red%d\\green%d\\blue%d;' % (
+ outfile.write('\\red%d\\green%d\\blue%d;' % (
int(color[0:2], 16),
int(color[2:4], 16),
int(color[4:6], 16)
))
offset += 1
- outfile.write(u'}\\f0 ')
+ outfile.write('}\\f0 ')
if self.fontsize:
- outfile.write(u'\\fs%d' % (self.fontsize))
+ outfile.write('\\fs%d' % self.fontsize)
# highlight stream
for ttype, value in tokensource:
@@ -125,23 +125,23 @@ class RtfFormatter(Formatter):
style = self.style.style_for_token(ttype)
buf = []
if style['bgcolor']:
- buf.append(u'\\cb%d' % color_mapping[style['bgcolor']])
+ buf.append('\\cb%d' % color_mapping[style['bgcolor']])
if style['color']:
- buf.append(u'\\cf%d' % color_mapping[style['color']])
+ buf.append('\\cf%d' % color_mapping[style['color']])
if style['bold']:
- buf.append(u'\\b')
+ buf.append('\\b')
if style['italic']:
- buf.append(u'\\i')
+ buf.append('\\i')
if style['underline']:
- buf.append(u'\\ul')
+ buf.append('\\ul')
if style['border']:
- buf.append(u'\\chbrdr\\chcfpat%d' %
+ buf.append('\\chbrdr\\chcfpat%d' %
color_mapping[style['border']])
- start = u''.join(buf)
+ start = ''.join(buf)
if start:
- outfile.write(u'{%s ' % start)
+ outfile.write('{%s ' % start)
outfile.write(self._escape_text(value))
if start:
- outfile.write(u'}')
+ outfile.write('}')
- outfile.write(u'}')
+ outfile.write('}')
diff --git a/pygments/lexer.py b/pygments/lexer.py
index 3f0df88e..804aafe0 100644
--- a/pygments/lexer.py
+++ b/pygments/lexer.py
@@ -166,11 +166,11 @@ class Lexer(metaclass=LexerMeta):
text = decoded
else:
text = text.decode(self.encoding)
- if text.startswith(u'\ufeff'):
- text = text[len(u'\ufeff'):]
+ if text.startswith('\ufeff'):
+ text = text[len('\ufeff'):]
else:
- if text.startswith(u'\ufeff'):
- text = text[len(u'\ufeff'):]
+ if text.startswith('\ufeff'):
+ text = text[len('\ufeff'):]
# text now *is* a unicode string
text = text.replace('\r\n', '\n')
@@ -663,7 +663,7 @@ class RegexLexer(Lexer, metaclass=RegexLexerMeta):
# at EOL, reset state to "root"
statestack = ['root']
statetokens = tokendefs['root']
- yield pos, Text, u'\n'
+ yield pos, Text, '\n'
pos += 1
continue
yield pos, Error, text[pos]
@@ -751,7 +751,7 @@ class ExtendedRegexLexer(RegexLexer):
# at EOL, reset state to "root"
ctx.stack = ['root']
statetokens = tokendefs['root']
- yield ctx.pos, Text, u'\n'
+ yield ctx.pos, Text, '\n'
ctx.pos += 1
continue
yield ctx.pos, Error, text[ctx.pos]
diff --git a/pygments/lexers/apl.py b/pygments/lexers/apl.py
index 68c4ffe1..4e2de92c 100644
--- a/pygments/lexers/apl.py
+++ b/pygments/lexers/apl.py
@@ -35,7 +35,7 @@ class APLLexer(RegexLexer):
# Comment
# =======
# '⍝' is traditional; '#' is supported by GNU APL and NGN (but not Dyalog)
- (u'[⍝#].*$', Comment.Single),
+ (r'[⍝#].*$', Comment.Single),
#
# Strings
# =======
@@ -46,7 +46,7 @@ class APLLexer(RegexLexer):
# ===========
# This token type is used for diamond and parenthesis
# but not for bracket and ; (see below)
- (u'[⋄◇()]', Punctuation),
+ (r'[⋄◇()]', Punctuation),
#
# Array indexing
# ==============
@@ -57,45 +57,45 @@ class APLLexer(RegexLexer):
# Distinguished names
# ===================
# following IBM APL2 standard
- (u'⎕[A-Za-zΔ∆⍙][A-Za-zΔ∆⍙_¯0-9]*', Name.Function),
+ (r'⎕[A-Za-zΔ∆⍙][A-Za-zΔ∆⍙_¯0-9]*', Name.Function),
#
# Labels
# ======
# following IBM APL2 standard
- # (u'[A-Za-zΔ∆⍙][A-Za-zΔ∆⍙_¯0-9]*:', Name.Label),
+ # (r'[A-Za-zΔ∆⍙][A-Za-zΔ∆⍙_¯0-9]*:', Name.Label),
#
# Variables
# =========
# following IBM APL2 standard
- (u'[A-Za-zΔ∆⍙][A-Za-zΔ∆⍙_¯0-9]*', Name.Variable),
+ (r'[A-Za-zΔ∆⍙][A-Za-zΔ∆⍙_¯0-9]*', Name.Variable),
#
# Numbers
# =======
- (u'¯?(0[Xx][0-9A-Fa-f]+|[0-9]*\\.?[0-9]+([Ee][+¯]?[0-9]+)?|¯|∞)'
- u'([Jj]¯?(0[Xx][0-9A-Fa-f]+|[0-9]*\\.?[0-9]+([Ee][+¯]?[0-9]+)?|¯|∞))?',
+ (r'¯?(0[Xx][0-9A-Fa-f]+|[0-9]*\.?[0-9]+([Ee][+¯]?[0-9]+)?|¯|∞)'
+ r'([Jj]¯?(0[Xx][0-9A-Fa-f]+|[0-9]*\.?[0-9]+([Ee][+¯]?[0-9]+)?|¯|∞))?',
Number),
#
# Operators
# ==========
- (u'[\\.\\\\\\/⌿⍀¨⍣⍨⍠⍤∘⌸&⌶@⌺⍥⍛⍢]', Name.Attribute), # closest token type
- (u'[+\\-×÷⌈⌊∣|⍳?*⍟○!⌹<≤=>≥≠≡≢∊⍷∪∩~∨∧⍱⍲⍴,⍪⌽⊖⍉↑↓⊂⊃⌷⍋⍒⊤⊥⍕⍎⊣⊢⍁⍂≈⌸⍯↗⊆⊇⍸√⌾…⍮]',
+ (r'[\.\\\/⌿⍀¨⍣⍨⍠⍤∘⌸&⌶@⌺⍥⍛⍢]', Name.Attribute), # closest token type
+ (r'[+\-×÷⌈⌊∣|⍳?*⍟○!⌹<≤=>≥≠≡≢∊⍷∪∩~∨∧⍱⍲⍴,⍪⌽⊖⍉↑↓⊂⊃⌷⍋⍒⊤⊥⍕⍎⊣⊢⍁⍂≈⌸⍯↗⊆⊇⍸√⌾…⍮]',
Operator),
#
# Constant
# ========
- (u'⍬', Name.Constant),
+ (r'⍬', Name.Constant),
#
# Quad symbol
# ===========
- (u'[⎕⍞]', Name.Variable.Global),
+ (r'[⎕⍞]', Name.Variable.Global),
#
# Arrows left/right
# =================
- (u'[←→]', Keyword.Declaration),
+ (r'[←→]', Keyword.Declaration),
#
# D-Fn
# ====
- (u'[⍺⍵⍶⍹∇:]', Name.Builtin.Pseudo),
+ (r'[⍺⍵⍶⍹∇:]', Name.Builtin.Pseudo),
(r'[{}]', Keyword.Type),
],
}
diff --git a/pygments/lexers/archetype.py b/pygments/lexers/archetype.py
index bca9cbbb..713970ec 100644
--- a/pygments/lexers/archetype.py
+++ b/pygments/lexers/archetype.py
@@ -212,9 +212,9 @@ class CadlLexer(AtomsLexer):
(r'(not)\W', Operator),
(r'(matches|is_in)\W', Operator),
# is_in / not is_in char
- (u'(\u2208|\u2209)', Operator),
+ ('(\u2208|\u2209)', Operator),
# there_exists / not there_exists / for_all / and / or
- (u'(\u2203|\u2204|\u2200|\u2227|\u2228|\u22BB|\223C)',
+ ('(\u2203|\u2204|\u2200|\u2227|\u2228|\u22BB|\223C)',
Operator),
# regex in slot or as string constraint
(r'(\{)(\s*/[^}]+/\s*)(\})',
diff --git a/pygments/lexers/erlang.py b/pygments/lexers/erlang.py
index fdc83451..829a1c23 100644
--- a/pygments/lexers/erlang.py
+++ b/pygments/lexers/erlang.py
@@ -504,7 +504,7 @@ class ElixirConsoleLexer(Lexer):
insertions = []
for match in line_re.finditer(text):
line = match.group()
- if line.startswith(u'** '):
+ if line.startswith('** '):
in_error = True
insertions.append((len(curcode),
[(0, Generic.Error, line[:-1])]))
diff --git a/pygments/lexers/esoteric.py b/pygments/lexers/esoteric.py
index 6ac3dd9d..e1e02a42 100644
--- a/pygments/lexers/esoteric.py
+++ b/pygments/lexers/esoteric.py
@@ -255,23 +255,23 @@ class AheuiLexer(RegexLexer):
tokens = {
'root': [
- (u'['
- u'나-낳냐-냫너-넣녀-녛노-놓뇨-눟뉴-닇'
- u'다-닿댜-댷더-덯뎌-뎧도-돟됴-둫듀-딓'
- u'따-땋땨-떃떠-떻뗘-뗳또-똫뚀-뚷뜌-띟'
- u'라-랗랴-럏러-렇려-렿로-롷료-뤃류-릫'
- u'마-맣먀-먛머-멓며-몋모-뫃묘-뭏뮤-믷'
- u'바-밯뱌-뱧버-벟벼-볗보-봏뵤-붛뷰-빃'
- u'빠-빻뺘-뺳뻐-뻫뼈-뼣뽀-뽛뾰-뿧쀼-삏'
- u'사-샇샤-샿서-섷셔-셯소-솧쇼-숳슈-싛'
- u'싸-쌓쌰-썋써-쎃쎠-쎻쏘-쏳쑈-쑿쓔-씧'
- u'자-잫쟈-쟣저-젛져-졓조-좋죠-줗쥬-즿'
- u'차-챃챠-챻처-첳쳐-쳫초-촣쵸-춯츄-칗'
- u'카-캏캬-컇커-컿켜-켷코-콯쿄-쿻큐-킣'
- u'타-탛탸-턓터-텋텨-톃토-톻툐-퉇튜-틯'
- u'파-팧퍄-퍟퍼-펗펴-폏포-퐇표-풓퓨-픻'
- u'하-핳햐-햫허-헣혀-혛호-홓효-훟휴-힇'
- u']', Operator),
+ ('['
+ '나-낳냐-냫너-넣녀-녛노-놓뇨-눟뉴-닇'
+ '다-닿댜-댷더-덯뎌-뎧도-돟됴-둫듀-딓'
+ '따-땋땨-떃떠-떻뗘-뗳또-똫뚀-뚷뜌-띟'
+ '라-랗랴-럏러-렇려-렿로-롷료-뤃류-릫'
+ '마-맣먀-먛머-멓며-몋모-뫃묘-뭏뮤-믷'
+ '바-밯뱌-뱧버-벟벼-볗보-봏뵤-붛뷰-빃'
+ '빠-빻뺘-뺳뻐-뻫뼈-뼣뽀-뽛뾰-뿧쀼-삏'
+ '사-샇샤-샿서-섷셔-셯소-솧쇼-숳슈-싛'
+ '싸-쌓쌰-썋써-쎃쎠-쎻쏘-쏳쑈-쑿쓔-씧'
+ '자-잫쟈-쟣저-젛져-졓조-좋죠-줗쥬-즿'
+ '차-챃챠-챻처-첳쳐-쳫초-촣쵸-춯츄-칗'
+ '카-캏캬-컇커-컿켜-켷코-콯쿄-쿻큐-킣'
+ '타-탛탸-턓터-텋텨-톃토-톻툐-퉇튜-틯'
+ '파-팧퍄-퍟퍼-펗펴-폏포-퐇표-풓퓨-픻'
+ '하-핳햐-햫허-헣혀-혛호-홓효-훟휴-힇'
+ ']', Operator),
('.', Comment),
],
}
diff --git a/pygments/lexers/ezhil.py b/pygments/lexers/ezhil.py
index 37d793dd..ea5bba3c 100644
--- a/pygments/lexers/ezhil.py
+++ b/pygments/lexers/ezhil.py
@@ -30,20 +30,20 @@ class EzhilLexer(RegexLexer):
flags = re.MULTILINE | re.UNICODE
# Refer to tamil.utf8.tamil_letters from open-tamil for a stricter version of this.
# This much simpler version is close enough, and includes combining marks.
- _TALETTERS = u'[a-zA-Z_]|[\u0b80-\u0bff]'
+ _TALETTERS = '[a-zA-Z_]|[\u0b80-\u0bff]'
tokens = {
'root': [
include('keywords'),
(r'#.*\n', Comment.Single),
(r'[@+/*,^\-%]|[!<>=]=?|&&?|\|\|?', Operator),
- (u'இல்', Operator.Word),
- (words((u'assert', u'max', u'min',
- u'நீளம்', u'சரம்_இடமாற்று', u'சரம்_கண்டுபிடி',
- u'பட்டியல்', u'பின்இணை', u'வரிசைப்படுத்து',
- u'எடு', u'தலைகீழ்', u'நீட்டிக்க', u'நுழைக்க', u'வை',
- u'கோப்பை_திற', u'கோப்பை_எழுது', u'கோப்பை_மூடு',
- u'pi', u'sin', u'cos', u'tan', u'sqrt', u'hypot', u'pow',
- u'exp', u'log', u'log10', u'exit',
+ ('இல்', Operator.Word),
+ (words(('assert', 'max', 'min',
+ 'நீளம்', 'சரம்_இடமாற்று', 'சரம்_கண்டுபிடி',
+ 'பட்டியல்', 'பின்இணை', 'வரிசைப்படுத்து',
+ 'எடு', 'தலைகீழ்', 'நீட்டிக்க', 'நுழைக்க', 'வை',
+ 'கோப்பை_திற', 'கோப்பை_எழுது', 'கோப்பை_மூடு',
+ 'pi', 'sin', 'cos', 'tan', 'sqrt', 'hypot', 'pow',
+ 'exp', 'log', 'log10', 'exit',
), suffix=r'\b'), Name.Builtin),
(r'(True|False)\b', Keyword.Constant),
(r'[^\S\n]+', Text),
@@ -52,10 +52,10 @@ class EzhilLexer(RegexLexer):
(r'[(){}\[\]:;.]', Punctuation),
],
'keywords': [
- (u'பதிப்பி|தேர்ந்தெடு|தேர்வு|ஏதேனில்|ஆனால்|இல்லைஆனால்|இல்லை|ஆக|ஒவ்வொன்றாக|இல்|வரை|செய்|முடியேனில்|பின்கொடு|முடி|நிரல்பாகம்|தொடர்|நிறுத்து|நிரல்பாகம்', Keyword),
+ ('பதிப்பி|தேர்ந்தெடு|தேர்வு|ஏதேனில்|ஆனால்|இல்லைஆனால்|இல்லை|ஆக|ஒவ்வொன்றாக|இல்|வரை|செய்|முடியேனில்|பின்கொடு|முடி|நிரல்பாகம்|தொடர்|நிறுத்து|நிரல்பாகம்', Keyword),
],
'identifier': [
- (u'(?:'+_TALETTERS+u')(?:[0-9]|'+_TALETTERS+u')*', Name),
+ ('(?:'+_TALETTERS+')(?:[0-9]|'+_TALETTERS+')*', Name),
],
'literal': [
(r'".*?"', String),
diff --git a/pygments/lexers/haskell.py b/pygments/lexers/haskell.py
index da86a507..497d4cf3 100644
--- a/pygments/lexers/haskell.py
+++ b/pygments/lexers/haskell.py
@@ -327,10 +327,10 @@ class AgdaLexer(RegexLexer):
# Identifiers
(r'\b(%s)(?!\')\b' % '|'.join(reserved), Keyword.Reserved),
(r'(import|module)(\s+)', bygroups(Keyword.Reserved, Text), 'module'),
- (u'\\b(Set|Prop)[\u2080-\u2089]*\\b', Keyword.Type),
+ (r'\b(Set|Prop)[\u2080-\u2089]*\b', Keyword.Type),
# Special Symbols
(r'(\(|\)|\{|\})', Operator),
- (u'(\\.{1,3}|\\||\u03BB|\u2200|\u2192|:|=|->)', Operator.Word),
+ (r'(\.{1,3}|\||\u03BB|\u2200|\u2192|:|=|->)', Operator.Word),
# Numbers
(r'\d+[eE][+-]?\d+', Number.Float),
(r'\d+\.\d+([eE][+-]?\d+)?', Number.Float),
diff --git a/pygments/lexers/haxe.py b/pygments/lexers/haxe.py
index 0a58aefc..f95e4556 100644
--- a/pygments/lexers/haxe.py
+++ b/pygments/lexers/haxe.py
@@ -79,7 +79,7 @@ class HaxeLexer(ExtendedRegexLexer):
if proc in ['error']:
ctx.stack.append('preproc-error')
- yield match.start(), Comment.Preproc, u'#' + proc
+ yield match.start(), Comment.Preproc, '#' + proc
ctx.pos = match.end()
tokens = {
diff --git a/pygments/lexers/int_fiction.py b/pygments/lexers/int_fiction.py
index e3d35088..a9194415 100644
--- a/pygments/lexers/int_fiction.py
+++ b/pygments/lexers/int_fiction.py
@@ -38,10 +38,10 @@ class Inform6Lexer(RegexLexer):
# Inform 7 maps these four character classes to their ASCII
# equivalents. To support Inform 6 inclusions within Inform 7,
# Inform6Lexer maps them too.
- _dash = u'\\-\u2010-\u2014'
- _dquote = u'"\u201c\u201d'
- _squote = u"'\u2018\u2019"
- _newline = u'\\n\u0085\u2028\u2029'
+ _dash = '\\-\u2010-\u2014'
+ _dquote = '"\u201c\u201d'
+ _squote = "'\u2018\u2019"
+ _newline = '\\n\u0085\u2028\u2029'
tokens = {
'root': [
@@ -858,7 +858,7 @@ class Tads3Lexer(RegexLexer):
tokens = {
'root': [
- (u'\ufeff', Text),
+ ('\ufeff', Text),
(r'\{', Punctuation, 'object-body'),
(r';+', Punctuation),
(r'(?=(argcount|break|case|catch|continue|default|definingobj|'
diff --git a/pygments/lexers/javascript.py b/pygments/lexers/javascript.py
index f36863dc..0a689eab 100644
--- a/pygments/lexers/javascript.py
+++ b/pygments/lexers/javascript.py
@@ -26,7 +26,7 @@ JS_IDENT_START = ('(?:[$_' + uni.combine('Lu', 'Ll', 'Lt', 'Lm', 'Lo', 'Nl') +
']|\\\\u[a-fA-F0-9]{4})')
JS_IDENT_PART = ('(?:[$' + uni.combine('Lu', 'Ll', 'Lt', 'Lm', 'Lo', 'Nl',
'Mn', 'Mc', 'Nd', 'Pc') +
- u'\u200c\u200d]|\\\\u[a-fA-F0-9]{4})')
+ '\u200c\u200d]|\\\\u[a-fA-F0-9]{4})')
JS_IDENT = JS_IDENT_START + '(?:' + JS_IDENT_PART + ')*'
diff --git a/pygments/lexers/julia.py b/pygments/lexers/julia.py
index 7978074a..b512e248 100644
--- a/pygments/lexers/julia.py
+++ b/pygments/lexers/julia.py
@@ -15,13 +15,12 @@ from pygments.lexer import Lexer, RegexLexer, bygroups, do_insertions, \
words, include
from pygments.token import Text, Comment, Operator, Keyword, Name, String, \
Number, Punctuation, Generic
-from pygments.util import shebang_matches, unirange
+from pygments.util import shebang_matches
__all__ = ['JuliaLexer', 'JuliaConsoleLexer']
-allowed_variable = (
- u'(?:[a-zA-Z_\u00A1-\uffff]|%s)(?:[a-zA-Z_0-9\u00A1-\uffff]|%s)*!*' %
- ((unirange(0x10000, 0x10ffff),) * 2))
+allowed_variable = \
+ '(?:[a-zA-Z_\u00A1-\U0010ffff]|%s)(?:[a-zA-Z_0-9\u00A1-\U0010ffff])*!*'
class JuliaLexer(RegexLexer):
@@ -131,59 +130,58 @@ class JuliaLexer(RegexLexer):
# builtins
(words([
- u'ARGS', u'CPU_CORES', u'C_NULL', u'DevNull', u'ENDIAN_BOM',
- u'ENV', u'I', u'Inf', u'Inf16', u'Inf32', u'Inf64',
- u'InsertionSort', u'JULIA_HOME', u'LOAD_PATH', u'MergeSort',
- u'NaN', u'NaN16', u'NaN32', u'NaN64', u'OS_NAME',
- u'QuickSort', u'RoundDown', u'RoundFromZero', u'RoundNearest',
- u'RoundNearestTiesAway', u'RoundNearestTiesUp',
- u'RoundToZero', u'RoundUp', u'STDERR', u'STDIN', u'STDOUT',
- u'VERSION', u'WORD_SIZE', u'catalan', u'e', u'eu',
- u'eulergamma', u'golden', u'im', u'nothing', u'pi', u'γ',
- u'π', u'φ'],
+ 'ARGS', 'CPU_CORES', 'C_NULL', 'DevNull', 'ENDIAN_BOM',
+ 'ENV', 'I', 'Inf', 'Inf16', 'Inf32', 'Inf64',
+ 'InsertionSort', 'JULIA_HOME', 'LOAD_PATH', 'MergeSort',
+ 'NaN', 'NaN16', 'NaN32', 'NaN64', 'OS_NAME',
+ 'QuickSort', 'RoundDown', 'RoundFromZero', 'RoundNearest',
+ 'RoundNearestTiesAway', 'RoundNearestTiesUp',
+ 'RoundToZero', 'RoundUp', 'STDERR', 'STDIN', 'STDOUT',
+ 'VERSION', 'WORD_SIZE', 'catalan', 'e', 'eu',
+ 'eulergamma', 'golden', 'im', 'nothing', 'pi', 'γ', 'π', 'φ'],
suffix=r'\b'), Name.Builtin),
# operators
# see: https://github.com/JuliaLang/julia/blob/master/src/julia-parser.scm
(words((
# prec-assignment
- u'=', u':=', u'+=', u'-=', u'*=', u'/=', u'//=', u'.//=', u'.*=', u'./=',
- u'\\=', u'.\\=', u'^=', u'.^=', u'÷=', u'.÷=', u'%=', u'.%=', u'|=', u'&=',
- u'$=', u'=>', u'<<=', u'>>=', u'>>>=', u'~', u'.+=', u'.-=',
+ '=', ':=', '+=', '-=', '*=', '/=', '//=', './/=', '.*=', './=',
+ '\\=', '.\\=', '^=', '.^=', '÷=', '.÷=', '%=', '.%=', '|=', '&=',
+ '$=', '=>', '<<=', '>>=', '>>>=', '~', '.+=', '.-=',
# prec-conditional
- u'?',
+ '?',
# prec-arrow
- u'--', u'-->',
+ '--', '-->',
# prec-lazy-or
- u'||',
+ '||',
# prec-lazy-and
- u'&&',
+ '&&',
# prec-comparison
- u'>', u'<', u'>=', u'≥', u'<=', u'≤', u'==', u'===', u'≡', u'!=', u'≠',
- u'!==', u'≢', u'.>', u'.<', u'.>=', u'.≥', u'.<=', u'.≤', u'.==', u'.!=',
- u'.≠', u'.=', u'.!', u'<:', u'>:', u'∈', u'∉', u'∋', u'∌', u'⊆',
- u'⊈', u'⊂',
- u'⊄', u'⊊',
+ '>', '<', '>=', '≥', '<=', '≤', '==', '===', '≡', '!=', '≠',
+ '!==', '≢', '.>', '.<', '.>=', '.≥', '.<=', '.≤', '.==', '.!=',
+ '.≠', '.=', '.!', '<:', '>:', '∈', '∉', '∋', '∌', '⊆',
+ '⊈', '⊂',
+ '⊄', '⊊',
# prec-pipe
- u'|>', u'<|',
+ '|>', '<|',
# prec-colon
- u':',
+ ':',
# prec-plus
- u'.+', u'.-', u'|', u'∪', u'$',
+ '.+', '.-', '|', '∪', '$',
# prec-bitshift
- u'<<', u'>>', u'>>>', u'.<<', u'.>>', u'.>>>',
+ '<<', '>>', '>>>', '.<<', '.>>', '.>>>',
# prec-times
- u'*', u'/', u'./', u'÷', u'.÷', u'%', u'⋅', u'.%', u'.*', u'\\', u'.\\', u'&', u'∩',
+ '*', '/', './', '÷', '.÷', '%', '⋅', '.%', '.*', '\\', '.\\', '&', '∩',
# prec-rational
- u'//', u'.//',
+ '//', './/',
# prec-power
- u'^', u'.^',
+ '^', '.^',
# prec-decl
- u'::',
+ '::',
# prec-dot
- u'.',
+ '.',
# unary op
- u'+', u'-', u'!', u'√', u'∛', u'∜'
+ '+', '-', '!', '√', '∛', '∜',
)), Operator),
# chars
diff --git a/pygments/lexers/jvm.py b/pygments/lexers/jvm.py
index 86af6d9f..ee0bc7af 100644
--- a/pygments/lexers/jvm.py
+++ b/pygments/lexers/jvm.py
@@ -151,120 +151,120 @@ class ScalaLexer(RegexLexer):
flags = re.MULTILINE | re.DOTALL
# don't use raw unicode strings!
- op = (u'[-~\\^\\*!%&\\\\<>\\|+=:/?@\u00a6-\u00a7\u00a9\u00ac\u00ae\u00b0-\u00b1'
- u'\u00b6\u00d7\u00f7\u03f6\u0482\u0606-\u0608\u060e-\u060f\u06e9'
- u'\u06fd-\u06fe\u07f6\u09fa\u0b70\u0bf3-\u0bf8\u0bfa\u0c7f\u0cf1-\u0cf2'
- u'\u0d79\u0f01-\u0f03\u0f13-\u0f17\u0f1a-\u0f1f\u0f34\u0f36\u0f38'
- u'\u0fbe-\u0fc5\u0fc7-\u0fcf\u109e-\u109f\u1360\u1390-\u1399\u1940'
- u'\u19e0-\u19ff\u1b61-\u1b6a\u1b74-\u1b7c\u2044\u2052\u207a-\u207c'
- u'\u208a-\u208c\u2100-\u2101\u2103-\u2106\u2108-\u2109\u2114\u2116-\u2118'
- u'\u211e-\u2123\u2125\u2127\u2129\u212e\u213a-\u213b\u2140-\u2144'
- u'\u214a-\u214d\u214f\u2190-\u2328\u232b-\u244a\u249c-\u24e9\u2500-\u2767'
- u'\u2794-\u27c4\u27c7-\u27e5\u27f0-\u2982\u2999-\u29d7\u29dc-\u29fb'
- u'\u29fe-\u2b54\u2ce5-\u2cea\u2e80-\u2ffb\u3004\u3012-\u3013\u3020'
- u'\u3036-\u3037\u303e-\u303f\u3190-\u3191\u3196-\u319f\u31c0-\u31e3'
- u'\u3200-\u321e\u322a-\u3250\u3260-\u327f\u328a-\u32b0\u32c0-\u33ff'
- u'\u4dc0-\u4dff\ua490-\ua4c6\ua828-\ua82b\ufb29\ufdfd\ufe62\ufe64-\ufe66'
- u'\uff0b\uff1c-\uff1e\uff5c\uff5e\uffe2\uffe4\uffe8-\uffee\ufffc-\ufffd]+')
-
- letter = (u'[a-zA-Z\\$_\u00aa\u00b5\u00ba\u00c0-\u00d6\u00d8-\u00f6'
- u'\u00f8-\u02af\u0370-\u0373\u0376-\u0377\u037b-\u037d\u0386'
- u'\u0388-\u03f5\u03f7-\u0481\u048a-\u0556\u0561-\u0587\u05d0-\u05f2'
- u'\u0621-\u063f\u0641-\u064a\u066e-\u066f\u0671-\u06d3\u06d5'
- u'\u06ee-\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5'
- u'\u07b1\u07ca-\u07ea\u0904-\u0939\u093d\u0950\u0958-\u0961'
- u'\u0972-\u097f\u0985-\u09b9\u09bd\u09ce\u09dc-\u09e1\u09f0-\u09f1'
- u'\u0a05-\u0a39\u0a59-\u0a5e\u0a72-\u0a74\u0a85-\u0ab9\u0abd'
- u'\u0ad0-\u0ae1\u0b05-\u0b39\u0b3d\u0b5c-\u0b61\u0b71\u0b83-\u0bb9'
- u'\u0bd0\u0c05-\u0c3d\u0c58-\u0c61\u0c85-\u0cb9\u0cbd\u0cde-\u0ce1'
- u'\u0d05-\u0d3d\u0d60-\u0d61\u0d7a-\u0d7f\u0d85-\u0dc6\u0e01-\u0e30'
- u'\u0e32-\u0e33\u0e40-\u0e45\u0e81-\u0eb0\u0eb2-\u0eb3\u0ebd-\u0ec4'
- u'\u0edc-\u0f00\u0f40-\u0f6c\u0f88-\u0f8b\u1000-\u102a\u103f'
- u'\u1050-\u1055\u105a-\u105d\u1061\u1065-\u1066\u106e-\u1070'
- u'\u1075-\u1081\u108e\u10a0-\u10fa\u1100-\u135a\u1380-\u138f'
- u'\u13a0-\u166c\u166f-\u1676\u1681-\u169a\u16a0-\u16ea\u16ee-\u1711'
- u'\u1720-\u1731\u1740-\u1751\u1760-\u1770\u1780-\u17b3\u17dc'
- u'\u1820-\u1842\u1844-\u18a8\u18aa-\u191c\u1950-\u19a9\u19c1-\u19c7'
- u'\u1a00-\u1a16\u1b05-\u1b33\u1b45-\u1b4b\u1b83-\u1ba0\u1bae-\u1baf'
- u'\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c77\u1d00-\u1d2b\u1d62-\u1d77'
- u'\u1d79-\u1d9a\u1e00-\u1fbc\u1fbe\u1fc2-\u1fcc\u1fd0-\u1fdb'
- u'\u1fe0-\u1fec\u1ff2-\u1ffc\u2071\u207f\u2102\u2107\u210a-\u2113'
- u'\u2115\u2119-\u211d\u2124\u2126\u2128\u212a-\u212d\u212f-\u2139'
- u'\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c7c'
- u'\u2c80-\u2ce4\u2d00-\u2d65\u2d80-\u2dde\u3006-\u3007\u3021-\u3029'
- u'\u3038-\u303a\u303c\u3041-\u3096\u309f\u30a1-\u30fa\u30ff-\u318e'
- u'\u31a0-\u31b7\u31f0-\u31ff\u3400-\u4db5\u4e00-\ua014\ua016-\ua48c'
- u'\ua500-\ua60b\ua610-\ua61f\ua62a-\ua66e\ua680-\ua697\ua722-\ua76f'
- u'\ua771-\ua787\ua78b-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822'
- u'\ua840-\ua873\ua882-\ua8b3\ua90a-\ua925\ua930-\ua946\uaa00-\uaa28'
- u'\uaa40-\uaa42\uaa44-\uaa4b\uac00-\ud7a3\uf900-\ufb1d\ufb1f-\ufb28'
- u'\ufb2a-\ufd3d\ufd50-\ufdfb\ufe70-\ufefc\uff21-\uff3a\uff41-\uff5a'
- u'\uff66-\uff6f\uff71-\uff9d\uffa0-\uffdc]')
-
- upper = (u'[A-Z\\$_\u00c0-\u00d6\u00d8-\u00de\u0100\u0102\u0104\u0106\u0108'
- u'\u010a\u010c\u010e\u0110\u0112\u0114\u0116\u0118\u011a\u011c'
- u'\u011e\u0120\u0122\u0124\u0126\u0128\u012a\u012c\u012e\u0130'
- u'\u0132\u0134\u0136\u0139\u013b\u013d\u013f\u0141\u0143\u0145'
- u'\u0147\u014a\u014c\u014e\u0150\u0152\u0154\u0156\u0158\u015a'
- u'\u015c\u015e\u0160\u0162\u0164\u0166\u0168\u016a\u016c\u016e'
- u'\u0170\u0172\u0174\u0176\u0178-\u0179\u017b\u017d\u0181-\u0182'
- u'\u0184\u0186-\u0187\u0189-\u018b\u018e-\u0191\u0193-\u0194'
- u'\u0196-\u0198\u019c-\u019d\u019f-\u01a0\u01a2\u01a4\u01a6-\u01a7'
- u'\u01a9\u01ac\u01ae-\u01af\u01b1-\u01b3\u01b5\u01b7-\u01b8\u01bc'
- u'\u01c4\u01c7\u01ca\u01cd\u01cf\u01d1\u01d3\u01d5\u01d7\u01d9'
- u'\u01db\u01de\u01e0\u01e2\u01e4\u01e6\u01e8\u01ea\u01ec\u01ee'
- u'\u01f1\u01f4\u01f6-\u01f8\u01fa\u01fc\u01fe\u0200\u0202\u0204'
- u'\u0206\u0208\u020a\u020c\u020e\u0210\u0212\u0214\u0216\u0218'
- u'\u021a\u021c\u021e\u0220\u0222\u0224\u0226\u0228\u022a\u022c'
- u'\u022e\u0230\u0232\u023a-\u023b\u023d-\u023e\u0241\u0243-\u0246'
- u'\u0248\u024a\u024c\u024e\u0370\u0372\u0376\u0386\u0388-\u038f'
- u'\u0391-\u03ab\u03cf\u03d2-\u03d4\u03d8\u03da\u03dc\u03de\u03e0'
- u'\u03e2\u03e4\u03e6\u03e8\u03ea\u03ec\u03ee\u03f4\u03f7'
- u'\u03f9-\u03fa\u03fd-\u042f\u0460\u0462\u0464\u0466\u0468\u046a'
- u'\u046c\u046e\u0470\u0472\u0474\u0476\u0478\u047a\u047c\u047e'
- u'\u0480\u048a\u048c\u048e\u0490\u0492\u0494\u0496\u0498\u049a'
- u'\u049c\u049e\u04a0\u04a2\u04a4\u04a6\u04a8\u04aa\u04ac\u04ae'
- u'\u04b0\u04b2\u04b4\u04b6\u04b8\u04ba\u04bc\u04be\u04c0-\u04c1'
- u'\u04c3\u04c5\u04c7\u04c9\u04cb\u04cd\u04d0\u04d2\u04d4\u04d6'
- u'\u04d8\u04da\u04dc\u04de\u04e0\u04e2\u04e4\u04e6\u04e8\u04ea'
- u'\u04ec\u04ee\u04f0\u04f2\u04f4\u04f6\u04f8\u04fa\u04fc\u04fe'
- u'\u0500\u0502\u0504\u0506\u0508\u050a\u050c\u050e\u0510\u0512'
- u'\u0514\u0516\u0518\u051a\u051c\u051e\u0520\u0522\u0531-\u0556'
- u'\u10a0-\u10c5\u1e00\u1e02\u1e04\u1e06\u1e08\u1e0a\u1e0c\u1e0e'
- u'\u1e10\u1e12\u1e14\u1e16\u1e18\u1e1a\u1e1c\u1e1e\u1e20\u1e22'
- u'\u1e24\u1e26\u1e28\u1e2a\u1e2c\u1e2e\u1e30\u1e32\u1e34\u1e36'
- u'\u1e38\u1e3a\u1e3c\u1e3e\u1e40\u1e42\u1e44\u1e46\u1e48\u1e4a'
- u'\u1e4c\u1e4e\u1e50\u1e52\u1e54\u1e56\u1e58\u1e5a\u1e5c\u1e5e'
- u'\u1e60\u1e62\u1e64\u1e66\u1e68\u1e6a\u1e6c\u1e6e\u1e70\u1e72'
- u'\u1e74\u1e76\u1e78\u1e7a\u1e7c\u1e7e\u1e80\u1e82\u1e84\u1e86'
- u'\u1e88\u1e8a\u1e8c\u1e8e\u1e90\u1e92\u1e94\u1e9e\u1ea0\u1ea2'
- u'\u1ea4\u1ea6\u1ea8\u1eaa\u1eac\u1eae\u1eb0\u1eb2\u1eb4\u1eb6'
- u'\u1eb8\u1eba\u1ebc\u1ebe\u1ec0\u1ec2\u1ec4\u1ec6\u1ec8\u1eca'
- u'\u1ecc\u1ece\u1ed0\u1ed2\u1ed4\u1ed6\u1ed8\u1eda\u1edc\u1ede'
- u'\u1ee0\u1ee2\u1ee4\u1ee6\u1ee8\u1eea\u1eec\u1eee\u1ef0\u1ef2'
- u'\u1ef4\u1ef6\u1ef8\u1efa\u1efc\u1efe\u1f08-\u1f0f\u1f18-\u1f1d'
- u'\u1f28-\u1f2f\u1f38-\u1f3f\u1f48-\u1f4d\u1f59-\u1f5f'
- u'\u1f68-\u1f6f\u1fb8-\u1fbb\u1fc8-\u1fcb\u1fd8-\u1fdb'
- u'\u1fe8-\u1fec\u1ff8-\u1ffb\u2102\u2107\u210b-\u210d\u2110-\u2112'
- u'\u2115\u2119-\u211d\u2124\u2126\u2128\u212a-\u212d\u2130-\u2133'
- u'\u213e-\u213f\u2145\u2183\u2c00-\u2c2e\u2c60\u2c62-\u2c64\u2c67'
- u'\u2c69\u2c6b\u2c6d-\u2c6f\u2c72\u2c75\u2c80\u2c82\u2c84\u2c86'
- u'\u2c88\u2c8a\u2c8c\u2c8e\u2c90\u2c92\u2c94\u2c96\u2c98\u2c9a'
- u'\u2c9c\u2c9e\u2ca0\u2ca2\u2ca4\u2ca6\u2ca8\u2caa\u2cac\u2cae'
- u'\u2cb0\u2cb2\u2cb4\u2cb6\u2cb8\u2cba\u2cbc\u2cbe\u2cc0\u2cc2'
- u'\u2cc4\u2cc6\u2cc8\u2cca\u2ccc\u2cce\u2cd0\u2cd2\u2cd4\u2cd6'
- u'\u2cd8\u2cda\u2cdc\u2cde\u2ce0\u2ce2\ua640\ua642\ua644\ua646'
- u'\ua648\ua64a\ua64c\ua64e\ua650\ua652\ua654\ua656\ua658\ua65a'
- u'\ua65c\ua65e\ua662\ua664\ua666\ua668\ua66a\ua66c\ua680\ua682'
- u'\ua684\ua686\ua688\ua68a\ua68c\ua68e\ua690\ua692\ua694\ua696'
- u'\ua722\ua724\ua726\ua728\ua72a\ua72c\ua72e\ua732\ua734\ua736'
- u'\ua738\ua73a\ua73c\ua73e\ua740\ua742\ua744\ua746\ua748\ua74a'
- u'\ua74c\ua74e\ua750\ua752\ua754\ua756\ua758\ua75a\ua75c\ua75e'
- u'\ua760\ua762\ua764\ua766\ua768\ua76a\ua76c\ua76e\ua779\ua77b'
- u'\ua77d-\ua77e\ua780\ua782\ua784\ua786\ua78b\uff21-\uff3a]')
-
- idrest = u'%s(?:%s|[0-9])*(?:(?<=_)%s)?' % (letter, letter, op)
- letter_letter_digit = u'%s(?:%s|\\d)*' % (letter, letter)
+ op = ('[-~\\^\\*!%&\\\\<>\\|+=:/?@\u00a6-\u00a7\u00a9\u00ac\u00ae\u00b0-\u00b1'
+ '\u00b6\u00d7\u00f7\u03f6\u0482\u0606-\u0608\u060e-\u060f\u06e9'
+ '\u06fd-\u06fe\u07f6\u09fa\u0b70\u0bf3-\u0bf8\u0bfa\u0c7f\u0cf1-\u0cf2'
+ '\u0d79\u0f01-\u0f03\u0f13-\u0f17\u0f1a-\u0f1f\u0f34\u0f36\u0f38'
+ '\u0fbe-\u0fc5\u0fc7-\u0fcf\u109e-\u109f\u1360\u1390-\u1399\u1940'
+ '\u19e0-\u19ff\u1b61-\u1b6a\u1b74-\u1b7c\u2044\u2052\u207a-\u207c'
+ '\u208a-\u208c\u2100-\u2101\u2103-\u2106\u2108-\u2109\u2114\u2116-\u2118'
+ '\u211e-\u2123\u2125\u2127\u2129\u212e\u213a-\u213b\u2140-\u2144'
+ '\u214a-\u214d\u214f\u2190-\u2328\u232b-\u244a\u249c-\u24e9\u2500-\u2767'
+ '\u2794-\u27c4\u27c7-\u27e5\u27f0-\u2982\u2999-\u29d7\u29dc-\u29fb'
+ '\u29fe-\u2b54\u2ce5-\u2cea\u2e80-\u2ffb\u3004\u3012-\u3013\u3020'
+ '\u3036-\u3037\u303e-\u303f\u3190-\u3191\u3196-\u319f\u31c0-\u31e3'
+ '\u3200-\u321e\u322a-\u3250\u3260-\u327f\u328a-\u32b0\u32c0-\u33ff'
+ '\u4dc0-\u4dff\ua490-\ua4c6\ua828-\ua82b\ufb29\ufdfd\ufe62\ufe64-\ufe66'
+ '\uff0b\uff1c-\uff1e\uff5c\uff5e\uffe2\uffe4\uffe8-\uffee\ufffc-\ufffd]+')
+
+ letter = ('[a-zA-Z\\$_\u00aa\u00b5\u00ba\u00c0-\u00d6\u00d8-\u00f6'
+ '\u00f8-\u02af\u0370-\u0373\u0376-\u0377\u037b-\u037d\u0386'
+ '\u0388-\u03f5\u03f7-\u0481\u048a-\u0556\u0561-\u0587\u05d0-\u05f2'
+ '\u0621-\u063f\u0641-\u064a\u066e-\u066f\u0671-\u06d3\u06d5'
+ '\u06ee-\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5'
+ '\u07b1\u07ca-\u07ea\u0904-\u0939\u093d\u0950\u0958-\u0961'
+ '\u0972-\u097f\u0985-\u09b9\u09bd\u09ce\u09dc-\u09e1\u09f0-\u09f1'
+ '\u0a05-\u0a39\u0a59-\u0a5e\u0a72-\u0a74\u0a85-\u0ab9\u0abd'
+ '\u0ad0-\u0ae1\u0b05-\u0b39\u0b3d\u0b5c-\u0b61\u0b71\u0b83-\u0bb9'
+ '\u0bd0\u0c05-\u0c3d\u0c58-\u0c61\u0c85-\u0cb9\u0cbd\u0cde-\u0ce1'
+ '\u0d05-\u0d3d\u0d60-\u0d61\u0d7a-\u0d7f\u0d85-\u0dc6\u0e01-\u0e30'
+ '\u0e32-\u0e33\u0e40-\u0e45\u0e81-\u0eb0\u0eb2-\u0eb3\u0ebd-\u0ec4'
+ '\u0edc-\u0f00\u0f40-\u0f6c\u0f88-\u0f8b\u1000-\u102a\u103f'
+ '\u1050-\u1055\u105a-\u105d\u1061\u1065-\u1066\u106e-\u1070'
+ '\u1075-\u1081\u108e\u10a0-\u10fa\u1100-\u135a\u1380-\u138f'
+ '\u13a0-\u166c\u166f-\u1676\u1681-\u169a\u16a0-\u16ea\u16ee-\u1711'
+ '\u1720-\u1731\u1740-\u1751\u1760-\u1770\u1780-\u17b3\u17dc'
+ '\u1820-\u1842\u1844-\u18a8\u18aa-\u191c\u1950-\u19a9\u19c1-\u19c7'
+ '\u1a00-\u1a16\u1b05-\u1b33\u1b45-\u1b4b\u1b83-\u1ba0\u1bae-\u1baf'
+ '\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c77\u1d00-\u1d2b\u1d62-\u1d77'
+ '\u1d79-\u1d9a\u1e00-\u1fbc\u1fbe\u1fc2-\u1fcc\u1fd0-\u1fdb'
+ '\u1fe0-\u1fec\u1ff2-\u1ffc\u2071\u207f\u2102\u2107\u210a-\u2113'
+ '\u2115\u2119-\u211d\u2124\u2126\u2128\u212a-\u212d\u212f-\u2139'
+ '\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c7c'
+ '\u2c80-\u2ce4\u2d00-\u2d65\u2d80-\u2dde\u3006-\u3007\u3021-\u3029'
+ '\u3038-\u303a\u303c\u3041-\u3096\u309f\u30a1-\u30fa\u30ff-\u318e'
+ '\u31a0-\u31b7\u31f0-\u31ff\u3400-\u4db5\u4e00-\ua014\ua016-\ua48c'
+ '\ua500-\ua60b\ua610-\ua61f\ua62a-\ua66e\ua680-\ua697\ua722-\ua76f'
+ '\ua771-\ua787\ua78b-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822'
+ '\ua840-\ua873\ua882-\ua8b3\ua90a-\ua925\ua930-\ua946\uaa00-\uaa28'
+ '\uaa40-\uaa42\uaa44-\uaa4b\uac00-\ud7a3\uf900-\ufb1d\ufb1f-\ufb28'
+ '\ufb2a-\ufd3d\ufd50-\ufdfb\ufe70-\ufefc\uff21-\uff3a\uff41-\uff5a'
+ '\uff66-\uff6f\uff71-\uff9d\uffa0-\uffdc]')
+
+ upper = ('[A-Z\\$_\u00c0-\u00d6\u00d8-\u00de\u0100\u0102\u0104\u0106\u0108'
+ '\u010a\u010c\u010e\u0110\u0112\u0114\u0116\u0118\u011a\u011c'
+ '\u011e\u0120\u0122\u0124\u0126\u0128\u012a\u012c\u012e\u0130'
+ '\u0132\u0134\u0136\u0139\u013b\u013d\u013f\u0141\u0143\u0145'
+ '\u0147\u014a\u014c\u014e\u0150\u0152\u0154\u0156\u0158\u015a'
+ '\u015c\u015e\u0160\u0162\u0164\u0166\u0168\u016a\u016c\u016e'
+ '\u0170\u0172\u0174\u0176\u0178-\u0179\u017b\u017d\u0181-\u0182'
+ '\u0184\u0186-\u0187\u0189-\u018b\u018e-\u0191\u0193-\u0194'
+ '\u0196-\u0198\u019c-\u019d\u019f-\u01a0\u01a2\u01a4\u01a6-\u01a7'
+ '\u01a9\u01ac\u01ae-\u01af\u01b1-\u01b3\u01b5\u01b7-\u01b8\u01bc'
+ '\u01c4\u01c7\u01ca\u01cd\u01cf\u01d1\u01d3\u01d5\u01d7\u01d9'
+ '\u01db\u01de\u01e0\u01e2\u01e4\u01e6\u01e8\u01ea\u01ec\u01ee'
+ '\u01f1\u01f4\u01f6-\u01f8\u01fa\u01fc\u01fe\u0200\u0202\u0204'
+ '\u0206\u0208\u020a\u020c\u020e\u0210\u0212\u0214\u0216\u0218'
+ '\u021a\u021c\u021e\u0220\u0222\u0224\u0226\u0228\u022a\u022c'
+ '\u022e\u0230\u0232\u023a-\u023b\u023d-\u023e\u0241\u0243-\u0246'
+ '\u0248\u024a\u024c\u024e\u0370\u0372\u0376\u0386\u0388-\u038f'
+ '\u0391-\u03ab\u03cf\u03d2-\u03d4\u03d8\u03da\u03dc\u03de\u03e0'
+ '\u03e2\u03e4\u03e6\u03e8\u03ea\u03ec\u03ee\u03f4\u03f7'
+ '\u03f9-\u03fa\u03fd-\u042f\u0460\u0462\u0464\u0466\u0468\u046a'
+ '\u046c\u046e\u0470\u0472\u0474\u0476\u0478\u047a\u047c\u047e'
+ '\u0480\u048a\u048c\u048e\u0490\u0492\u0494\u0496\u0498\u049a'
+ '\u049c\u049e\u04a0\u04a2\u04a4\u04a6\u04a8\u04aa\u04ac\u04ae'
+ '\u04b0\u04b2\u04b4\u04b6\u04b8\u04ba\u04bc\u04be\u04c0-\u04c1'
+ '\u04c3\u04c5\u04c7\u04c9\u04cb\u04cd\u04d0\u04d2\u04d4\u04d6'
+ '\u04d8\u04da\u04dc\u04de\u04e0\u04e2\u04e4\u04e6\u04e8\u04ea'
+ '\u04ec\u04ee\u04f0\u04f2\u04f4\u04f6\u04f8\u04fa\u04fc\u04fe'
+ '\u0500\u0502\u0504\u0506\u0508\u050a\u050c\u050e\u0510\u0512'
+ '\u0514\u0516\u0518\u051a\u051c\u051e\u0520\u0522\u0531-\u0556'
+ '\u10a0-\u10c5\u1e00\u1e02\u1e04\u1e06\u1e08\u1e0a\u1e0c\u1e0e'
+ '\u1e10\u1e12\u1e14\u1e16\u1e18\u1e1a\u1e1c\u1e1e\u1e20\u1e22'
+ '\u1e24\u1e26\u1e28\u1e2a\u1e2c\u1e2e\u1e30\u1e32\u1e34\u1e36'
+ '\u1e38\u1e3a\u1e3c\u1e3e\u1e40\u1e42\u1e44\u1e46\u1e48\u1e4a'
+ '\u1e4c\u1e4e\u1e50\u1e52\u1e54\u1e56\u1e58\u1e5a\u1e5c\u1e5e'
+ '\u1e60\u1e62\u1e64\u1e66\u1e68\u1e6a\u1e6c\u1e6e\u1e70\u1e72'
+ '\u1e74\u1e76\u1e78\u1e7a\u1e7c\u1e7e\u1e80\u1e82\u1e84\u1e86'
+ '\u1e88\u1e8a\u1e8c\u1e8e\u1e90\u1e92\u1e94\u1e9e\u1ea0\u1ea2'
+ '\u1ea4\u1ea6\u1ea8\u1eaa\u1eac\u1eae\u1eb0\u1eb2\u1eb4\u1eb6'
+ '\u1eb8\u1eba\u1ebc\u1ebe\u1ec0\u1ec2\u1ec4\u1ec6\u1ec8\u1eca'
+ '\u1ecc\u1ece\u1ed0\u1ed2\u1ed4\u1ed6\u1ed8\u1eda\u1edc\u1ede'
+ '\u1ee0\u1ee2\u1ee4\u1ee6\u1ee8\u1eea\u1eec\u1eee\u1ef0\u1ef2'
+ '\u1ef4\u1ef6\u1ef8\u1efa\u1efc\u1efe\u1f08-\u1f0f\u1f18-\u1f1d'
+ '\u1f28-\u1f2f\u1f38-\u1f3f\u1f48-\u1f4d\u1f59-\u1f5f'
+ '\u1f68-\u1f6f\u1fb8-\u1fbb\u1fc8-\u1fcb\u1fd8-\u1fdb'
+ '\u1fe8-\u1fec\u1ff8-\u1ffb\u2102\u2107\u210b-\u210d\u2110-\u2112'
+ '\u2115\u2119-\u211d\u2124\u2126\u2128\u212a-\u212d\u2130-\u2133'
+ '\u213e-\u213f\u2145\u2183\u2c00-\u2c2e\u2c60\u2c62-\u2c64\u2c67'
+ '\u2c69\u2c6b\u2c6d-\u2c6f\u2c72\u2c75\u2c80\u2c82\u2c84\u2c86'
+ '\u2c88\u2c8a\u2c8c\u2c8e\u2c90\u2c92\u2c94\u2c96\u2c98\u2c9a'
+ '\u2c9c\u2c9e\u2ca0\u2ca2\u2ca4\u2ca6\u2ca8\u2caa\u2cac\u2cae'
+ '\u2cb0\u2cb2\u2cb4\u2cb6\u2cb8\u2cba\u2cbc\u2cbe\u2cc0\u2cc2'
+ '\u2cc4\u2cc6\u2cc8\u2cca\u2ccc\u2cce\u2cd0\u2cd2\u2cd4\u2cd6'
+ '\u2cd8\u2cda\u2cdc\u2cde\u2ce0\u2ce2\ua640\ua642\ua644\ua646'
+ '\ua648\ua64a\ua64c\ua64e\ua650\ua652\ua654\ua656\ua658\ua65a'
+ '\ua65c\ua65e\ua662\ua664\ua666\ua668\ua66a\ua66c\ua680\ua682'
+ '\ua684\ua686\ua688\ua68a\ua68c\ua68e\ua690\ua692\ua694\ua696'
+ '\ua722\ua724\ua726\ua728\ua72a\ua72c\ua72e\ua732\ua734\ua736'
+ '\ua738\ua73a\ua73c\ua73e\ua740\ua742\ua744\ua746\ua748\ua74a'
+ '\ua74c\ua74e\ua750\ua752\ua754\ua756\ua758\ua75a\ua75c\ua75e'
+ '\ua760\ua762\ua764\ua766\ua768\ua76a\ua76c\ua76e\ua779\ua77b'
+ '\ua77d-\ua77e\ua780\ua782\ua784\ua786\ua78b\uff21-\uff3a]')
+
+ idrest = '%s(?:%s|[0-9])*(?:(?<=_)%s)?' % (letter, letter, op)
+ letter_letter_digit = '%s(?:%s|\\d)*' % (letter, letter)
tokens = {
'root': [
@@ -272,26 +272,26 @@ class ScalaLexer(RegexLexer):
(r'(class|trait|object)(\s+)', bygroups(Keyword, Text), 'class'),
(r'[^\S\n]+', Text),
include('comments'),
- (u'@%s' % idrest, Name.Decorator),
- (u'(abstract|ca(?:se|tch)|d(?:ef|o)|e(?:lse|xtends)|'
- u'f(?:inal(?:ly)?|or(?:Some)?)|i(?:f|mplicit)|'
- u'lazy|match|new|override|pr(?:ivate|otected)'
- u'|re(?:quires|turn)|s(?:ealed|uper)|'
- u't(?:h(?:is|row)|ry)|va[lr]|w(?:hile|ith)|yield)\\b|'
- u'(<[%:-]|=>|>:|[#=@_\u21D2\u2190])\\b', Keyword),
- (u':(?!%s)' % op, Keyword, 'type'),
- (u'%s%s\\b' % (upper, idrest), Name.Class),
+ (r'@%s' % idrest, Name.Decorator),
+ (r'(abstract|ca(?:se|tch)|d(?:ef|o)|e(?:lse|xtends)|'
+ r'f(?:inal(?:ly)?|or(?:Some)?)|i(?:f|mplicit)|'
+ r'lazy|match|new|override|pr(?:ivate|otected)'
+ r'|re(?:quires|turn)|s(?:ealed|uper)|'
+ r't(?:h(?:is|row)|ry)|va[lr]|w(?:hile|ith)|yield)\b|'
+ r'(<[%:-]|=>|>:|[#=@_\u21D2\u2190])\b', Keyword),
+ (r':(?!%s)' % op, Keyword, 'type'),
+ (r'%s%s\b' % (upper, idrest), Name.Class),
(r'(true|false|null)\b', Keyword.Constant),
(r'(import|package)(\s+)', bygroups(Keyword, Text), 'import'),
(r'(type)(\s+)', bygroups(Keyword, Text), 'type'),
(r'""".*?"""(?!")', String),
(r'"(\\\\|\\"|[^"])*"', String),
(r"'\\.'|'[^\\]'|'\\u[0-9a-fA-F]{4}'", String.Char),
- (u"'%s" % idrest, Text.Symbol),
+ (r"'%s" % idrest, Text.Symbol),
(r'[fs]"""', String, 'interptriplestring'), # interpolated strings
(r'[fs]"', String, 'interpstring'), # interpolated strings
(r'raw"(\\\\|\\"|[^"])*"', String), # raw strings
- # (ur'(\.)(%s|%s|`[^`]+`)' % (idrest, op), bygroups(Operator,
+ # (r'(\.)(%s|%s|`[^`]+`)' % (idrest, op), bygroups(Operator,
# Name.Attribute)),
(idrest, Name),
(r'`[^`]+`', Name),
@@ -305,27 +305,27 @@ class ScalaLexer(RegexLexer):
(r'\n', Text)
],
'class': [
- (u'(%s|%s|`[^`]+`)(\\s*)(\\[)' % (idrest, op),
+ (r'(%s|%s|`[^`]+`)(\s*)(\[)' % (idrest, op),
bygroups(Name.Class, Text, Operator), ('#pop', 'typeparam')),
(r'\s+', Text),
include('comments'),
(r'\{', Operator, '#pop'),
(r'\(', Operator, '#pop'),
- (u'%s|%s|`[^`]+`' % (idrest, op), Name.Class, '#pop'),
+ (r'%s|%s|`[^`]+`' % (idrest, op), Name.Class, '#pop'),
],
'type': [
(r'\s+', Text),
include('comments'),
(r'<[%:]|>:|[#_]|\bforSome\b|\btype\b', Keyword),
- (u'([,);}]|=>|=|\u21d2)(\\s*)', bygroups(Operator, Text), '#pop'),
+ (r'([,);}]|=>|=|\u21d2)(\s*)', bygroups(Operator, Text), '#pop'),
(r'[({]', Operator, '#push'),
- (u'((?:%s|%s|`[^`]+`)(?:\\.(?:%s|%s|`[^`]+`))*)(\\s*)(\\[)' %
+ (r'((?:%s|%s|`[^`]+`)(?:\.(?:%s|%s|`[^`]+`))*)(\s*)(\[)' %
(idrest, op, idrest, op),
bygroups(Keyword.Type, Text, Operator), ('#pop', 'typeparam')),
- (u'((?:%s|%s|`[^`]+`)(?:\\.(?:%s|%s|`[^`]+`))*)(\\s*)$' %
+ (r'((?:%s|%s|`[^`]+`)(?:\.(?:%s|%s|`[^`]+`))*)(\s*)$' %
(idrest, op, idrest, op),
bygroups(Keyword.Type, Text), '#pop'),
- (u'\\.|%s|%s|`[^`]+`' % (idrest, op), Keyword.Type)
+ (r'\.|%s|%s|`[^`]+`' % (idrest, op), Keyword.Type)
],
'typeparam': [
(r'\s+', Text),
@@ -334,7 +334,7 @@ class ScalaLexer(RegexLexer):
(r'<[%:]|=>|>:|[#_\u21D2]|\bforSome\b|\btype\b', Keyword),
(r'([\])}])', Operator, '#pop'),
(r'[(\[{]', Operator, '#push'),
- (u'\\.|%s|%s|`[^`]+`' % (idrest, op), Keyword.Type)
+ (r'\.|%s|%s|`[^`]+`' % (idrest, op), Keyword.Type)
],
'comments': [
(r'//.*?\n', Comment.Single),
@@ -347,7 +347,7 @@ class ScalaLexer(RegexLexer):
(r'[*/]', Comment.Multiline)
],
'import': [
- (u'(%s|\\.)+' % idrest, Name.Namespace, '#pop')
+ (r'(%s|\.)+' % idrest, Name.Namespace, '#pop')
],
'interpstringcommon': [
(r'[^"$\\]+', String),
@@ -698,9 +698,9 @@ class IokeLexer(RegexLexer):
r'System|Text|Tuple)(?![\w!:?])', Name.Builtin),
# functions
- (u'(generateMatchMethod|aliasMethod|\u03bb|\u028E|fnx|fn|method|'
- u'dmacro|dlecro|syntax|macro|dlecrox|lecrox|lecro|syntax)'
- u'(?![\\w!:?])', Name.Function),
+ ('(generateMatchMethod|aliasMethod|\u03bb|\u028E|fnx|fn|method|'
+ 'dmacro|dlecro|syntax|macro|dlecrox|lecrox|lecro|syntax)'
+ '(?![\\w!:?])', Name.Function),
# Numbers
(r'-?0[xX][0-9a-fA-F]+', Number.Hex),
@@ -716,7 +716,7 @@ class IokeLexer(RegexLexer):
r'\-\-|<=|>=|==|!=|&&|\.\.|\+=|\-=|\*=|\/=|%=|&=|\^=|\|=|<\-|'
r'\+>|!>|<>|&>|%>|#>|\@>|\/>|\*>|\?>|\|>|\^>|~>|\$>|<\->|\->|'
r'<<|>>|\*\*|\?\||\?&|\|\||>|<|\*|\/|%|\+|\-|&|\^|\||=|\$|!|~|'
- u'\\?|#|\u2260|\u2218|\u2208|\u2209)', Operator),
+ r'\?|#|\u2260|\u2218|\u2208|\u2209)', Operator),
(r'(and|nand|or|xor|nor|return|import)(?![\w!?])',
Operator),
@@ -1017,7 +1017,7 @@ class KotlinLexer(RegexLexer):
.. versionadded:: 1.5
"""
-
+
name = 'Kotlin'
aliases = ['kotlin']
filenames = ['*.kt']
@@ -1028,7 +1028,7 @@ class KotlinLexer(RegexLexer):
kt_name = ('@?[_' + uni.combine('Lu', 'Ll', 'Lt', 'Lm', 'Nl') + ']' +
'[' + uni.combine('Lu', 'Ll', 'Lt', 'Lm', 'Nl', 'Nd', 'Pc', 'Cf',
'Mn', 'Mc') + ']*')
-
+
kt_space_name = ('@?[_' + uni.combine('Lu', 'Ll', 'Lt', 'Lm', 'Nl') + ']' +
'[' + uni.combine('Lu', 'Ll', 'Lt', 'Lm', 'Nl', 'Nd', 'Pc', 'Cf',
'Mn', 'Mc', 'Zs') + ',-]*')
@@ -1142,7 +1142,7 @@ class XtendLexer(RegexLexer):
'class'),
(r'(import)(\s+)', bygroups(Keyword.Namespace, Text), 'import'),
(r"(''')", String, 'template'),
- (u'(\u00BB)', String, 'template'),
+ (r'(\u00BB)', String, 'template'),
(r'"(\\\\|\\"|[^"])*"', String),
(r"'(\\\\|\\'|[^'])*'", String),
(r'[a-zA-Z_]\w*:', Name.Label),
@@ -1161,7 +1161,7 @@ class XtendLexer(RegexLexer):
],
'template': [
(r"'''", String, '#pop'),
- (u'\u00AB', String, '#pop'),
+ (r'\u00AB', String, '#pop'),
(r'.', String)
],
}
diff --git a/pygments/lexers/lisp.py b/pygments/lexers/lisp.py
index 5dee6c6f..47efb4fb 100644
--- a/pygments/lexers/lisp.py
+++ b/pygments/lexers/lisp.py
@@ -471,779 +471,779 @@ class RacketLexer(RegexLexer):
# Generated by example.rkt
_keywords = (
- u'#%app', u'#%datum', u'#%declare', u'#%expression', u'#%module-begin',
- u'#%plain-app', u'#%plain-lambda', u'#%plain-module-begin',
- u'#%printing-module-begin', u'#%provide', u'#%require',
- u'#%stratified-body', u'#%top', u'#%top-interaction',
- u'#%variable-reference', u'->', u'->*', u'->*m', u'->d', u'->dm', u'->i',
- u'->m', u'...', u':do-in', u'==', u'=>', u'_', u'absent', u'abstract',
- u'all-defined-out', u'all-from-out', u'and', u'any', u'augment', u'augment*',
- u'augment-final', u'augment-final*', u'augride', u'augride*', u'begin',
- u'begin-for-syntax', u'begin0', u'case', u'case->', u'case->m',
- u'case-lambda', u'class', u'class*', u'class-field-accessor',
- u'class-field-mutator', u'class/c', u'class/derived', u'combine-in',
- u'combine-out', u'command-line', u'compound-unit', u'compound-unit/infer',
- u'cond', u'cons/dc', u'contract', u'contract-out', u'contract-struct',
- u'contracted', u'define', u'define-compound-unit',
- u'define-compound-unit/infer', u'define-contract-struct',
- u'define-custom-hash-types', u'define-custom-set-types',
- u'define-for-syntax', u'define-local-member-name', u'define-logger',
- u'define-match-expander', u'define-member-name',
- u'define-module-boundary-contract', u'define-namespace-anchor',
- u'define-opt/c', u'define-sequence-syntax', u'define-serializable-class',
- u'define-serializable-class*', u'define-signature',
- u'define-signature-form', u'define-struct', u'define-struct/contract',
- u'define-struct/derived', u'define-syntax', u'define-syntax-rule',
- u'define-syntaxes', u'define-unit', u'define-unit-binding',
- u'define-unit-from-context', u'define-unit/contract',
- u'define-unit/new-import-export', u'define-unit/s', u'define-values',
- u'define-values-for-export', u'define-values-for-syntax',
- u'define-values/invoke-unit', u'define-values/invoke-unit/infer',
- u'define/augment', u'define/augment-final', u'define/augride',
- u'define/contract', u'define/final-prop', u'define/match',
- u'define/overment', u'define/override', u'define/override-final',
- u'define/private', u'define/public', u'define/public-final',
- u'define/pubment', u'define/subexpression-pos-prop',
- u'define/subexpression-pos-prop/name', u'delay', u'delay/idle',
- u'delay/name', u'delay/strict', u'delay/sync', u'delay/thread', u'do',
- u'else', u'except', u'except-in', u'except-out', u'export', u'extends',
- u'failure-cont', u'false', u'false/c', u'field', u'field-bound?', u'file',
- u'flat-murec-contract', u'flat-rec-contract', u'for', u'for*', u'for*/and',
- u'for*/async', u'for*/first', u'for*/fold', u'for*/fold/derived',
- u'for*/hash', u'for*/hasheq', u'for*/hasheqv', u'for*/last', u'for*/list',
- u'for*/lists', u'for*/mutable-set', u'for*/mutable-seteq',
- u'for*/mutable-seteqv', u'for*/or', u'for*/product', u'for*/set',
- u'for*/seteq', u'for*/seteqv', u'for*/stream', u'for*/sum', u'for*/vector',
- u'for*/weak-set', u'for*/weak-seteq', u'for*/weak-seteqv', u'for-label',
- u'for-meta', u'for-syntax', u'for-template', u'for/and', u'for/async',
- u'for/first', u'for/fold', u'for/fold/derived', u'for/hash', u'for/hasheq',
- u'for/hasheqv', u'for/last', u'for/list', u'for/lists', u'for/mutable-set',
- u'for/mutable-seteq', u'for/mutable-seteqv', u'for/or', u'for/product',
- u'for/set', u'for/seteq', u'for/seteqv', u'for/stream', u'for/sum',
- u'for/vector', u'for/weak-set', u'for/weak-seteq', u'for/weak-seteqv',
- u'gen:custom-write', u'gen:dict', u'gen:equal+hash', u'gen:set',
- u'gen:stream', u'generic', u'get-field', u'hash/dc', u'if', u'implies',
- u'import', u'include', u'include-at/relative-to',
- u'include-at/relative-to/reader', u'include/reader', u'inherit',
- u'inherit-field', u'inherit/inner', u'inherit/super', u'init',
- u'init-depend', u'init-field', u'init-rest', u'inner', u'inspect',
- u'instantiate', u'interface', u'interface*', u'invariant-assertion',
- u'invoke-unit', u'invoke-unit/infer', u'lambda', u'lazy', u'let', u'let*',
- u'let*-values', u'let-syntax', u'let-syntaxes', u'let-values', u'let/cc',
- u'let/ec', u'letrec', u'letrec-syntax', u'letrec-syntaxes',
- u'letrec-syntaxes+values', u'letrec-values', u'lib', u'link', u'local',
- u'local-require', u'log-debug', u'log-error', u'log-fatal', u'log-info',
- u'log-warning', u'match', u'match*', u'match*/derived', u'match-define',
- u'match-define-values', u'match-lambda', u'match-lambda*',
- u'match-lambda**', u'match-let', u'match-let*', u'match-let*-values',
- u'match-let-values', u'match-letrec', u'match-letrec-values',
- u'match/derived', u'match/values', u'member-name-key', u'mixin', u'module',
- u'module*', u'module+', u'nand', u'new', u'nor', u'object-contract',
- u'object/c', u'only', u'only-in', u'only-meta-in', u'open', u'opt/c', u'or',
- u'overment', u'overment*', u'override', u'override*', u'override-final',
- u'override-final*', u'parameterize', u'parameterize*',
- u'parameterize-break', u'parametric->/c', u'place', u'place*',
- u'place/context', u'planet', u'prefix', u'prefix-in', u'prefix-out',
- u'private', u'private*', u'prompt-tag/c', u'protect-out', u'provide',
- u'provide-signature-elements', u'provide/contract', u'public', u'public*',
- u'public-final', u'public-final*', u'pubment', u'pubment*', u'quasiquote',
- u'quasisyntax', u'quasisyntax/loc', u'quote', u'quote-syntax',
- u'quote-syntax/prune', u'recontract-out', u'recursive-contract',
- u'relative-in', u'rename', u'rename-in', u'rename-inner', u'rename-out',
- u'rename-super', u'require', u'send', u'send*', u'send+', u'send-generic',
- u'send/apply', u'send/keyword-apply', u'set!', u'set!-values',
- u'set-field!', u'shared', u'stream', u'stream*', u'stream-cons', u'struct',
- u'struct*', u'struct-copy', u'struct-field-index', u'struct-out',
- u'struct/c', u'struct/ctc', u'struct/dc', u'submod', u'super',
- u'super-instantiate', u'super-make-object', u'super-new', u'syntax',
- u'syntax-case', u'syntax-case*', u'syntax-id-rules', u'syntax-rules',
- u'syntax/loc', u'tag', u'this', u'this%', u'thunk', u'thunk*', u'time',
- u'unconstrained-domain->', u'unit', u'unit-from-context', u'unit/c',
- u'unit/new-import-export', u'unit/s', u'unless', u'unquote',
- u'unquote-splicing', u'unsyntax', u'unsyntax-splicing', u'values/drop',
- u'when', u'with-continuation-mark', u'with-contract',
- u'with-contract-continuation-mark', u'with-handlers', u'with-handlers*',
- u'with-method', u'with-syntax', u'λ'
+ '#%app', '#%datum', '#%declare', '#%expression', '#%module-begin',
+ '#%plain-app', '#%plain-lambda', '#%plain-module-begin',
+ '#%printing-module-begin', '#%provide', '#%require',
+ '#%stratified-body', '#%top', '#%top-interaction',
+ '#%variable-reference', '->', '->*', '->*m', '->d', '->dm', '->i',
+ '->m', '...', ':do-in', '==', '=>', '_', 'absent', 'abstract',
+ 'all-defined-out', 'all-from-out', 'and', 'any', 'augment', 'augment*',
+ 'augment-final', 'augment-final*', 'augride', 'augride*', 'begin',
+ 'begin-for-syntax', 'begin0', 'case', 'case->', 'case->m',
+ 'case-lambda', 'class', 'class*', 'class-field-accessor',
+ 'class-field-mutator', 'class/c', 'class/derived', 'combine-in',
+ 'combine-out', 'command-line', 'compound-unit', 'compound-unit/infer',
+ 'cond', 'cons/dc', 'contract', 'contract-out', 'contract-struct',
+ 'contracted', 'define', 'define-compound-unit',
+ 'define-compound-unit/infer', 'define-contract-struct',
+ 'define-custom-hash-types', 'define-custom-set-types',
+ 'define-for-syntax', 'define-local-member-name', 'define-logger',
+ 'define-match-expander', 'define-member-name',
+ 'define-module-boundary-contract', 'define-namespace-anchor',
+ 'define-opt/c', 'define-sequence-syntax', 'define-serializable-class',
+ 'define-serializable-class*', 'define-signature',
+ 'define-signature-form', 'define-struct', 'define-struct/contract',
+ 'define-struct/derived', 'define-syntax', 'define-syntax-rule',
+ 'define-syntaxes', 'define-unit', 'define-unit-binding',
+ 'define-unit-from-context', 'define-unit/contract',
+ 'define-unit/new-import-export', 'define-unit/s', 'define-values',
+ 'define-values-for-export', 'define-values-for-syntax',
+ 'define-values/invoke-unit', 'define-values/invoke-unit/infer',
+ 'define/augment', 'define/augment-final', 'define/augride',
+ 'define/contract', 'define/final-prop', 'define/match',
+ 'define/overment', 'define/override', 'define/override-final',
+ 'define/private', 'define/public', 'define/public-final',
+ 'define/pubment', 'define/subexpression-pos-prop',
+ 'define/subexpression-pos-prop/name', 'delay', 'delay/idle',
+ 'delay/name', 'delay/strict', 'delay/sync', 'delay/thread', 'do',
+ 'else', 'except', 'except-in', 'except-out', 'export', 'extends',
+ 'failure-cont', 'false', 'false/c', 'field', 'field-bound?', 'file',
+ 'flat-murec-contract', 'flat-rec-contract', 'for', 'for*', 'for*/and',
+ 'for*/async', 'for*/first', 'for*/fold', 'for*/fold/derived',
+ 'for*/hash', 'for*/hasheq', 'for*/hasheqv', 'for*/last', 'for*/list',
+ 'for*/lists', 'for*/mutable-set', 'for*/mutable-seteq',
+ 'for*/mutable-seteqv', 'for*/or', 'for*/product', 'for*/set',
+ 'for*/seteq', 'for*/seteqv', 'for*/stream', 'for*/sum', 'for*/vector',
+ 'for*/weak-set', 'for*/weak-seteq', 'for*/weak-seteqv', 'for-label',
+ 'for-meta', 'for-syntax', 'for-template', 'for/and', 'for/async',
+ 'for/first', 'for/fold', 'for/fold/derived', 'for/hash', 'for/hasheq',
+ 'for/hasheqv', 'for/last', 'for/list', 'for/lists', 'for/mutable-set',
+ 'for/mutable-seteq', 'for/mutable-seteqv', 'for/or', 'for/product',
+ 'for/set', 'for/seteq', 'for/seteqv', 'for/stream', 'for/sum',
+ 'for/vector', 'for/weak-set', 'for/weak-seteq', 'for/weak-seteqv',
+ 'gen:custom-write', 'gen:dict', 'gen:equal+hash', 'gen:set',
+ 'gen:stream', 'generic', 'get-field', 'hash/dc', 'if', 'implies',
+ 'import', 'include', 'include-at/relative-to',
+ 'include-at/relative-to/reader', 'include/reader', 'inherit',
+ 'inherit-field', 'inherit/inner', 'inherit/super', 'init',
+ 'init-depend', 'init-field', 'init-rest', 'inner', 'inspect',
+ 'instantiate', 'interface', 'interface*', 'invariant-assertion',
+ 'invoke-unit', 'invoke-unit/infer', 'lambda', 'lazy', 'let', 'let*',
+ 'let*-values', 'let-syntax', 'let-syntaxes', 'let-values', 'let/cc',
+ 'let/ec', 'letrec', 'letrec-syntax', 'letrec-syntaxes',
+ 'letrec-syntaxes+values', 'letrec-values', 'lib', 'link', 'local',
+ 'local-require', 'log-debug', 'log-error', 'log-fatal', 'log-info',
+ 'log-warning', 'match', 'match*', 'match*/derived', 'match-define',
+ 'match-define-values', 'match-lambda', 'match-lambda*',
+ 'match-lambda**', 'match-let', 'match-let*', 'match-let*-values',
+ 'match-let-values', 'match-letrec', 'match-letrec-values',
+ 'match/derived', 'match/values', 'member-name-key', 'mixin', 'module',
+ 'module*', 'module+', 'nand', 'new', 'nor', 'object-contract',
+ 'object/c', 'only', 'only-in', 'only-meta-in', 'open', 'opt/c', 'or',
+ 'overment', 'overment*', 'override', 'override*', 'override-final',
+ 'override-final*', 'parameterize', 'parameterize*',
+ 'parameterize-break', 'parametric->/c', 'place', 'place*',
+ 'place/context', 'planet', 'prefix', 'prefix-in', 'prefix-out',
+ 'private', 'private*', 'prompt-tag/c', 'protect-out', 'provide',
+ 'provide-signature-elements', 'provide/contract', 'public', 'public*',
+ 'public-final', 'public-final*', 'pubment', 'pubment*', 'quasiquote',
+ 'quasisyntax', 'quasisyntax/loc', 'quote', 'quote-syntax',
+ 'quote-syntax/prune', 'recontract-out', 'recursive-contract',
+ 'relative-in', 'rename', 'rename-in', 'rename-inner', 'rename-out',
+ 'rename-super', 'require', 'send', 'send*', 'send+', 'send-generic',
+ 'send/apply', 'send/keyword-apply', 'set!', 'set!-values',
+ 'set-field!', 'shared', 'stream', 'stream*', 'stream-cons', 'struct',
+ 'struct*', 'struct-copy', 'struct-field-index', 'struct-out',
+ 'struct/c', 'struct/ctc', 'struct/dc', 'submod', 'super',
+ 'super-instantiate', 'super-make-object', 'super-new', 'syntax',
+ 'syntax-case', 'syntax-case*', 'syntax-id-rules', 'syntax-rules',
+ 'syntax/loc', 'tag', 'this', 'this%', 'thunk', 'thunk*', 'time',
+ 'unconstrained-domain->', 'unit', 'unit-from-context', 'unit/c',
+ 'unit/new-import-export', 'unit/s', 'unless', 'unquote',
+ 'unquote-splicing', 'unsyntax', 'unsyntax-splicing', 'values/drop',
+ 'when', 'with-continuation-mark', 'with-contract',
+ 'with-contract-continuation-mark', 'with-handlers', 'with-handlers*',
+ 'with-method', 'with-syntax', 'λ'
)
# Generated by example.rkt
_builtins = (
- u'*', u'*list/c', u'+', u'-', u'/', u'<', u'</c', u'<=', u'<=/c', u'=', u'=/c',
- u'>', u'>/c', u'>=', u'>=/c', u'abort-current-continuation', u'abs',
- u'absolute-path?', u'acos', u'add-between', u'add1', u'alarm-evt',
- u'always-evt', u'and/c', u'andmap', u'angle', u'any/c', u'append', u'append*',
- u'append-map', u'apply', u'argmax', u'argmin', u'arithmetic-shift',
- u'arity-at-least', u'arity-at-least-value', u'arity-at-least?',
- u'arity-checking-wrapper', u'arity-includes?', u'arity=?',
- u'arrow-contract-info', u'arrow-contract-info-accepts-arglist',
- u'arrow-contract-info-chaperone-procedure',
- u'arrow-contract-info-check-first-order', u'arrow-contract-info?',
- u'asin', u'assf', u'assoc', u'assq', u'assv', u'atan',
- u'bad-number-of-results', u'banner', u'base->-doms/c', u'base->-rngs/c',
- u'base->?', u'between/c', u'bitwise-and', u'bitwise-bit-field',
- u'bitwise-bit-set?', u'bitwise-ior', u'bitwise-not', u'bitwise-xor',
- u'blame-add-car-context', u'blame-add-cdr-context', u'blame-add-context',
- u'blame-add-missing-party', u'blame-add-nth-arg-context',
- u'blame-add-range-context', u'blame-add-unknown-context',
- u'blame-context', u'blame-contract', u'blame-fmt->-string',
- u'blame-missing-party?', u'blame-negative', u'blame-original?',
- u'blame-positive', u'blame-replace-negative', u'blame-source',
- u'blame-swap', u'blame-swapped?', u'blame-update', u'blame-value',
- u'blame?', u'boolean=?', u'boolean?', u'bound-identifier=?', u'box',
- u'box-cas!', u'box-immutable', u'box-immutable/c', u'box/c', u'box?',
- u'break-enabled', u'break-parameterization?', u'break-thread',
- u'build-chaperone-contract-property', u'build-compound-type-name',
- u'build-contract-property', u'build-flat-contract-property',
- u'build-list', u'build-path', u'build-path/convention-type',
- u'build-string', u'build-vector', u'byte-pregexp', u'byte-pregexp?',
- u'byte-ready?', u'byte-regexp', u'byte-regexp?', u'byte?', u'bytes',
- u'bytes->immutable-bytes', u'bytes->list', u'bytes->path',
- u'bytes->path-element', u'bytes->string/latin-1', u'bytes->string/locale',
- u'bytes->string/utf-8', u'bytes-append', u'bytes-append*',
- u'bytes-close-converter', u'bytes-convert', u'bytes-convert-end',
- u'bytes-converter?', u'bytes-copy', u'bytes-copy!',
- u'bytes-environment-variable-name?', u'bytes-fill!', u'bytes-join',
- u'bytes-length', u'bytes-no-nuls?', u'bytes-open-converter', u'bytes-ref',
- u'bytes-set!', u'bytes-utf-8-index', u'bytes-utf-8-length',
- u'bytes-utf-8-ref', u'bytes<?', u'bytes=?', u'bytes>?', u'bytes?', u'caaaar',
- u'caaadr', u'caaar', u'caadar', u'caaddr', u'caadr', u'caar', u'cadaar',
- u'cadadr', u'cadar', u'caddar', u'cadddr', u'caddr', u'cadr',
- u'call-in-nested-thread', u'call-with-atomic-output-file',
- u'call-with-break-parameterization',
- u'call-with-composable-continuation', u'call-with-continuation-barrier',
- u'call-with-continuation-prompt', u'call-with-current-continuation',
- u'call-with-default-reading-parameterization',
- u'call-with-escape-continuation', u'call-with-exception-handler',
- u'call-with-file-lock/timeout', u'call-with-immediate-continuation-mark',
- u'call-with-input-bytes', u'call-with-input-file',
- u'call-with-input-file*', u'call-with-input-string',
- u'call-with-output-bytes', u'call-with-output-file',
- u'call-with-output-file*', u'call-with-output-string',
- u'call-with-parameterization', u'call-with-semaphore',
- u'call-with-semaphore/enable-break', u'call-with-values', u'call/cc',
- u'call/ec', u'car', u'cartesian-product', u'cdaaar', u'cdaadr', u'cdaar',
- u'cdadar', u'cdaddr', u'cdadr', u'cdar', u'cddaar', u'cddadr', u'cddar',
- u'cdddar', u'cddddr', u'cdddr', u'cddr', u'cdr', u'ceiling', u'channel-get',
- u'channel-put', u'channel-put-evt', u'channel-put-evt?',
- u'channel-try-get', u'channel/c', u'channel?', u'chaperone-box',
- u'chaperone-channel', u'chaperone-continuation-mark-key',
- u'chaperone-contract-property?', u'chaperone-contract?', u'chaperone-evt',
- u'chaperone-hash', u'chaperone-hash-set', u'chaperone-of?',
- u'chaperone-procedure', u'chaperone-procedure*', u'chaperone-prompt-tag',
- u'chaperone-struct', u'chaperone-struct-type', u'chaperone-vector',
- u'chaperone?', u'char->integer', u'char-alphabetic?', u'char-blank?',
- u'char-ci<=?', u'char-ci<?', u'char-ci=?', u'char-ci>=?', u'char-ci>?',
- u'char-downcase', u'char-foldcase', u'char-general-category',
- u'char-graphic?', u'char-in', u'char-in/c', u'char-iso-control?',
- u'char-lower-case?', u'char-numeric?', u'char-punctuation?',
- u'char-ready?', u'char-symbolic?', u'char-title-case?', u'char-titlecase',
- u'char-upcase', u'char-upper-case?', u'char-utf-8-length',
- u'char-whitespace?', u'char<=?', u'char<?', u'char=?', u'char>=?', u'char>?',
- u'char?', u'check-duplicate-identifier', u'check-duplicates',
- u'checked-procedure-check-and-extract', u'choice-evt',
- u'class->interface', u'class-info', u'class-seal', u'class-unseal',
- u'class?', u'cleanse-path', u'close-input-port', u'close-output-port',
- u'coerce-chaperone-contract', u'coerce-chaperone-contracts',
- u'coerce-contract', u'coerce-contract/f', u'coerce-contracts',
- u'coerce-flat-contract', u'coerce-flat-contracts', u'collect-garbage',
- u'collection-file-path', u'collection-path', u'combinations', u'compile',
- u'compile-allow-set!-undefined', u'compile-context-preservation-enabled',
- u'compile-enforce-module-constants', u'compile-syntax',
- u'compiled-expression-recompile', u'compiled-expression?',
- u'compiled-module-expression?', u'complete-path?', u'complex?', u'compose',
- u'compose1', u'conjoin', u'conjugate', u'cons', u'cons/c', u'cons?', u'const',
- u'continuation-mark-key/c', u'continuation-mark-key?',
- u'continuation-mark-set->context', u'continuation-mark-set->list',
- u'continuation-mark-set->list*', u'continuation-mark-set-first',
- u'continuation-mark-set?', u'continuation-marks',
- u'continuation-prompt-available?', u'continuation-prompt-tag?',
- u'continuation?', u'contract-continuation-mark-key',
- u'contract-custom-write-property-proc', u'contract-exercise',
- u'contract-first-order', u'contract-first-order-passes?',
- u'contract-late-neg-projection', u'contract-name', u'contract-proc',
- u'contract-projection', u'contract-property?',
- u'contract-random-generate', u'contract-random-generate-fail',
- u'contract-random-generate-fail?',
- u'contract-random-generate-get-current-environment',
- u'contract-random-generate-stash', u'contract-random-generate/choose',
- u'contract-stronger?', u'contract-struct-exercise',
- u'contract-struct-generate', u'contract-struct-late-neg-projection',
- u'contract-struct-list-contract?', u'contract-val-first-projection',
- u'contract?', u'convert-stream', u'copy-directory/files', u'copy-file',
- u'copy-port', u'cos', u'cosh', u'count', u'current-blame-format',
- u'current-break-parameterization', u'current-code-inspector',
- u'current-command-line-arguments', u'current-compile',
- u'current-compiled-file-roots', u'current-continuation-marks',
- u'current-contract-region', u'current-custodian', u'current-directory',
- u'current-directory-for-user', u'current-drive',
- u'current-environment-variables', u'current-error-port', u'current-eval',
- u'current-evt-pseudo-random-generator',
- u'current-force-delete-permissions', u'current-future',
- u'current-gc-milliseconds', u'current-get-interaction-input-port',
- u'current-inexact-milliseconds', u'current-input-port',
- u'current-inspector', u'current-library-collection-links',
- u'current-library-collection-paths', u'current-load',
- u'current-load-extension', u'current-load-relative-directory',
- u'current-load/use-compiled', u'current-locale', u'current-logger',
- u'current-memory-use', u'current-milliseconds',
- u'current-module-declare-name', u'current-module-declare-source',
- u'current-module-name-resolver', u'current-module-path-for-load',
- u'current-namespace', u'current-output-port', u'current-parameterization',
- u'current-plumber', u'current-preserved-thread-cell-values',
- u'current-print', u'current-process-milliseconds', u'current-prompt-read',
- u'current-pseudo-random-generator', u'current-read-interaction',
- u'current-reader-guard', u'current-readtable', u'current-seconds',
- u'current-security-guard', u'current-subprocess-custodian-mode',
- u'current-thread', u'current-thread-group',
- u'current-thread-initial-stack-size',
- u'current-write-relative-directory', u'curry', u'curryr',
- u'custodian-box-value', u'custodian-box?', u'custodian-limit-memory',
- u'custodian-managed-list', u'custodian-memory-accounting-available?',
- u'custodian-require-memory', u'custodian-shutdown-all', u'custodian?',
- u'custom-print-quotable-accessor', u'custom-print-quotable?',
- u'custom-write-accessor', u'custom-write-property-proc', u'custom-write?',
- u'date', u'date*', u'date*-nanosecond', u'date*-time-zone-name', u'date*?',
- u'date-day', u'date-dst?', u'date-hour', u'date-minute', u'date-month',
- u'date-second', u'date-time-zone-offset', u'date-week-day', u'date-year',
- u'date-year-day', u'date?', u'datum->syntax', u'datum-intern-literal',
- u'default-continuation-prompt-tag', u'degrees->radians',
- u'delete-directory', u'delete-directory/files', u'delete-file',
- u'denominator', u'dict->list', u'dict-can-functional-set?',
- u'dict-can-remove-keys?', u'dict-clear', u'dict-clear!', u'dict-copy',
- u'dict-count', u'dict-empty?', u'dict-for-each', u'dict-has-key?',
- u'dict-implements/c', u'dict-implements?', u'dict-iter-contract',
- u'dict-iterate-first', u'dict-iterate-key', u'dict-iterate-next',
- u'dict-iterate-value', u'dict-key-contract', u'dict-keys', u'dict-map',
- u'dict-mutable?', u'dict-ref', u'dict-ref!', u'dict-remove',
- u'dict-remove!', u'dict-set', u'dict-set!', u'dict-set*', u'dict-set*!',
- u'dict-update', u'dict-update!', u'dict-value-contract', u'dict-values',
- u'dict?', u'directory-exists?', u'directory-list', u'disjoin', u'display',
- u'display-lines', u'display-lines-to-file', u'display-to-file',
- u'displayln', u'double-flonum?', u'drop', u'drop-common-prefix',
- u'drop-right', u'dropf', u'dropf-right', u'dump-memory-stats',
- u'dup-input-port', u'dup-output-port', u'dynamic->*', u'dynamic-get-field',
- u'dynamic-object/c', u'dynamic-place', u'dynamic-place*',
- u'dynamic-require', u'dynamic-require-for-syntax', u'dynamic-send',
- u'dynamic-set-field!', u'dynamic-wind', u'eighth', u'empty',
- u'empty-sequence', u'empty-stream', u'empty?',
- u'environment-variables-copy', u'environment-variables-names',
- u'environment-variables-ref', u'environment-variables-set!',
- u'environment-variables?', u'eof', u'eof-evt', u'eof-object?',
- u'ephemeron-value', u'ephemeron?', u'eprintf', u'eq-contract-val',
- u'eq-contract?', u'eq-hash-code', u'eq?', u'equal-contract-val',
- u'equal-contract?', u'equal-hash-code', u'equal-secondary-hash-code',
- u'equal<%>', u'equal?', u'equal?/recur', u'eqv-hash-code', u'eqv?', u'error',
- u'error-display-handler', u'error-escape-handler',
- u'error-print-context-length', u'error-print-source-location',
- u'error-print-width', u'error-value->string-handler', u'eval',
- u'eval-jit-enabled', u'eval-syntax', u'even?', u'evt/c', u'evt?',
- u'exact->inexact', u'exact-ceiling', u'exact-floor', u'exact-integer?',
- u'exact-nonnegative-integer?', u'exact-positive-integer?', u'exact-round',
- u'exact-truncate', u'exact?', u'executable-yield-handler', u'exit',
- u'exit-handler', u'exn', u'exn-continuation-marks', u'exn-message',
- u'exn:break', u'exn:break-continuation', u'exn:break:hang-up',
- u'exn:break:hang-up?', u'exn:break:terminate', u'exn:break:terminate?',
- u'exn:break?', u'exn:fail', u'exn:fail:contract',
- u'exn:fail:contract:arity', u'exn:fail:contract:arity?',
- u'exn:fail:contract:blame', u'exn:fail:contract:blame-object',
- u'exn:fail:contract:blame?', u'exn:fail:contract:continuation',
- u'exn:fail:contract:continuation?', u'exn:fail:contract:divide-by-zero',
- u'exn:fail:contract:divide-by-zero?',
- u'exn:fail:contract:non-fixnum-result',
- u'exn:fail:contract:non-fixnum-result?', u'exn:fail:contract:variable',
- u'exn:fail:contract:variable-id', u'exn:fail:contract:variable?',
- u'exn:fail:contract?', u'exn:fail:filesystem',
- u'exn:fail:filesystem:errno', u'exn:fail:filesystem:errno-errno',
- u'exn:fail:filesystem:errno?', u'exn:fail:filesystem:exists',
- u'exn:fail:filesystem:exists?', u'exn:fail:filesystem:missing-module',
- u'exn:fail:filesystem:missing-module-path',
- u'exn:fail:filesystem:missing-module?', u'exn:fail:filesystem:version',
- u'exn:fail:filesystem:version?', u'exn:fail:filesystem?',
- u'exn:fail:network', u'exn:fail:network:errno',
- u'exn:fail:network:errno-errno', u'exn:fail:network:errno?',
- u'exn:fail:network?', u'exn:fail:object', u'exn:fail:object?',
- u'exn:fail:out-of-memory', u'exn:fail:out-of-memory?', u'exn:fail:read',
- u'exn:fail:read-srclocs', u'exn:fail:read:eof', u'exn:fail:read:eof?',
- u'exn:fail:read:non-char', u'exn:fail:read:non-char?', u'exn:fail:read?',
- u'exn:fail:syntax', u'exn:fail:syntax-exprs',
- u'exn:fail:syntax:missing-module',
- u'exn:fail:syntax:missing-module-path',
- u'exn:fail:syntax:missing-module?', u'exn:fail:syntax:unbound',
- u'exn:fail:syntax:unbound?', u'exn:fail:syntax?', u'exn:fail:unsupported',
- u'exn:fail:unsupported?', u'exn:fail:user', u'exn:fail:user?',
- u'exn:fail?', u'exn:misc:match?', u'exn:missing-module-accessor',
- u'exn:missing-module?', u'exn:srclocs-accessor', u'exn:srclocs?', u'exn?',
- u'exp', u'expand', u'expand-once', u'expand-syntax', u'expand-syntax-once',
- u'expand-syntax-to-top-form', u'expand-to-top-form', u'expand-user-path',
- u'explode-path', u'expt', u'externalizable<%>', u'failure-result/c',
- u'false?', u'field-names', u'fifth', u'file->bytes', u'file->bytes-lines',
- u'file->lines', u'file->list', u'file->string', u'file->value',
- u'file-exists?', u'file-name-from-path', u'file-or-directory-identity',
- u'file-or-directory-modify-seconds', u'file-or-directory-permissions',
- u'file-position', u'file-position*', u'file-size',
- u'file-stream-buffer-mode', u'file-stream-port?', u'file-truncate',
- u'filename-extension', u'filesystem-change-evt',
- u'filesystem-change-evt-cancel', u'filesystem-change-evt?',
- u'filesystem-root-list', u'filter', u'filter-map', u'filter-not',
- u'filter-read-input-port', u'find-executable-path', u'find-files',
- u'find-library-collection-links', u'find-library-collection-paths',
- u'find-relative-path', u'find-system-path', u'findf', u'first',
- u'first-or/c', u'fixnum?', u'flat-contract', u'flat-contract-predicate',
- u'flat-contract-property?', u'flat-contract?', u'flat-named-contract',
- u'flatten', u'floating-point-bytes->real', u'flonum?', u'floor',
- u'flush-output', u'fold-files', u'foldl', u'foldr', u'for-each', u'force',
- u'format', u'fourth', u'fprintf', u'free-identifier=?',
- u'free-label-identifier=?', u'free-template-identifier=?',
- u'free-transformer-identifier=?', u'fsemaphore-count', u'fsemaphore-post',
- u'fsemaphore-try-wait?', u'fsemaphore-wait', u'fsemaphore?', u'future',
- u'future?', u'futures-enabled?', u'gcd', u'generate-member-key',
- u'generate-temporaries', u'generic-set?', u'generic?', u'gensym',
- u'get-output-bytes', u'get-output-string', u'get-preference',
- u'get/build-late-neg-projection', u'get/build-val-first-projection',
- u'getenv', u'global-port-print-handler', u'group-by', u'group-execute-bit',
- u'group-read-bit', u'group-write-bit', u'guard-evt', u'handle-evt',
- u'handle-evt?', u'has-blame?', u'has-contract?', u'hash', u'hash->list',
- u'hash-clear', u'hash-clear!', u'hash-copy', u'hash-copy-clear',
- u'hash-count', u'hash-empty?', u'hash-eq?', u'hash-equal?', u'hash-eqv?',
- u'hash-for-each', u'hash-has-key?', u'hash-iterate-first',
- u'hash-iterate-key', u'hash-iterate-key+value', u'hash-iterate-next',
- u'hash-iterate-pair', u'hash-iterate-value', u'hash-keys', u'hash-map',
- u'hash-placeholder?', u'hash-ref', u'hash-ref!', u'hash-remove',
- u'hash-remove!', u'hash-set', u'hash-set!', u'hash-set*', u'hash-set*!',
- u'hash-update', u'hash-update!', u'hash-values', u'hash-weak?', u'hash/c',
- u'hash?', u'hasheq', u'hasheqv', u'identifier-binding',
- u'identifier-binding-symbol', u'identifier-label-binding',
- u'identifier-prune-lexical-context',
- u'identifier-prune-to-source-module',
- u'identifier-remove-from-definition-context',
- u'identifier-template-binding', u'identifier-transformer-binding',
- u'identifier?', u'identity', u'if/c', u'imag-part', u'immutable?',
- u'impersonate-box', u'impersonate-channel',
- u'impersonate-continuation-mark-key', u'impersonate-hash',
- u'impersonate-hash-set', u'impersonate-procedure',
- u'impersonate-procedure*', u'impersonate-prompt-tag',
- u'impersonate-struct', u'impersonate-vector', u'impersonator-contract?',
- u'impersonator-ephemeron', u'impersonator-of?',
- u'impersonator-prop:application-mark', u'impersonator-prop:blame',
- u'impersonator-prop:contracted',
- u'impersonator-property-accessor-procedure?', u'impersonator-property?',
- u'impersonator?', u'implementation?', u'implementation?/c', u'in-bytes',
- u'in-bytes-lines', u'in-combinations', u'in-cycle', u'in-dict',
- u'in-dict-keys', u'in-dict-pairs', u'in-dict-values', u'in-directory',
- u'in-hash', u'in-hash-keys', u'in-hash-pairs', u'in-hash-values',
- u'in-immutable-hash', u'in-immutable-hash-keys',
- u'in-immutable-hash-pairs', u'in-immutable-hash-values',
- u'in-immutable-set', u'in-indexed', u'in-input-port-bytes',
- u'in-input-port-chars', u'in-lines', u'in-list', u'in-mlist',
- u'in-mutable-hash', u'in-mutable-hash-keys', u'in-mutable-hash-pairs',
- u'in-mutable-hash-values', u'in-mutable-set', u'in-naturals',
- u'in-parallel', u'in-permutations', u'in-port', u'in-producer', u'in-range',
- u'in-sequences', u'in-set', u'in-slice', u'in-stream', u'in-string',
- u'in-syntax', u'in-value', u'in-values*-sequence', u'in-values-sequence',
- u'in-vector', u'in-weak-hash', u'in-weak-hash-keys', u'in-weak-hash-pairs',
- u'in-weak-hash-values', u'in-weak-set', u'inexact->exact',
- u'inexact-real?', u'inexact?', u'infinite?', u'input-port-append',
- u'input-port?', u'inspector?', u'instanceof/c', u'integer->char',
- u'integer->integer-bytes', u'integer-bytes->integer', u'integer-in',
- u'integer-length', u'integer-sqrt', u'integer-sqrt/remainder', u'integer?',
- u'interface->method-names', u'interface-extension?', u'interface?',
- u'internal-definition-context-binding-identifiers',
- u'internal-definition-context-introduce',
- u'internal-definition-context-seal', u'internal-definition-context?',
- u'is-a?', u'is-a?/c', u'keyword->string', u'keyword-apply', u'keyword<?',
- u'keyword?', u'keywords-match', u'kill-thread', u'last', u'last-pair',
- u'lcm', u'length', u'liberal-define-context?', u'link-exists?', u'list',
- u'list*', u'list*of', u'list->bytes', u'list->mutable-set',
- u'list->mutable-seteq', u'list->mutable-seteqv', u'list->set',
- u'list->seteq', u'list->seteqv', u'list->string', u'list->vector',
- u'list->weak-set', u'list->weak-seteq', u'list->weak-seteqv',
- u'list-contract?', u'list-prefix?', u'list-ref', u'list-set', u'list-tail',
- u'list-update', u'list/c', u'list?', u'listen-port-number?', u'listof',
- u'load', u'load-extension', u'load-on-demand-enabled', u'load-relative',
- u'load-relative-extension', u'load/cd', u'load/use-compiled',
- u'local-expand', u'local-expand/capture-lifts',
- u'local-transformer-expand', u'local-transformer-expand/capture-lifts',
- u'locale-string-encoding', u'log', u'log-all-levels', u'log-level-evt',
- u'log-level?', u'log-max-level', u'log-message', u'log-receiver?',
- u'logger-name', u'logger?', u'magnitude', u'make-arity-at-least',
- u'make-base-empty-namespace', u'make-base-namespace', u'make-bytes',
- u'make-channel', u'make-chaperone-contract',
- u'make-continuation-mark-key', u'make-continuation-prompt-tag',
- u'make-contract', u'make-custodian', u'make-custodian-box',
- u'make-custom-hash', u'make-custom-hash-types', u'make-custom-set',
- u'make-custom-set-types', u'make-date', u'make-date*',
- u'make-derived-parameter', u'make-directory', u'make-directory*',
- u'make-do-sequence', u'make-empty-namespace',
- u'make-environment-variables', u'make-ephemeron', u'make-exn',
- u'make-exn:break', u'make-exn:break:hang-up', u'make-exn:break:terminate',
- u'make-exn:fail', u'make-exn:fail:contract',
- u'make-exn:fail:contract:arity', u'make-exn:fail:contract:blame',
- u'make-exn:fail:contract:continuation',
- u'make-exn:fail:contract:divide-by-zero',
- u'make-exn:fail:contract:non-fixnum-result',
- u'make-exn:fail:contract:variable', u'make-exn:fail:filesystem',
- u'make-exn:fail:filesystem:errno', u'make-exn:fail:filesystem:exists',
- u'make-exn:fail:filesystem:missing-module',
- u'make-exn:fail:filesystem:version', u'make-exn:fail:network',
- u'make-exn:fail:network:errno', u'make-exn:fail:object',
- u'make-exn:fail:out-of-memory', u'make-exn:fail:read',
- u'make-exn:fail:read:eof', u'make-exn:fail:read:non-char',
- u'make-exn:fail:syntax', u'make-exn:fail:syntax:missing-module',
- u'make-exn:fail:syntax:unbound', u'make-exn:fail:unsupported',
- u'make-exn:fail:user', u'make-file-or-directory-link',
- u'make-flat-contract', u'make-fsemaphore', u'make-generic',
- u'make-handle-get-preference-locked', u'make-hash',
- u'make-hash-placeholder', u'make-hasheq', u'make-hasheq-placeholder',
- u'make-hasheqv', u'make-hasheqv-placeholder',
- u'make-immutable-custom-hash', u'make-immutable-hash',
- u'make-immutable-hasheq', u'make-immutable-hasheqv',
- u'make-impersonator-property', u'make-input-port',
- u'make-input-port/read-to-peek', u'make-inspector',
- u'make-keyword-procedure', u'make-known-char-range-list',
- u'make-limited-input-port', u'make-list', u'make-lock-file-name',
- u'make-log-receiver', u'make-logger', u'make-mixin-contract',
- u'make-mutable-custom-set', u'make-none/c', u'make-object',
- u'make-output-port', u'make-parameter', u'make-parent-directory*',
- u'make-phantom-bytes', u'make-pipe', u'make-pipe-with-specials',
- u'make-placeholder', u'make-plumber', u'make-polar', u'make-prefab-struct',
- u'make-primitive-class', u'make-proj-contract',
- u'make-pseudo-random-generator', u'make-reader-graph', u'make-readtable',
- u'make-rectangular', u'make-rename-transformer',
- u'make-resolved-module-path', u'make-security-guard', u'make-semaphore',
- u'make-set!-transformer', u'make-shared-bytes', u'make-sibling-inspector',
- u'make-special-comment', u'make-srcloc', u'make-string',
- u'make-struct-field-accessor', u'make-struct-field-mutator',
- u'make-struct-type', u'make-struct-type-property',
- u'make-syntax-delta-introducer', u'make-syntax-introducer',
- u'make-temporary-file', u'make-tentative-pretty-print-output-port',
- u'make-thread-cell', u'make-thread-group', u'make-vector',
- u'make-weak-box', u'make-weak-custom-hash', u'make-weak-custom-set',
- u'make-weak-hash', u'make-weak-hasheq', u'make-weak-hasheqv',
- u'make-will-executor', u'map', u'match-equality-test',
- u'matches-arity-exactly?', u'max', u'mcar', u'mcdr', u'mcons', u'member',
- u'member-name-key-hash-code', u'member-name-key=?', u'member-name-key?',
- u'memf', u'memq', u'memv', u'merge-input', u'method-in-interface?', u'min',
- u'mixin-contract', u'module->exports', u'module->imports',
- u'module->language-info', u'module->namespace',
- u'module-compiled-cross-phase-persistent?', u'module-compiled-exports',
- u'module-compiled-imports', u'module-compiled-language-info',
- u'module-compiled-name', u'module-compiled-submodules',
- u'module-declared?', u'module-path-index-join',
- u'module-path-index-resolve', u'module-path-index-split',
- u'module-path-index-submodule', u'module-path-index?', u'module-path?',
- u'module-predefined?', u'module-provide-protected?', u'modulo', u'mpair?',
- u'mutable-set', u'mutable-seteq', u'mutable-seteqv', u'n->th',
- u'nack-guard-evt', u'namespace-anchor->empty-namespace',
- u'namespace-anchor->namespace', u'namespace-anchor?',
- u'namespace-attach-module', u'namespace-attach-module-declaration',
- u'namespace-base-phase', u'namespace-mapped-symbols',
- u'namespace-module-identifier', u'namespace-module-registry',
- u'namespace-require', u'namespace-require/constant',
- u'namespace-require/copy', u'namespace-require/expansion-time',
- u'namespace-set-variable-value!', u'namespace-symbol->identifier',
- u'namespace-syntax-introduce', u'namespace-undefine-variable!',
- u'namespace-unprotect-module', u'namespace-variable-value', u'namespace?',
- u'nan?', u'natural-number/c', u'negate', u'negative?', u'never-evt',
- u'new-∀/c', u'new-∃/c', u'newline', u'ninth', u'non-empty-listof',
- u'non-empty-string?', u'none/c', u'normal-case-path', u'normalize-arity',
- u'normalize-path', u'normalized-arity?', u'not', u'not/c', u'null', u'null?',
- u'number->string', u'number?', u'numerator', u'object%', u'object->vector',
- u'object-info', u'object-interface', u'object-method-arity-includes?',
- u'object-name', u'object-or-false=?', u'object=?', u'object?', u'odd?',
- u'one-of/c', u'open-input-bytes', u'open-input-file',
- u'open-input-output-file', u'open-input-string', u'open-output-bytes',
- u'open-output-file', u'open-output-nowhere', u'open-output-string',
- u'or/c', u'order-of-magnitude', u'ormap', u'other-execute-bit',
- u'other-read-bit', u'other-write-bit', u'output-port?', u'pair?',
- u'parameter-procedure=?', u'parameter/c', u'parameter?',
- u'parameterization?', u'parse-command-line', u'partition', u'path->bytes',
- u'path->complete-path', u'path->directory-path', u'path->string',
- u'path-add-suffix', u'path-convention-type', u'path-element->bytes',
- u'path-element->string', u'path-element?', u'path-for-some-system?',
- u'path-list-string->path-list', u'path-only', u'path-replace-suffix',
- u'path-string?', u'path<?', u'path?', u'pathlist-closure', u'peek-byte',
- u'peek-byte-or-special', u'peek-bytes', u'peek-bytes!', u'peek-bytes!-evt',
- u'peek-bytes-avail!', u'peek-bytes-avail!*', u'peek-bytes-avail!-evt',
- u'peek-bytes-avail!/enable-break', u'peek-bytes-evt', u'peek-char',
- u'peek-char-or-special', u'peek-string', u'peek-string!',
- u'peek-string!-evt', u'peek-string-evt', u'peeking-input-port',
- u'permutations', u'phantom-bytes?', u'pi', u'pi.f', u'pipe-content-length',
- u'place-break', u'place-channel', u'place-channel-get',
- u'place-channel-put', u'place-channel-put/get', u'place-channel?',
- u'place-dead-evt', u'place-enabled?', u'place-kill', u'place-location?',
- u'place-message-allowed?', u'place-sleep', u'place-wait', u'place?',
- u'placeholder-get', u'placeholder-set!', u'placeholder?',
- u'plumber-add-flush!', u'plumber-flush-all',
- u'plumber-flush-handle-remove!', u'plumber-flush-handle?', u'plumber?',
- u'poll-guard-evt', u'port->bytes', u'port->bytes-lines', u'port->lines',
- u'port->list', u'port->string', u'port-closed-evt', u'port-closed?',
- u'port-commit-peeked', u'port-count-lines!', u'port-count-lines-enabled',
- u'port-counts-lines?', u'port-display-handler', u'port-file-identity',
- u'port-file-unlock', u'port-next-location', u'port-number?',
- u'port-print-handler', u'port-progress-evt',
- u'port-provides-progress-evts?', u'port-read-handler',
- u'port-try-file-lock?', u'port-write-handler', u'port-writes-atomic?',
- u'port-writes-special?', u'port?', u'positive?', u'predicate/c',
- u'prefab-key->struct-type', u'prefab-key?', u'prefab-struct-key',
- u'preferences-lock-file-mode', u'pregexp', u'pregexp?', u'pretty-display',
- u'pretty-format', u'pretty-print', u'pretty-print-.-symbol-without-bars',
- u'pretty-print-abbreviate-read-macros', u'pretty-print-columns',
- u'pretty-print-current-style-table', u'pretty-print-depth',
- u'pretty-print-exact-as-decimal', u'pretty-print-extend-style-table',
- u'pretty-print-handler', u'pretty-print-newline',
- u'pretty-print-post-print-hook', u'pretty-print-pre-print-hook',
- u'pretty-print-print-hook', u'pretty-print-print-line',
- u'pretty-print-remap-stylable', u'pretty-print-show-inexactness',
- u'pretty-print-size-hook', u'pretty-print-style-table?',
- u'pretty-printing', u'pretty-write', u'primitive-closure?',
- u'primitive-result-arity', u'primitive?', u'print', u'print-as-expression',
- u'print-boolean-long-form', u'print-box', u'print-graph',
- u'print-hash-table', u'print-mpair-curly-braces',
- u'print-pair-curly-braces', u'print-reader-abbreviations',
- u'print-struct', u'print-syntax-width', u'print-unreadable',
- u'print-vector-length', u'printable/c', u'printable<%>', u'printf',
- u'println', u'procedure->method', u'procedure-arity',
- u'procedure-arity-includes/c', u'procedure-arity-includes?',
- u'procedure-arity?', u'procedure-closure-contents-eq?',
- u'procedure-extract-target', u'procedure-keywords',
- u'procedure-reduce-arity', u'procedure-reduce-keyword-arity',
- u'procedure-rename', u'procedure-result-arity', u'procedure-specialize',
- u'procedure-struct-type?', u'procedure?', u'process', u'process*',
- u'process*/ports', u'process/ports', u'processor-count', u'progress-evt?',
- u'promise-forced?', u'promise-running?', u'promise/c', u'promise/name?',
- u'promise?', u'prop:arity-string', u'prop:arrow-contract',
- u'prop:arrow-contract-get-info', u'prop:arrow-contract?', u'prop:blame',
- u'prop:chaperone-contract', u'prop:checked-procedure', u'prop:contract',
- u'prop:contracted', u'prop:custom-print-quotable', u'prop:custom-write',
- u'prop:dict', u'prop:dict/contract', u'prop:equal+hash', u'prop:evt',
- u'prop:exn:missing-module', u'prop:exn:srclocs',
- u'prop:expansion-contexts', u'prop:flat-contract',
- u'prop:impersonator-of', u'prop:input-port',
- u'prop:liberal-define-context', u'prop:object-name',
- u'prop:opt-chaperone-contract', u'prop:opt-chaperone-contract-get-test',
- u'prop:opt-chaperone-contract?', u'prop:orc-contract',
- u'prop:orc-contract-get-subcontracts', u'prop:orc-contract?',
- u'prop:output-port', u'prop:place-location', u'prop:procedure',
- u'prop:recursive-contract', u'prop:recursive-contract-unroll',
- u'prop:recursive-contract?', u'prop:rename-transformer', u'prop:sequence',
- u'prop:set!-transformer', u'prop:stream', u'proper-subset?',
- u'pseudo-random-generator->vector', u'pseudo-random-generator-vector?',
- u'pseudo-random-generator?', u'put-preferences', u'putenv', u'quotient',
- u'quotient/remainder', u'radians->degrees', u'raise',
- u'raise-argument-error', u'raise-arguments-error', u'raise-arity-error',
- u'raise-blame-error', u'raise-contract-error', u'raise-mismatch-error',
- u'raise-not-cons-blame-error', u'raise-range-error',
- u'raise-result-error', u'raise-syntax-error', u'raise-type-error',
- u'raise-user-error', u'random', u'random-seed', u'range', u'rational?',
- u'rationalize', u'read', u'read-accept-bar-quote', u'read-accept-box',
- u'read-accept-compiled', u'read-accept-dot', u'read-accept-graph',
- u'read-accept-infix-dot', u'read-accept-lang', u'read-accept-quasiquote',
- u'read-accept-reader', u'read-byte', u'read-byte-or-special',
- u'read-bytes', u'read-bytes!', u'read-bytes!-evt', u'read-bytes-avail!',
- u'read-bytes-avail!*', u'read-bytes-avail!-evt',
- u'read-bytes-avail!/enable-break', u'read-bytes-evt', u'read-bytes-line',
- u'read-bytes-line-evt', u'read-case-sensitive', u'read-cdot', u'read-char',
- u'read-char-or-special', u'read-curly-brace-as-paren',
- u'read-curly-brace-with-tag', u'read-decimal-as-inexact',
- u'read-eval-print-loop', u'read-language', u'read-line', u'read-line-evt',
- u'read-on-demand-source', u'read-square-bracket-as-paren',
- u'read-square-bracket-with-tag', u'read-string', u'read-string!',
- u'read-string!-evt', u'read-string-evt', u'read-syntax',
- u'read-syntax/recursive', u'read/recursive', u'readtable-mapping',
- u'readtable?', u'real->decimal-string', u'real->double-flonum',
- u'real->floating-point-bytes', u'real->single-flonum', u'real-in',
- u'real-part', u'real?', u'reencode-input-port', u'reencode-output-port',
- u'regexp', u'regexp-match', u'regexp-match*', u'regexp-match-evt',
- u'regexp-match-exact?', u'regexp-match-peek',
- u'regexp-match-peek-immediate', u'regexp-match-peek-positions',
- u'regexp-match-peek-positions*',
- u'regexp-match-peek-positions-immediate',
- u'regexp-match-peek-positions-immediate/end',
- u'regexp-match-peek-positions/end', u'regexp-match-positions',
- u'regexp-match-positions*', u'regexp-match-positions/end',
- u'regexp-match/end', u'regexp-match?', u'regexp-max-lookbehind',
- u'regexp-quote', u'regexp-replace', u'regexp-replace*',
- u'regexp-replace-quote', u'regexp-replaces', u'regexp-split',
- u'regexp-try-match', u'regexp?', u'relative-path?', u'relocate-input-port',
- u'relocate-output-port', u'remainder', u'remf', u'remf*', u'remove',
- u'remove*', u'remove-duplicates', u'remq', u'remq*', u'remv', u'remv*',
- u'rename-contract', u'rename-file-or-directory',
- u'rename-transformer-target', u'rename-transformer?', u'replace-evt',
- u'reroot-path', u'resolve-path', u'resolved-module-path-name',
- u'resolved-module-path?', u'rest', u'reverse', u'round', u'second',
- u'seconds->date', u'security-guard?', u'semaphore-peek-evt',
- u'semaphore-peek-evt?', u'semaphore-post', u'semaphore-try-wait?',
- u'semaphore-wait', u'semaphore-wait/enable-break', u'semaphore?',
- u'sequence->list', u'sequence->stream', u'sequence-add-between',
- u'sequence-andmap', u'sequence-append', u'sequence-count',
- u'sequence-filter', u'sequence-fold', u'sequence-for-each',
- u'sequence-generate', u'sequence-generate*', u'sequence-length',
- u'sequence-map', u'sequence-ormap', u'sequence-ref', u'sequence-tail',
- u'sequence/c', u'sequence?', u'set', u'set!-transformer-procedure',
- u'set!-transformer?', u'set->list', u'set->stream', u'set-add', u'set-add!',
- u'set-box!', u'set-clear', u'set-clear!', u'set-copy', u'set-copy-clear',
- u'set-count', u'set-empty?', u'set-eq?', u'set-equal?', u'set-eqv?',
- u'set-first', u'set-for-each', u'set-implements/c', u'set-implements?',
- u'set-intersect', u'set-intersect!', u'set-map', u'set-mcar!', u'set-mcdr!',
- u'set-member?', u'set-mutable?', u'set-phantom-bytes!',
- u'set-port-next-location!', u'set-remove', u'set-remove!', u'set-rest',
- u'set-some-basic-contracts!', u'set-subtract', u'set-subtract!',
- u'set-symmetric-difference', u'set-symmetric-difference!', u'set-union',
- u'set-union!', u'set-weak?', u'set/c', u'set=?', u'set?', u'seteq', u'seteqv',
- u'seventh', u'sgn', u'shared-bytes', u'shell-execute', u'shrink-path-wrt',
- u'shuffle', u'simple-form-path', u'simplify-path', u'sin',
- u'single-flonum?', u'sinh', u'sixth', u'skip-projection-wrapper?', u'sleep',
- u'some-system-path->string', u'sort', u'special-comment-value',
- u'special-comment?', u'special-filter-input-port', u'split-at',
- u'split-at-right', u'split-common-prefix', u'split-path', u'splitf-at',
- u'splitf-at-right', u'sqr', u'sqrt', u'srcloc', u'srcloc->string',
- u'srcloc-column', u'srcloc-line', u'srcloc-position', u'srcloc-source',
- u'srcloc-span', u'srcloc?', u'stop-after', u'stop-before', u'stream->list',
- u'stream-add-between', u'stream-andmap', u'stream-append', u'stream-count',
- u'stream-empty?', u'stream-filter', u'stream-first', u'stream-fold',
- u'stream-for-each', u'stream-length', u'stream-map', u'stream-ormap',
- u'stream-ref', u'stream-rest', u'stream-tail', u'stream/c', u'stream?',
- u'string', u'string->bytes/latin-1', u'string->bytes/locale',
- u'string->bytes/utf-8', u'string->immutable-string', u'string->keyword',
- u'string->list', u'string->number', u'string->path',
- u'string->path-element', u'string->some-system-path', u'string->symbol',
- u'string->uninterned-symbol', u'string->unreadable-symbol',
- u'string-append', u'string-append*', u'string-ci<=?', u'string-ci<?',
- u'string-ci=?', u'string-ci>=?', u'string-ci>?', u'string-contains?',
- u'string-copy', u'string-copy!', u'string-downcase',
- u'string-environment-variable-name?', u'string-fill!', u'string-foldcase',
- u'string-join', u'string-len/c', u'string-length', u'string-locale-ci<?',
- u'string-locale-ci=?', u'string-locale-ci>?', u'string-locale-downcase',
- u'string-locale-upcase', u'string-locale<?', u'string-locale=?',
- u'string-locale>?', u'string-no-nuls?', u'string-normalize-nfc',
- u'string-normalize-nfd', u'string-normalize-nfkc',
- u'string-normalize-nfkd', u'string-normalize-spaces', u'string-port?',
- u'string-prefix?', u'string-ref', u'string-replace', u'string-set!',
- u'string-split', u'string-suffix?', u'string-titlecase', u'string-trim',
- u'string-upcase', u'string-utf-8-length', u'string<=?', u'string<?',
- u'string=?', u'string>=?', u'string>?', u'string?', u'struct->vector',
- u'struct-accessor-procedure?', u'struct-constructor-procedure?',
- u'struct-info', u'struct-mutator-procedure?',
- u'struct-predicate-procedure?', u'struct-type-info',
- u'struct-type-make-constructor', u'struct-type-make-predicate',
- u'struct-type-property-accessor-procedure?', u'struct-type-property/c',
- u'struct-type-property?', u'struct-type?', u'struct:arity-at-least',
- u'struct:arrow-contract-info', u'struct:date', u'struct:date*',
- u'struct:exn', u'struct:exn:break', u'struct:exn:break:hang-up',
- u'struct:exn:break:terminate', u'struct:exn:fail',
- u'struct:exn:fail:contract', u'struct:exn:fail:contract:arity',
- u'struct:exn:fail:contract:blame',
- u'struct:exn:fail:contract:continuation',
- u'struct:exn:fail:contract:divide-by-zero',
- u'struct:exn:fail:contract:non-fixnum-result',
- u'struct:exn:fail:contract:variable', u'struct:exn:fail:filesystem',
- u'struct:exn:fail:filesystem:errno',
- u'struct:exn:fail:filesystem:exists',
- u'struct:exn:fail:filesystem:missing-module',
- u'struct:exn:fail:filesystem:version', u'struct:exn:fail:network',
- u'struct:exn:fail:network:errno', u'struct:exn:fail:object',
- u'struct:exn:fail:out-of-memory', u'struct:exn:fail:read',
- u'struct:exn:fail:read:eof', u'struct:exn:fail:read:non-char',
- u'struct:exn:fail:syntax', u'struct:exn:fail:syntax:missing-module',
- u'struct:exn:fail:syntax:unbound', u'struct:exn:fail:unsupported',
- u'struct:exn:fail:user', u'struct:srcloc',
- u'struct:wrapped-extra-arg-arrow', u'struct?', u'sub1', u'subbytes',
- u'subclass?', u'subclass?/c', u'subprocess', u'subprocess-group-enabled',
- u'subprocess-kill', u'subprocess-pid', u'subprocess-status',
- u'subprocess-wait', u'subprocess?', u'subset?', u'substring', u'suggest/c',
- u'symbol->string', u'symbol-interned?', u'symbol-unreadable?', u'symbol<?',
- u'symbol=?', u'symbol?', u'symbols', u'sync', u'sync/enable-break',
- u'sync/timeout', u'sync/timeout/enable-break', u'syntax->datum',
- u'syntax->list', u'syntax-arm', u'syntax-column', u'syntax-debug-info',
- u'syntax-disarm', u'syntax-e', u'syntax-line',
- u'syntax-local-bind-syntaxes', u'syntax-local-certifier',
- u'syntax-local-context', u'syntax-local-expand-expression',
- u'syntax-local-get-shadower', u'syntax-local-identifier-as-binding',
- u'syntax-local-introduce', u'syntax-local-lift-context',
- u'syntax-local-lift-expression', u'syntax-local-lift-module',
- u'syntax-local-lift-module-end-declaration',
- u'syntax-local-lift-provide', u'syntax-local-lift-require',
- u'syntax-local-lift-values-expression',
- u'syntax-local-make-definition-context',
- u'syntax-local-make-delta-introducer',
- u'syntax-local-module-defined-identifiers',
- u'syntax-local-module-exports',
- u'syntax-local-module-required-identifiers', u'syntax-local-name',
- u'syntax-local-phase-level', u'syntax-local-submodules',
- u'syntax-local-transforming-module-provides?', u'syntax-local-value',
- u'syntax-local-value/immediate', u'syntax-original?', u'syntax-position',
- u'syntax-property', u'syntax-property-preserved?',
- u'syntax-property-symbol-keys', u'syntax-protect', u'syntax-rearm',
- u'syntax-recertify', u'syntax-shift-phase-level', u'syntax-source',
- u'syntax-source-module', u'syntax-span', u'syntax-taint',
- u'syntax-tainted?', u'syntax-track-origin',
- u'syntax-transforming-module-expression?',
- u'syntax-transforming-with-lifts?', u'syntax-transforming?', u'syntax/c',
- u'syntax?', u'system', u'system*', u'system*/exit-code',
- u'system-big-endian?', u'system-idle-evt', u'system-language+country',
- u'system-library-subpath', u'system-path-convention-type', u'system-type',
- u'system/exit-code', u'tail-marks-match?', u'take', u'take-common-prefix',
- u'take-right', u'takef', u'takef-right', u'tan', u'tanh',
- u'tcp-abandon-port', u'tcp-accept', u'tcp-accept-evt',
- u'tcp-accept-ready?', u'tcp-accept/enable-break', u'tcp-addresses',
- u'tcp-close', u'tcp-connect', u'tcp-connect/enable-break', u'tcp-listen',
- u'tcp-listener?', u'tcp-port?', u'tentative-pretty-print-port-cancel',
- u'tentative-pretty-print-port-transfer', u'tenth', u'terminal-port?',
- u'the-unsupplied-arg', u'third', u'thread', u'thread-cell-ref',
- u'thread-cell-set!', u'thread-cell-values?', u'thread-cell?',
- u'thread-dead-evt', u'thread-dead?', u'thread-group?', u'thread-receive',
- u'thread-receive-evt', u'thread-resume', u'thread-resume-evt',
- u'thread-rewind-receive', u'thread-running?', u'thread-send',
- u'thread-suspend', u'thread-suspend-evt', u'thread-try-receive',
- u'thread-wait', u'thread/suspend-to-kill', u'thread?', u'time-apply',
- u'touch', u'transplant-input-port', u'transplant-output-port', u'true',
- u'truncate', u'udp-addresses', u'udp-bind!', u'udp-bound?', u'udp-close',
- u'udp-connect!', u'udp-connected?', u'udp-multicast-interface',
- u'udp-multicast-join-group!', u'udp-multicast-leave-group!',
- u'udp-multicast-loopback?', u'udp-multicast-set-interface!',
- u'udp-multicast-set-loopback!', u'udp-multicast-set-ttl!',
- u'udp-multicast-ttl', u'udp-open-socket', u'udp-receive!',
- u'udp-receive!*', u'udp-receive!-evt', u'udp-receive!/enable-break',
- u'udp-receive-ready-evt', u'udp-send', u'udp-send*', u'udp-send-evt',
- u'udp-send-ready-evt', u'udp-send-to', u'udp-send-to*', u'udp-send-to-evt',
- u'udp-send-to/enable-break', u'udp-send/enable-break', u'udp?', u'unbox',
- u'uncaught-exception-handler', u'unit?', u'unspecified-dom',
- u'unsupplied-arg?', u'use-collection-link-paths',
- u'use-compiled-file-paths', u'use-user-specific-search-paths',
- u'user-execute-bit', u'user-read-bit', u'user-write-bit', u'value-blame',
- u'value-contract', u'values', u'variable-reference->empty-namespace',
- u'variable-reference->module-base-phase',
- u'variable-reference->module-declaration-inspector',
- u'variable-reference->module-path-index',
- u'variable-reference->module-source', u'variable-reference->namespace',
- u'variable-reference->phase',
- u'variable-reference->resolved-module-path',
- u'variable-reference-constant?', u'variable-reference?', u'vector',
- u'vector->immutable-vector', u'vector->list',
- u'vector->pseudo-random-generator', u'vector->pseudo-random-generator!',
- u'vector->values', u'vector-append', u'vector-argmax', u'vector-argmin',
- u'vector-copy', u'vector-copy!', u'vector-count', u'vector-drop',
- u'vector-drop-right', u'vector-fill!', u'vector-filter',
- u'vector-filter-not', u'vector-immutable', u'vector-immutable/c',
- u'vector-immutableof', u'vector-length', u'vector-map', u'vector-map!',
- u'vector-member', u'vector-memq', u'vector-memv', u'vector-ref',
- u'vector-set!', u'vector-set*!', u'vector-set-performance-stats!',
- u'vector-split-at', u'vector-split-at-right', u'vector-take',
- u'vector-take-right', u'vector/c', u'vector?', u'vectorof', u'version',
- u'void', u'void?', u'weak-box-value', u'weak-box?', u'weak-set',
- u'weak-seteq', u'weak-seteqv', u'will-execute', u'will-executor?',
- u'will-register', u'will-try-execute', u'with-input-from-bytes',
- u'with-input-from-file', u'with-input-from-string',
- u'with-output-to-bytes', u'with-output-to-file', u'with-output-to-string',
- u'would-be-future', u'wrap-evt', u'wrapped-extra-arg-arrow',
- u'wrapped-extra-arg-arrow-extra-neg-party-argument',
- u'wrapped-extra-arg-arrow-real-func', u'wrapped-extra-arg-arrow?',
- u'writable<%>', u'write', u'write-byte', u'write-bytes',
- u'write-bytes-avail', u'write-bytes-avail*', u'write-bytes-avail-evt',
- u'write-bytes-avail/enable-break', u'write-char', u'write-special',
- u'write-special-avail*', u'write-special-evt', u'write-string',
- u'write-to-file', u'writeln', u'xor', u'zero?', u'~.a', u'~.s', u'~.v', u'~a',
- u'~e', u'~r', u'~s', u'~v'
+ '*', '*list/c', '+', '-', '/', '<', '</c', '<=', '<=/c', '=', '=/c',
+ '>', '>/c', '>=', '>=/c', 'abort-current-continuation', 'abs',
+ 'absolute-path?', 'acos', 'add-between', 'add1', 'alarm-evt',
+ 'always-evt', 'and/c', 'andmap', 'angle', 'any/c', 'append', 'append*',
+ 'append-map', 'apply', 'argmax', 'argmin', 'arithmetic-shift',
+ 'arity-at-least', 'arity-at-least-value', 'arity-at-least?',
+ 'arity-checking-wrapper', 'arity-includes?', 'arity=?',
+ 'arrow-contract-info', 'arrow-contract-info-accepts-arglist',
+ 'arrow-contract-info-chaperone-procedure',
+ 'arrow-contract-info-check-first-order', 'arrow-contract-info?',
+ 'asin', 'assf', 'assoc', 'assq', 'assv', 'atan',
+ 'bad-number-of-results', 'banner', 'base->-doms/c', 'base->-rngs/c',
+ 'base->?', 'between/c', 'bitwise-and', 'bitwise-bit-field',
+ 'bitwise-bit-set?', 'bitwise-ior', 'bitwise-not', 'bitwise-xor',
+ 'blame-add-car-context', 'blame-add-cdr-context', 'blame-add-context',
+ 'blame-add-missing-party', 'blame-add-nth-arg-context',
+ 'blame-add-range-context', 'blame-add-unknown-context',
+ 'blame-context', 'blame-contract', 'blame-fmt->-string',
+ 'blame-missing-party?', 'blame-negative', 'blame-original?',
+ 'blame-positive', 'blame-replace-negative', 'blame-source',
+ 'blame-swap', 'blame-swapped?', 'blame-update', 'blame-value',
+ 'blame?', 'boolean=?', 'boolean?', 'bound-identifier=?', 'box',
+ 'box-cas!', 'box-immutable', 'box-immutable/c', 'box/c', 'box?',
+ 'break-enabled', 'break-parameterization?', 'break-thread',
+ 'build-chaperone-contract-property', 'build-compound-type-name',
+ 'build-contract-property', 'build-flat-contract-property',
+ 'build-list', 'build-path', 'build-path/convention-type',
+ 'build-string', 'build-vector', 'byte-pregexp', 'byte-pregexp?',
+ 'byte-ready?', 'byte-regexp', 'byte-regexp?', 'byte?', 'bytes',
+ 'bytes->immutable-bytes', 'bytes->list', 'bytes->path',
+ 'bytes->path-element', 'bytes->string/latin-1', 'bytes->string/locale',
+ 'bytes->string/utf-8', 'bytes-append', 'bytes-append*',
+ 'bytes-close-converter', 'bytes-convert', 'bytes-convert-end',
+ 'bytes-converter?', 'bytes-copy', 'bytes-copy!',
+ 'bytes-environment-variable-name?', 'bytes-fill!', 'bytes-join',
+ 'bytes-length', 'bytes-no-nuls?', 'bytes-open-converter', 'bytes-ref',
+ 'bytes-set!', 'bytes-utf-8-index', 'bytes-utf-8-length',
+ 'bytes-utf-8-ref', 'bytes<?', 'bytes=?', 'bytes>?', 'bytes?', 'caaaar',
+ 'caaadr', 'caaar', 'caadar', 'caaddr', 'caadr', 'caar', 'cadaar',
+ 'cadadr', 'cadar', 'caddar', 'cadddr', 'caddr', 'cadr',
+ 'call-in-nested-thread', 'call-with-atomic-output-file',
+ 'call-with-break-parameterization',
+ 'call-with-composable-continuation', 'call-with-continuation-barrier',
+ 'call-with-continuation-prompt', 'call-with-current-continuation',
+ 'call-with-default-reading-parameterization',
+ 'call-with-escape-continuation', 'call-with-exception-handler',
+ 'call-with-file-lock/timeout', 'call-with-immediate-continuation-mark',
+ 'call-with-input-bytes', 'call-with-input-file',
+ 'call-with-input-file*', 'call-with-input-string',
+ 'call-with-output-bytes', 'call-with-output-file',
+ 'call-with-output-file*', 'call-with-output-string',
+ 'call-with-parameterization', 'call-with-semaphore',
+ 'call-with-semaphore/enable-break', 'call-with-values', 'call/cc',
+ 'call/ec', 'car', 'cartesian-product', 'cdaaar', 'cdaadr', 'cdaar',
+ 'cdadar', 'cdaddr', 'cdadr', 'cdar', 'cddaar', 'cddadr', 'cddar',
+ 'cdddar', 'cddddr', 'cdddr', 'cddr', 'cdr', 'ceiling', 'channel-get',
+ 'channel-put', 'channel-put-evt', 'channel-put-evt?',
+ 'channel-try-get', 'channel/c', 'channel?', 'chaperone-box',
+ 'chaperone-channel', 'chaperone-continuation-mark-key',
+ 'chaperone-contract-property?', 'chaperone-contract?', 'chaperone-evt',
+ 'chaperone-hash', 'chaperone-hash-set', 'chaperone-of?',
+ 'chaperone-procedure', 'chaperone-procedure*', 'chaperone-prompt-tag',
+ 'chaperone-struct', 'chaperone-struct-type', 'chaperone-vector',
+ 'chaperone?', 'char->integer', 'char-alphabetic?', 'char-blank?',
+ 'char-ci<=?', 'char-ci<?', 'char-ci=?', 'char-ci>=?', 'char-ci>?',
+ 'char-downcase', 'char-foldcase', 'char-general-category',
+ 'char-graphic?', 'char-in', 'char-in/c', 'char-iso-control?',
+ 'char-lower-case?', 'char-numeric?', 'char-punctuation?',
+ 'char-ready?', 'char-symbolic?', 'char-title-case?', 'char-titlecase',
+ 'char-upcase', 'char-upper-case?', 'char-utf-8-length',
+ 'char-whitespace?', 'char<=?', 'char<?', 'char=?', 'char>=?', 'char>?',
+ 'char?', 'check-duplicate-identifier', 'check-duplicates',
+ 'checked-procedure-check-and-extract', 'choice-evt',
+ 'class->interface', 'class-info', 'class-seal', 'class-unseal',
+ 'class?', 'cleanse-path', 'close-input-port', 'close-output-port',
+ 'coerce-chaperone-contract', 'coerce-chaperone-contracts',
+ 'coerce-contract', 'coerce-contract/f', 'coerce-contracts',
+ 'coerce-flat-contract', 'coerce-flat-contracts', 'collect-garbage',
+ 'collection-file-path', 'collection-path', 'combinations', 'compile',
+ 'compile-allow-set!-undefined', 'compile-context-preservation-enabled',
+ 'compile-enforce-module-constants', 'compile-syntax',
+ 'compiled-expression-recompile', 'compiled-expression?',
+ 'compiled-module-expression?', 'complete-path?', 'complex?', 'compose',
+ 'compose1', 'conjoin', 'conjugate', 'cons', 'cons/c', 'cons?', 'const',
+ 'continuation-mark-key/c', 'continuation-mark-key?',
+ 'continuation-mark-set->context', 'continuation-mark-set->list',
+ 'continuation-mark-set->list*', 'continuation-mark-set-first',
+ 'continuation-mark-set?', 'continuation-marks',
+ 'continuation-prompt-available?', 'continuation-prompt-tag?',
+ 'continuation?', 'contract-continuation-mark-key',
+ 'contract-custom-write-property-proc', 'contract-exercise',
+ 'contract-first-order', 'contract-first-order-passes?',
+ 'contract-late-neg-projection', 'contract-name', 'contract-proc',
+ 'contract-projection', 'contract-property?',
+ 'contract-random-generate', 'contract-random-generate-fail',
+ 'contract-random-generate-fail?',
+ 'contract-random-generate-get-current-environment',
+ 'contract-random-generate-stash', 'contract-random-generate/choose',
+ 'contract-stronger?', 'contract-struct-exercise',
+ 'contract-struct-generate', 'contract-struct-late-neg-projection',
+ 'contract-struct-list-contract?', 'contract-val-first-projection',
+ 'contract?', 'convert-stream', 'copy-directory/files', 'copy-file',
+ 'copy-port', 'cos', 'cosh', 'count', 'current-blame-format',
+ 'current-break-parameterization', 'current-code-inspector',
+ 'current-command-line-arguments', 'current-compile',
+ 'current-compiled-file-roots', 'current-continuation-marks',
+ 'current-contract-region', 'current-custodian', 'current-directory',
+ 'current-directory-for-user', 'current-drive',
+ 'current-environment-variables', 'current-error-port', 'current-eval',
+ 'current-evt-pseudo-random-generator',
+ 'current-force-delete-permissions', 'current-future',
+ 'current-gc-milliseconds', 'current-get-interaction-input-port',
+ 'current-inexact-milliseconds', 'current-input-port',
+ 'current-inspector', 'current-library-collection-links',
+ 'current-library-collection-paths', 'current-load',
+ 'current-load-extension', 'current-load-relative-directory',
+ 'current-load/use-compiled', 'current-locale', 'current-logger',
+ 'current-memory-use', 'current-milliseconds',
+ 'current-module-declare-name', 'current-module-declare-source',
+ 'current-module-name-resolver', 'current-module-path-for-load',
+ 'current-namespace', 'current-output-port', 'current-parameterization',
+ 'current-plumber', 'current-preserved-thread-cell-values',
+ 'current-print', 'current-process-milliseconds', 'current-prompt-read',
+ 'current-pseudo-random-generator', 'current-read-interaction',
+ 'current-reader-guard', 'current-readtable', 'current-seconds',
+ 'current-security-guard', 'current-subprocess-custodian-mode',
+ 'current-thread', 'current-thread-group',
+ 'current-thread-initial-stack-size',
+ 'current-write-relative-directory', 'curry', 'curryr',
+ 'custodian-box-value', 'custodian-box?', 'custodian-limit-memory',
+ 'custodian-managed-list', 'custodian-memory-accounting-available?',
+ 'custodian-require-memory', 'custodian-shutdown-all', 'custodian?',
+ 'custom-print-quotable-accessor', 'custom-print-quotable?',
+ 'custom-write-accessor', 'custom-write-property-proc', 'custom-write?',
+ 'date', 'date*', 'date*-nanosecond', 'date*-time-zone-name', 'date*?',
+ 'date-day', 'date-dst?', 'date-hour', 'date-minute', 'date-month',
+ 'date-second', 'date-time-zone-offset', 'date-week-day', 'date-year',
+ 'date-year-day', 'date?', 'datum->syntax', 'datum-intern-literal',
+ 'default-continuation-prompt-tag', 'degrees->radians',
+ 'delete-directory', 'delete-directory/files', 'delete-file',
+ 'denominator', 'dict->list', 'dict-can-functional-set?',
+ 'dict-can-remove-keys?', 'dict-clear', 'dict-clear!', 'dict-copy',
+ 'dict-count', 'dict-empty?', 'dict-for-each', 'dict-has-key?',
+ 'dict-implements/c', 'dict-implements?', 'dict-iter-contract',
+ 'dict-iterate-first', 'dict-iterate-key', 'dict-iterate-next',
+ 'dict-iterate-value', 'dict-key-contract', 'dict-keys', 'dict-map',
+ 'dict-mutable?', 'dict-ref', 'dict-ref!', 'dict-remove',
+ 'dict-remove!', 'dict-set', 'dict-set!', 'dict-set*', 'dict-set*!',
+ 'dict-update', 'dict-update!', 'dict-value-contract', 'dict-values',
+ 'dict?', 'directory-exists?', 'directory-list', 'disjoin', 'display',
+ 'display-lines', 'display-lines-to-file', 'display-to-file',
+ 'displayln', 'double-flonum?', 'drop', 'drop-common-prefix',
+ 'drop-right', 'dropf', 'dropf-right', 'dump-memory-stats',
+ 'dup-input-port', 'dup-output-port', 'dynamic->*', 'dynamic-get-field',
+ 'dynamic-object/c', 'dynamic-place', 'dynamic-place*',
+ 'dynamic-require', 'dynamic-require-for-syntax', 'dynamic-send',
+ 'dynamic-set-field!', 'dynamic-wind', 'eighth', 'empty',
+ 'empty-sequence', 'empty-stream', 'empty?',
+ 'environment-variables-copy', 'environment-variables-names',
+ 'environment-variables-ref', 'environment-variables-set!',
+ 'environment-variables?', 'eof', 'eof-evt', 'eof-object?',
+ 'ephemeron-value', 'ephemeron?', 'eprintf', 'eq-contract-val',
+ 'eq-contract?', 'eq-hash-code', 'eq?', 'equal-contract-val',
+ 'equal-contract?', 'equal-hash-code', 'equal-secondary-hash-code',
+ 'equal<%>', 'equal?', 'equal?/recur', 'eqv-hash-code', 'eqv?', 'error',
+ 'error-display-handler', 'error-escape-handler',
+ 'error-print-context-length', 'error-print-source-location',
+ 'error-print-width', 'error-value->string-handler', 'eval',
+ 'eval-jit-enabled', 'eval-syntax', 'even?', 'evt/c', 'evt?',
+ 'exact->inexact', 'exact-ceiling', 'exact-floor', 'exact-integer?',
+ 'exact-nonnegative-integer?', 'exact-positive-integer?', 'exact-round',
+ 'exact-truncate', 'exact?', 'executable-yield-handler', 'exit',
+ 'exit-handler', 'exn', 'exn-continuation-marks', 'exn-message',
+ 'exn:break', 'exn:break-continuation', 'exn:break:hang-up',
+ 'exn:break:hang-up?', 'exn:break:terminate', 'exn:break:terminate?',
+ 'exn:break?', 'exn:fail', 'exn:fail:contract',
+ 'exn:fail:contract:arity', 'exn:fail:contract:arity?',
+ 'exn:fail:contract:blame', 'exn:fail:contract:blame-object',
+ 'exn:fail:contract:blame?', 'exn:fail:contract:continuation',
+ 'exn:fail:contract:continuation?', 'exn:fail:contract:divide-by-zero',
+ 'exn:fail:contract:divide-by-zero?',
+ 'exn:fail:contract:non-fixnum-result',
+ 'exn:fail:contract:non-fixnum-result?', 'exn:fail:contract:variable',
+ 'exn:fail:contract:variable-id', 'exn:fail:contract:variable?',
+ 'exn:fail:contract?', 'exn:fail:filesystem',
+ 'exn:fail:filesystem:errno', 'exn:fail:filesystem:errno-errno',
+ 'exn:fail:filesystem:errno?', 'exn:fail:filesystem:exists',
+ 'exn:fail:filesystem:exists?', 'exn:fail:filesystem:missing-module',
+ 'exn:fail:filesystem:missing-module-path',
+ 'exn:fail:filesystem:missing-module?', 'exn:fail:filesystem:version',
+ 'exn:fail:filesystem:version?', 'exn:fail:filesystem?',
+ 'exn:fail:network', 'exn:fail:network:errno',
+ 'exn:fail:network:errno-errno', 'exn:fail:network:errno?',
+ 'exn:fail:network?', 'exn:fail:object', 'exn:fail:object?',
+ 'exn:fail:out-of-memory', 'exn:fail:out-of-memory?', 'exn:fail:read',
+ 'exn:fail:read-srclocs', 'exn:fail:read:eof', 'exn:fail:read:eof?',
+ 'exn:fail:read:non-char', 'exn:fail:read:non-char?', 'exn:fail:read?',
+ 'exn:fail:syntax', 'exn:fail:syntax-exprs',
+ 'exn:fail:syntax:missing-module',
+ 'exn:fail:syntax:missing-module-path',
+ 'exn:fail:syntax:missing-module?', 'exn:fail:syntax:unbound',
+ 'exn:fail:syntax:unbound?', 'exn:fail:syntax?', 'exn:fail:unsupported',
+ 'exn:fail:unsupported?', 'exn:fail:user', 'exn:fail:user?',
+ 'exn:fail?', 'exn:misc:match?', 'exn:missing-module-accessor',
+ 'exn:missing-module?', 'exn:srclocs-accessor', 'exn:srclocs?', 'exn?',
+ 'exp', 'expand', 'expand-once', 'expand-syntax', 'expand-syntax-once',
+ 'expand-syntax-to-top-form', 'expand-to-top-form', 'expand-user-path',
+ 'explode-path', 'expt', 'externalizable<%>', 'failure-result/c',
+ 'false?', 'field-names', 'fifth', 'file->bytes', 'file->bytes-lines',
+ 'file->lines', 'file->list', 'file->string', 'file->value',
+ 'file-exists?', 'file-name-from-path', 'file-or-directory-identity',
+ 'file-or-directory-modify-seconds', 'file-or-directory-permissions',
+ 'file-position', 'file-position*', 'file-size',
+ 'file-stream-buffer-mode', 'file-stream-port?', 'file-truncate',
+ 'filename-extension', 'filesystem-change-evt',
+ 'filesystem-change-evt-cancel', 'filesystem-change-evt?',
+ 'filesystem-root-list', 'filter', 'filter-map', 'filter-not',
+ 'filter-read-input-port', 'find-executable-path', 'find-files',
+ 'find-library-collection-links', 'find-library-collection-paths',
+ 'find-relative-path', 'find-system-path', 'findf', 'first',
+ 'first-or/c', 'fixnum?', 'flat-contract', 'flat-contract-predicate',
+ 'flat-contract-property?', 'flat-contract?', 'flat-named-contract',
+ 'flatten', 'floating-point-bytes->real', 'flonum?', 'floor',
+ 'flush-output', 'fold-files', 'foldl', 'foldr', 'for-each', 'force',
+ 'format', 'fourth', 'fprintf', 'free-identifier=?',
+ 'free-label-identifier=?', 'free-template-identifier=?',
+ 'free-transformer-identifier=?', 'fsemaphore-count', 'fsemaphore-post',
+ 'fsemaphore-try-wait?', 'fsemaphore-wait', 'fsemaphore?', 'future',
+ 'future?', 'futures-enabled?', 'gcd', 'generate-member-key',
+ 'generate-temporaries', 'generic-set?', 'generic?', 'gensym',
+ 'get-output-bytes', 'get-output-string', 'get-preference',
+ 'get/build-late-neg-projection', 'get/build-val-first-projection',
+ 'getenv', 'global-port-print-handler', 'group-by', 'group-execute-bit',
+ 'group-read-bit', 'group-write-bit', 'guard-evt', 'handle-evt',
+ 'handle-evt?', 'has-blame?', 'has-contract?', 'hash', 'hash->list',
+ 'hash-clear', 'hash-clear!', 'hash-copy', 'hash-copy-clear',
+ 'hash-count', 'hash-empty?', 'hash-eq?', 'hash-equal?', 'hash-eqv?',
+ 'hash-for-each', 'hash-has-key?', 'hash-iterate-first',
+ 'hash-iterate-key', 'hash-iterate-key+value', 'hash-iterate-next',
+ 'hash-iterate-pair', 'hash-iterate-value', 'hash-keys', 'hash-map',
+ 'hash-placeholder?', 'hash-ref', 'hash-ref!', 'hash-remove',
+ 'hash-remove!', 'hash-set', 'hash-set!', 'hash-set*', 'hash-set*!',
+ 'hash-update', 'hash-update!', 'hash-values', 'hash-weak?', 'hash/c',
+ 'hash?', 'hasheq', 'hasheqv', 'identifier-binding',
+ 'identifier-binding-symbol', 'identifier-label-binding',
+ 'identifier-prune-lexical-context',
+ 'identifier-prune-to-source-module',
+ 'identifier-remove-from-definition-context',
+ 'identifier-template-binding', 'identifier-transformer-binding',
+ 'identifier?', 'identity', 'if/c', 'imag-part', 'immutable?',
+ 'impersonate-box', 'impersonate-channel',
+ 'impersonate-continuation-mark-key', 'impersonate-hash',
+ 'impersonate-hash-set', 'impersonate-procedure',
+ 'impersonate-procedure*', 'impersonate-prompt-tag',
+ 'impersonate-struct', 'impersonate-vector', 'impersonator-contract?',
+ 'impersonator-ephemeron', 'impersonator-of?',
+ 'impersonator-prop:application-mark', 'impersonator-prop:blame',
+ 'impersonator-prop:contracted',
+ 'impersonator-property-accessor-procedure?', 'impersonator-property?',
+ 'impersonator?', 'implementation?', 'implementation?/c', 'in-bytes',
+ 'in-bytes-lines', 'in-combinations', 'in-cycle', 'in-dict',
+ 'in-dict-keys', 'in-dict-pairs', 'in-dict-values', 'in-directory',
+ 'in-hash', 'in-hash-keys', 'in-hash-pairs', 'in-hash-values',
+ 'in-immutable-hash', 'in-immutable-hash-keys',
+ 'in-immutable-hash-pairs', 'in-immutable-hash-values',
+ 'in-immutable-set', 'in-indexed', 'in-input-port-bytes',
+ 'in-input-port-chars', 'in-lines', 'in-list', 'in-mlist',
+ 'in-mutable-hash', 'in-mutable-hash-keys', 'in-mutable-hash-pairs',
+ 'in-mutable-hash-values', 'in-mutable-set', 'in-naturals',
+ 'in-parallel', 'in-permutations', 'in-port', 'in-producer', 'in-range',
+ 'in-sequences', 'in-set', 'in-slice', 'in-stream', 'in-string',
+ 'in-syntax', 'in-value', 'in-values*-sequence', 'in-values-sequence',
+ 'in-vector', 'in-weak-hash', 'in-weak-hash-keys', 'in-weak-hash-pairs',
+ 'in-weak-hash-values', 'in-weak-set', 'inexact->exact',
+ 'inexact-real?', 'inexact?', 'infinite?', 'input-port-append',
+ 'input-port?', 'inspector?', 'instanceof/c', 'integer->char',
+ 'integer->integer-bytes', 'integer-bytes->integer', 'integer-in',
+ 'integer-length', 'integer-sqrt', 'integer-sqrt/remainder', 'integer?',
+ 'interface->method-names', 'interface-extension?', 'interface?',
+ 'internal-definition-context-binding-identifiers',
+ 'internal-definition-context-introduce',
+ 'internal-definition-context-seal', 'internal-definition-context?',
+ 'is-a?', 'is-a?/c', 'keyword->string', 'keyword-apply', 'keyword<?',
+ 'keyword?', 'keywords-match', 'kill-thread', 'last', 'last-pair',
+ 'lcm', 'length', 'liberal-define-context?', 'link-exists?', 'list',
+ 'list*', 'list*of', 'list->bytes', 'list->mutable-set',
+ 'list->mutable-seteq', 'list->mutable-seteqv', 'list->set',
+ 'list->seteq', 'list->seteqv', 'list->string', 'list->vector',
+ 'list->weak-set', 'list->weak-seteq', 'list->weak-seteqv',
+ 'list-contract?', 'list-prefix?', 'list-ref', 'list-set', 'list-tail',
+ 'list-update', 'list/c', 'list?', 'listen-port-number?', 'listof',
+ 'load', 'load-extension', 'load-on-demand-enabled', 'load-relative',
+ 'load-relative-extension', 'load/cd', 'load/use-compiled',
+ 'local-expand', 'local-expand/capture-lifts',
+ 'local-transformer-expand', 'local-transformer-expand/capture-lifts',
+ 'locale-string-encoding', 'log', 'log-all-levels', 'log-level-evt',
+ 'log-level?', 'log-max-level', 'log-message', 'log-receiver?',
+ 'logger-name', 'logger?', 'magnitude', 'make-arity-at-least',
+ 'make-base-empty-namespace', 'make-base-namespace', 'make-bytes',
+ 'make-channel', 'make-chaperone-contract',
+ 'make-continuation-mark-key', 'make-continuation-prompt-tag',
+ 'make-contract', 'make-custodian', 'make-custodian-box',
+ 'make-custom-hash', 'make-custom-hash-types', 'make-custom-set',
+ 'make-custom-set-types', 'make-date', 'make-date*',
+ 'make-derived-parameter', 'make-directory', 'make-directory*',
+ 'make-do-sequence', 'make-empty-namespace',
+ 'make-environment-variables', 'make-ephemeron', 'make-exn',
+ 'make-exn:break', 'make-exn:break:hang-up', 'make-exn:break:terminate',
+ 'make-exn:fail', 'make-exn:fail:contract',
+ 'make-exn:fail:contract:arity', 'make-exn:fail:contract:blame',
+ 'make-exn:fail:contract:continuation',
+ 'make-exn:fail:contract:divide-by-zero',
+ 'make-exn:fail:contract:non-fixnum-result',
+ 'make-exn:fail:contract:variable', 'make-exn:fail:filesystem',
+ 'make-exn:fail:filesystem:errno', 'make-exn:fail:filesystem:exists',
+ 'make-exn:fail:filesystem:missing-module',
+ 'make-exn:fail:filesystem:version', 'make-exn:fail:network',
+ 'make-exn:fail:network:errno', 'make-exn:fail:object',
+ 'make-exn:fail:out-of-memory', 'make-exn:fail:read',
+ 'make-exn:fail:read:eof', 'make-exn:fail:read:non-char',
+ 'make-exn:fail:syntax', 'make-exn:fail:syntax:missing-module',
+ 'make-exn:fail:syntax:unbound', 'make-exn:fail:unsupported',
+ 'make-exn:fail:user', 'make-file-or-directory-link',
+ 'make-flat-contract', 'make-fsemaphore', 'make-generic',
+ 'make-handle-get-preference-locked', 'make-hash',
+ 'make-hash-placeholder', 'make-hasheq', 'make-hasheq-placeholder',
+ 'make-hasheqv', 'make-hasheqv-placeholder',
+ 'make-immutable-custom-hash', 'make-immutable-hash',
+ 'make-immutable-hasheq', 'make-immutable-hasheqv',
+ 'make-impersonator-property', 'make-input-port',
+ 'make-input-port/read-to-peek', 'make-inspector',
+ 'make-keyword-procedure', 'make-known-char-range-list',
+ 'make-limited-input-port', 'make-list', 'make-lock-file-name',
+ 'make-log-receiver', 'make-logger', 'make-mixin-contract',
+ 'make-mutable-custom-set', 'make-none/c', 'make-object',
+ 'make-output-port', 'make-parameter', 'make-parent-directory*',
+ 'make-phantom-bytes', 'make-pipe', 'make-pipe-with-specials',
+ 'make-placeholder', 'make-plumber', 'make-polar', 'make-prefab-struct',
+ 'make-primitive-class', 'make-proj-contract',
+ 'make-pseudo-random-generator', 'make-reader-graph', 'make-readtable',
+ 'make-rectangular', 'make-rename-transformer',
+ 'make-resolved-module-path', 'make-security-guard', 'make-semaphore',
+ 'make-set!-transformer', 'make-shared-bytes', 'make-sibling-inspector',
+ 'make-special-comment', 'make-srcloc', 'make-string',
+ 'make-struct-field-accessor', 'make-struct-field-mutator',
+ 'make-struct-type', 'make-struct-type-property',
+ 'make-syntax-delta-introducer', 'make-syntax-introducer',
+ 'make-temporary-file', 'make-tentative-pretty-print-output-port',
+ 'make-thread-cell', 'make-thread-group', 'make-vector',
+ 'make-weak-box', 'make-weak-custom-hash', 'make-weak-custom-set',
+ 'make-weak-hash', 'make-weak-hasheq', 'make-weak-hasheqv',
+ 'make-will-executor', 'map', 'match-equality-test',
+ 'matches-arity-exactly?', 'max', 'mcar', 'mcdr', 'mcons', 'member',
+ 'member-name-key-hash-code', 'member-name-key=?', 'member-name-key?',
+ 'memf', 'memq', 'memv', 'merge-input', 'method-in-interface?', 'min',
+ 'mixin-contract', 'module->exports', 'module->imports',
+ 'module->language-info', 'module->namespace',
+ 'module-compiled-cross-phase-persistent?', 'module-compiled-exports',
+ 'module-compiled-imports', 'module-compiled-language-info',
+ 'module-compiled-name', 'module-compiled-submodules',
+ 'module-declared?', 'module-path-index-join',
+ 'module-path-index-resolve', 'module-path-index-split',
+ 'module-path-index-submodule', 'module-path-index?', 'module-path?',
+ 'module-predefined?', 'module-provide-protected?', 'modulo', 'mpair?',
+ 'mutable-set', 'mutable-seteq', 'mutable-seteqv', 'n->th',
+ 'nack-guard-evt', 'namespace-anchor->empty-namespace',
+ 'namespace-anchor->namespace', 'namespace-anchor?',
+ 'namespace-attach-module', 'namespace-attach-module-declaration',
+ 'namespace-base-phase', 'namespace-mapped-symbols',
+ 'namespace-module-identifier', 'namespace-module-registry',
+ 'namespace-require', 'namespace-require/constant',
+ 'namespace-require/copy', 'namespace-require/expansion-time',
+ 'namespace-set-variable-value!', 'namespace-symbol->identifier',
+ 'namespace-syntax-introduce', 'namespace-undefine-variable!',
+ 'namespace-unprotect-module', 'namespace-variable-value', 'namespace?',
+ 'nan?', 'natural-number/c', 'negate', 'negative?', 'never-evt',
+ 'new-∀/c', 'new-∃/c', 'newline', 'ninth', 'non-empty-listof',
+ 'non-empty-string?', 'none/c', 'normal-case-path', 'normalize-arity',
+ 'normalize-path', 'normalized-arity?', 'not', 'not/c', 'null', 'null?',
+ 'number->string', 'number?', 'numerator', 'object%', 'object->vector',
+ 'object-info', 'object-interface', 'object-method-arity-includes?',
+ 'object-name', 'object-or-false=?', 'object=?', 'object?', 'odd?',
+ 'one-of/c', 'open-input-bytes', 'open-input-file',
+ 'open-input-output-file', 'open-input-string', 'open-output-bytes',
+ 'open-output-file', 'open-output-nowhere', 'open-output-string',
+ 'or/c', 'order-of-magnitude', 'ormap', 'other-execute-bit',
+ 'other-read-bit', 'other-write-bit', 'output-port?', 'pair?',
+ 'parameter-procedure=?', 'parameter/c', 'parameter?',
+ 'parameterization?', 'parse-command-line', 'partition', 'path->bytes',
+ 'path->complete-path', 'path->directory-path', 'path->string',
+ 'path-add-suffix', 'path-convention-type', 'path-element->bytes',
+ 'path-element->string', 'path-element?', 'path-for-some-system?',
+ 'path-list-string->path-list', 'path-only', 'path-replace-suffix',
+ 'path-string?', 'path<?', 'path?', 'pathlist-closure', 'peek-byte',
+ 'peek-byte-or-special', 'peek-bytes', 'peek-bytes!', 'peek-bytes!-evt',
+ 'peek-bytes-avail!', 'peek-bytes-avail!*', 'peek-bytes-avail!-evt',
+ 'peek-bytes-avail!/enable-break', 'peek-bytes-evt', 'peek-char',
+ 'peek-char-or-special', 'peek-string', 'peek-string!',
+ 'peek-string!-evt', 'peek-string-evt', 'peeking-input-port',
+ 'permutations', 'phantom-bytes?', 'pi', 'pi.f', 'pipe-content-length',
+ 'place-break', 'place-channel', 'place-channel-get',
+ 'place-channel-put', 'place-channel-put/get', 'place-channel?',
+ 'place-dead-evt', 'place-enabled?', 'place-kill', 'place-location?',
+ 'place-message-allowed?', 'place-sleep', 'place-wait', 'place?',
+ 'placeholder-get', 'placeholder-set!', 'placeholder?',
+ 'plumber-add-flush!', 'plumber-flush-all',
+ 'plumber-flush-handle-remove!', 'plumber-flush-handle?', 'plumber?',
+ 'poll-guard-evt', 'port->bytes', 'port->bytes-lines', 'port->lines',
+ 'port->list', 'port->string', 'port-closed-evt', 'port-closed?',
+ 'port-commit-peeked', 'port-count-lines!', 'port-count-lines-enabled',
+ 'port-counts-lines?', 'port-display-handler', 'port-file-identity',
+ 'port-file-unlock', 'port-next-location', 'port-number?',
+ 'port-print-handler', 'port-progress-evt',
+ 'port-provides-progress-evts?', 'port-read-handler',
+ 'port-try-file-lock?', 'port-write-handler', 'port-writes-atomic?',
+ 'port-writes-special?', 'port?', 'positive?', 'predicate/c',
+ 'prefab-key->struct-type', 'prefab-key?', 'prefab-struct-key',
+ 'preferences-lock-file-mode', 'pregexp', 'pregexp?', 'pretty-display',
+ 'pretty-format', 'pretty-print', 'pretty-print-.-symbol-without-bars',
+ 'pretty-print-abbreviate-read-macros', 'pretty-print-columns',
+ 'pretty-print-current-style-table', 'pretty-print-depth',
+ 'pretty-print-exact-as-decimal', 'pretty-print-extend-style-table',
+ 'pretty-print-handler', 'pretty-print-newline',
+ 'pretty-print-post-print-hook', 'pretty-print-pre-print-hook',
+ 'pretty-print-print-hook', 'pretty-print-print-line',
+ 'pretty-print-remap-stylable', 'pretty-print-show-inexactness',
+ 'pretty-print-size-hook', 'pretty-print-style-table?',
+ 'pretty-printing', 'pretty-write', 'primitive-closure?',
+ 'primitive-result-arity', 'primitive?', 'print', 'print-as-expression',
+ 'print-boolean-long-form', 'print-box', 'print-graph',
+ 'print-hash-table', 'print-mpair-curly-braces',
+ 'print-pair-curly-braces', 'print-reader-abbreviations',
+ 'print-struct', 'print-syntax-width', 'print-unreadable',
+ 'print-vector-length', 'printable/c', 'printable<%>', 'printf',
+ 'println', 'procedure->method', 'procedure-arity',
+ 'procedure-arity-includes/c', 'procedure-arity-includes?',
+ 'procedure-arity?', 'procedure-closure-contents-eq?',
+ 'procedure-extract-target', 'procedure-keywords',
+ 'procedure-reduce-arity', 'procedure-reduce-keyword-arity',
+ 'procedure-rename', 'procedure-result-arity', 'procedure-specialize',
+ 'procedure-struct-type?', 'procedure?', 'process', 'process*',
+ 'process*/ports', 'process/ports', 'processor-count', 'progress-evt?',
+ 'promise-forced?', 'promise-running?', 'promise/c', 'promise/name?',
+ 'promise?', 'prop:arity-string', 'prop:arrow-contract',
+ 'prop:arrow-contract-get-info', 'prop:arrow-contract?', 'prop:blame',
+ 'prop:chaperone-contract', 'prop:checked-procedure', 'prop:contract',
+ 'prop:contracted', 'prop:custom-print-quotable', 'prop:custom-write',
+ 'prop:dict', 'prop:dict/contract', 'prop:equal+hash', 'prop:evt',
+ 'prop:exn:missing-module', 'prop:exn:srclocs',
+ 'prop:expansion-contexts', 'prop:flat-contract',
+ 'prop:impersonator-of', 'prop:input-port',
+ 'prop:liberal-define-context', 'prop:object-name',
+ 'prop:opt-chaperone-contract', 'prop:opt-chaperone-contract-get-test',
+ 'prop:opt-chaperone-contract?', 'prop:orc-contract',
+ 'prop:orc-contract-get-subcontracts', 'prop:orc-contract?',
+ 'prop:output-port', 'prop:place-location', 'prop:procedure',
+ 'prop:recursive-contract', 'prop:recursive-contract-unroll',
+ 'prop:recursive-contract?', 'prop:rename-transformer', 'prop:sequence',
+ 'prop:set!-transformer', 'prop:stream', 'proper-subset?',
+ 'pseudo-random-generator->vector', 'pseudo-random-generator-vector?',
+ 'pseudo-random-generator?', 'put-preferences', 'putenv', 'quotient',
+ 'quotient/remainder', 'radians->degrees', 'raise',
+ 'raise-argument-error', 'raise-arguments-error', 'raise-arity-error',
+ 'raise-blame-error', 'raise-contract-error', 'raise-mismatch-error',
+ 'raise-not-cons-blame-error', 'raise-range-error',
+ 'raise-result-error', 'raise-syntax-error', 'raise-type-error',
+ 'raise-user-error', 'random', 'random-seed', 'range', 'rational?',
+ 'rationalize', 'read', 'read-accept-bar-quote', 'read-accept-box',
+ 'read-accept-compiled', 'read-accept-dot', 'read-accept-graph',
+ 'read-accept-infix-dot', 'read-accept-lang', 'read-accept-quasiquote',
+ 'read-accept-reader', 'read-byte', 'read-byte-or-special',
+ 'read-bytes', 'read-bytes!', 'read-bytes!-evt', 'read-bytes-avail!',
+ 'read-bytes-avail!*', 'read-bytes-avail!-evt',
+ 'read-bytes-avail!/enable-break', 'read-bytes-evt', 'read-bytes-line',
+ 'read-bytes-line-evt', 'read-case-sensitive', 'read-cdot', 'read-char',
+ 'read-char-or-special', 'read-curly-brace-as-paren',
+ 'read-curly-brace-with-tag', 'read-decimal-as-inexact',
+ 'read-eval-print-loop', 'read-language', 'read-line', 'read-line-evt',
+ 'read-on-demand-source', 'read-square-bracket-as-paren',
+ 'read-square-bracket-with-tag', 'read-string', 'read-string!',
+ 'read-string!-evt', 'read-string-evt', 'read-syntax',
+ 'read-syntax/recursive', 'read/recursive', 'readtable-mapping',
+ 'readtable?', 'real->decimal-string', 'real->double-flonum',
+ 'real->floating-point-bytes', 'real->single-flonum', 'real-in',
+ 'real-part', 'real?', 'reencode-input-port', 'reencode-output-port',
+ 'regexp', 'regexp-match', 'regexp-match*', 'regexp-match-evt',
+ 'regexp-match-exact?', 'regexp-match-peek',
+ 'regexp-match-peek-immediate', 'regexp-match-peek-positions',
+ 'regexp-match-peek-positions*',
+ 'regexp-match-peek-positions-immediate',
+ 'regexp-match-peek-positions-immediate/end',
+ 'regexp-match-peek-positions/end', 'regexp-match-positions',
+ 'regexp-match-positions*', 'regexp-match-positions/end',
+ 'regexp-match/end', 'regexp-match?', 'regexp-max-lookbehind',
+ 'regexp-quote', 'regexp-replace', 'regexp-replace*',
+ 'regexp-replace-quote', 'regexp-replaces', 'regexp-split',
+ 'regexp-try-match', 'regexp?', 'relative-path?', 'relocate-input-port',
+ 'relocate-output-port', 'remainder', 'remf', 'remf*', 'remove',
+ 'remove*', 'remove-duplicates', 'remq', 'remq*', 'remv', 'remv*',
+ 'rename-contract', 'rename-file-or-directory',
+ 'rename-transformer-target', 'rename-transformer?', 'replace-evt',
+ 'reroot-path', 'resolve-path', 'resolved-module-path-name',
+ 'resolved-module-path?', 'rest', 'reverse', 'round', 'second',
+ 'seconds->date', 'security-guard?', 'semaphore-peek-evt',
+ 'semaphore-peek-evt?', 'semaphore-post', 'semaphore-try-wait?',
+ 'semaphore-wait', 'semaphore-wait/enable-break', 'semaphore?',
+ 'sequence->list', 'sequence->stream', 'sequence-add-between',
+ 'sequence-andmap', 'sequence-append', 'sequence-count',
+ 'sequence-filter', 'sequence-fold', 'sequence-for-each',
+ 'sequence-generate', 'sequence-generate*', 'sequence-length',
+ 'sequence-map', 'sequence-ormap', 'sequence-ref', 'sequence-tail',
+ 'sequence/c', 'sequence?', 'set', 'set!-transformer-procedure',
+ 'set!-transformer?', 'set->list', 'set->stream', 'set-add', 'set-add!',
+ 'set-box!', 'set-clear', 'set-clear!', 'set-copy', 'set-copy-clear',
+ 'set-count', 'set-empty?', 'set-eq?', 'set-equal?', 'set-eqv?',
+ 'set-first', 'set-for-each', 'set-implements/c', 'set-implements?',
+ 'set-intersect', 'set-intersect!', 'set-map', 'set-mcar!', 'set-mcdr!',
+ 'set-member?', 'set-mutable?', 'set-phantom-bytes!',
+ 'set-port-next-location!', 'set-remove', 'set-remove!', 'set-rest',
+ 'set-some-basic-contracts!', 'set-subtract', 'set-subtract!',
+ 'set-symmetric-difference', 'set-symmetric-difference!', 'set-union',
+ 'set-union!', 'set-weak?', 'set/c', 'set=?', 'set?', 'seteq', 'seteqv',
+ 'seventh', 'sgn', 'shared-bytes', 'shell-execute', 'shrink-path-wrt',
+ 'shuffle', 'simple-form-path', 'simplify-path', 'sin',
+ 'single-flonum?', 'sinh', 'sixth', 'skip-projection-wrapper?', 'sleep',
+ 'some-system-path->string', 'sort', 'special-comment-value',
+ 'special-comment?', 'special-filter-input-port', 'split-at',
+ 'split-at-right', 'split-common-prefix', 'split-path', 'splitf-at',
+ 'splitf-at-right', 'sqr', 'sqrt', 'srcloc', 'srcloc->string',
+ 'srcloc-column', 'srcloc-line', 'srcloc-position', 'srcloc-source',
+ 'srcloc-span', 'srcloc?', 'stop-after', 'stop-before', 'stream->list',
+ 'stream-add-between', 'stream-andmap', 'stream-append', 'stream-count',
+ 'stream-empty?', 'stream-filter', 'stream-first', 'stream-fold',
+ 'stream-for-each', 'stream-length', 'stream-map', 'stream-ormap',
+ 'stream-ref', 'stream-rest', 'stream-tail', 'stream/c', 'stream?',
+ 'string', 'string->bytes/latin-1', 'string->bytes/locale',
+ 'string->bytes/utf-8', 'string->immutable-string', 'string->keyword',
+ 'string->list', 'string->number', 'string->path',
+ 'string->path-element', 'string->some-system-path', 'string->symbol',
+ 'string->uninterned-symbol', 'string->unreadable-symbol',
+ 'string-append', 'string-append*', 'string-ci<=?', 'string-ci<?',
+ 'string-ci=?', 'string-ci>=?', 'string-ci>?', 'string-contains?',
+ 'string-copy', 'string-copy!', 'string-downcase',
+ 'string-environment-variable-name?', 'string-fill!', 'string-foldcase',
+ 'string-join', 'string-len/c', 'string-length', 'string-locale-ci<?',
+ 'string-locale-ci=?', 'string-locale-ci>?', 'string-locale-downcase',
+ 'string-locale-upcase', 'string-locale<?', 'string-locale=?',
+ 'string-locale>?', 'string-no-nuls?', 'string-normalize-nfc',
+ 'string-normalize-nfd', 'string-normalize-nfkc',
+ 'string-normalize-nfkd', 'string-normalize-spaces', 'string-port?',
+ 'string-prefix?', 'string-ref', 'string-replace', 'string-set!',
+ 'string-split', 'string-suffix?', 'string-titlecase', 'string-trim',
+ 'string-upcase', 'string-utf-8-length', 'string<=?', 'string<?',
+ 'string=?', 'string>=?', 'string>?', 'string?', 'struct->vector',
+ 'struct-accessor-procedure?', 'struct-constructor-procedure?',
+ 'struct-info', 'struct-mutator-procedure?',
+ 'struct-predicate-procedure?', 'struct-type-info',
+ 'struct-type-make-constructor', 'struct-type-make-predicate',
+ 'struct-type-property-accessor-procedure?', 'struct-type-property/c',
+ 'struct-type-property?', 'struct-type?', 'struct:arity-at-least',
+ 'struct:arrow-contract-info', 'struct:date', 'struct:date*',
+ 'struct:exn', 'struct:exn:break', 'struct:exn:break:hang-up',
+ 'struct:exn:break:terminate', 'struct:exn:fail',
+ 'struct:exn:fail:contract', 'struct:exn:fail:contract:arity',
+ 'struct:exn:fail:contract:blame',
+ 'struct:exn:fail:contract:continuation',
+ 'struct:exn:fail:contract:divide-by-zero',
+ 'struct:exn:fail:contract:non-fixnum-result',
+ 'struct:exn:fail:contract:variable', 'struct:exn:fail:filesystem',
+ 'struct:exn:fail:filesystem:errno',
+ 'struct:exn:fail:filesystem:exists',
+ 'struct:exn:fail:filesystem:missing-module',
+ 'struct:exn:fail:filesystem:version', 'struct:exn:fail:network',
+ 'struct:exn:fail:network:errno', 'struct:exn:fail:object',
+ 'struct:exn:fail:out-of-memory', 'struct:exn:fail:read',
+ 'struct:exn:fail:read:eof', 'struct:exn:fail:read:non-char',
+ 'struct:exn:fail:syntax', 'struct:exn:fail:syntax:missing-module',
+ 'struct:exn:fail:syntax:unbound', 'struct:exn:fail:unsupported',
+ 'struct:exn:fail:user', 'struct:srcloc',
+ 'struct:wrapped-extra-arg-arrow', 'struct?', 'sub1', 'subbytes',
+ 'subclass?', 'subclass?/c', 'subprocess', 'subprocess-group-enabled',
+ 'subprocess-kill', 'subprocess-pid', 'subprocess-status',
+ 'subprocess-wait', 'subprocess?', 'subset?', 'substring', 'suggest/c',
+ 'symbol->string', 'symbol-interned?', 'symbol-unreadable?', 'symbol<?',
+ 'symbol=?', 'symbol?', 'symbols', 'sync', 'sync/enable-break',
+ 'sync/timeout', 'sync/timeout/enable-break', 'syntax->datum',
+ 'syntax->list', 'syntax-arm', 'syntax-column', 'syntax-debug-info',
+ 'syntax-disarm', 'syntax-e', 'syntax-line',
+ 'syntax-local-bind-syntaxes', 'syntax-local-certifier',
+ 'syntax-local-context', 'syntax-local-expand-expression',
+ 'syntax-local-get-shadower', 'syntax-local-identifier-as-binding',
+ 'syntax-local-introduce', 'syntax-local-lift-context',
+ 'syntax-local-lift-expression', 'syntax-local-lift-module',
+ 'syntax-local-lift-module-end-declaration',
+ 'syntax-local-lift-provide', 'syntax-local-lift-require',
+ 'syntax-local-lift-values-expression',
+ 'syntax-local-make-definition-context',
+ 'syntax-local-make-delta-introducer',
+ 'syntax-local-module-defined-identifiers',
+ 'syntax-local-module-exports',
+ 'syntax-local-module-required-identifiers', 'syntax-local-name',
+ 'syntax-local-phase-level', 'syntax-local-submodules',
+ 'syntax-local-transforming-module-provides?', 'syntax-local-value',
+ 'syntax-local-value/immediate', 'syntax-original?', 'syntax-position',
+ 'syntax-property', 'syntax-property-preserved?',
+ 'syntax-property-symbol-keys', 'syntax-protect', 'syntax-rearm',
+ 'syntax-recertify', 'syntax-shift-phase-level', 'syntax-source',
+ 'syntax-source-module', 'syntax-span', 'syntax-taint',
+ 'syntax-tainted?', 'syntax-track-origin',
+ 'syntax-transforming-module-expression?',
+ 'syntax-transforming-with-lifts?', 'syntax-transforming?', 'syntax/c',
+ 'syntax?', 'system', 'system*', 'system*/exit-code',
+ 'system-big-endian?', 'system-idle-evt', 'system-language+country',
+ 'system-library-subpath', 'system-path-convention-type', 'system-type',
+ 'system/exit-code', 'tail-marks-match?', 'take', 'take-common-prefix',
+ 'take-right', 'takef', 'takef-right', 'tan', 'tanh',
+ 'tcp-abandon-port', 'tcp-accept', 'tcp-accept-evt',
+ 'tcp-accept-ready?', 'tcp-accept/enable-break', 'tcp-addresses',
+ 'tcp-close', 'tcp-connect', 'tcp-connect/enable-break', 'tcp-listen',
+ 'tcp-listener?', 'tcp-port?', 'tentative-pretty-print-port-cancel',
+ 'tentative-pretty-print-port-transfer', 'tenth', 'terminal-port?',
+ 'the-unsupplied-arg', 'third', 'thread', 'thread-cell-ref',
+ 'thread-cell-set!', 'thread-cell-values?', 'thread-cell?',
+ 'thread-dead-evt', 'thread-dead?', 'thread-group?', 'thread-receive',
+ 'thread-receive-evt', 'thread-resume', 'thread-resume-evt',
+ 'thread-rewind-receive', 'thread-running?', 'thread-send',
+ 'thread-suspend', 'thread-suspend-evt', 'thread-try-receive',
+ 'thread-wait', 'thread/suspend-to-kill', 'thread?', 'time-apply',
+ 'touch', 'transplant-input-port', 'transplant-output-port', 'true',
+ 'truncate', 'udp-addresses', 'udp-bind!', 'udp-bound?', 'udp-close',
+ 'udp-connect!', 'udp-connected?', 'udp-multicast-interface',
+ 'udp-multicast-join-group!', 'udp-multicast-leave-group!',
+ 'udp-multicast-loopback?', 'udp-multicast-set-interface!',
+ 'udp-multicast-set-loopback!', 'udp-multicast-set-ttl!',
+ 'udp-multicast-ttl', 'udp-open-socket', 'udp-receive!',
+ 'udp-receive!*', 'udp-receive!-evt', 'udp-receive!/enable-break',
+ 'udp-receive-ready-evt', 'udp-send', 'udp-send*', 'udp-send-evt',
+ 'udp-send-ready-evt', 'udp-send-to', 'udp-send-to*', 'udp-send-to-evt',
+ 'udp-send-to/enable-break', 'udp-send/enable-break', 'udp?', 'unbox',
+ 'uncaught-exception-handler', 'unit?', 'unspecified-dom',
+ 'unsupplied-arg?', 'use-collection-link-paths',
+ 'use-compiled-file-paths', 'use-user-specific-search-paths',
+ 'user-execute-bit', 'user-read-bit', 'user-write-bit', 'value-blame',
+ 'value-contract', 'values', 'variable-reference->empty-namespace',
+ 'variable-reference->module-base-phase',
+ 'variable-reference->module-declaration-inspector',
+ 'variable-reference->module-path-index',
+ 'variable-reference->module-source', 'variable-reference->namespace',
+ 'variable-reference->phase',
+ 'variable-reference->resolved-module-path',
+ 'variable-reference-constant?', 'variable-reference?', 'vector',
+ 'vector->immutable-vector', 'vector->list',
+ 'vector->pseudo-random-generator', 'vector->pseudo-random-generator!',
+ 'vector->values', 'vector-append', 'vector-argmax', 'vector-argmin',
+ 'vector-copy', 'vector-copy!', 'vector-count', 'vector-drop',
+ 'vector-drop-right', 'vector-fill!', 'vector-filter',
+ 'vector-filter-not', 'vector-immutable', 'vector-immutable/c',
+ 'vector-immutableof', 'vector-length', 'vector-map', 'vector-map!',
+ 'vector-member', 'vector-memq', 'vector-memv', 'vector-ref',
+ 'vector-set!', 'vector-set*!', 'vector-set-performance-stats!',
+ 'vector-split-at', 'vector-split-at-right', 'vector-take',
+ 'vector-take-right', 'vector/c', 'vector?', 'vectorof', 'version',
+ 'void', 'void?', 'weak-box-value', 'weak-box?', 'weak-set',
+ 'weak-seteq', 'weak-seteqv', 'will-execute', 'will-executor?',
+ 'will-register', 'will-try-execute', 'with-input-from-bytes',
+ 'with-input-from-file', 'with-input-from-string',
+ 'with-output-to-bytes', 'with-output-to-file', 'with-output-to-string',
+ 'would-be-future', 'wrap-evt', 'wrapped-extra-arg-arrow',
+ 'wrapped-extra-arg-arrow-extra-neg-party-argument',
+ 'wrapped-extra-arg-arrow-real-func', 'wrapped-extra-arg-arrow?',
+ 'writable<%>', 'write', 'write-byte', 'write-bytes',
+ 'write-bytes-avail', 'write-bytes-avail*', 'write-bytes-avail-evt',
+ 'write-bytes-avail/enable-break', 'write-char', 'write-special',
+ 'write-special-avail*', 'write-special-evt', 'write-string',
+ 'write-to-file', 'writeln', 'xor', 'zero?', '~.a', '~.s', '~.v', '~a',
+ '~e', '~r', '~s', '~v'
)
_opening_parenthesis = r'[([{]'
@@ -1270,7 +1270,7 @@ class RacketLexer(RegexLexer):
],
'datum': [
(r'(?s)#;|#![ /]([^\\\n]|\\.)*', Comment),
- (u';[^\\n\\r\x85\u2028\u2029]*', Comment.Single),
+ (r';[^\n\r\x85\u2028\u2029]*', Comment.Single),
(r'#\|', Comment.Multiline, 'block-comment'),
# Whitespaces
diff --git a/pygments/lexers/markup.py b/pygments/lexers/markup.py
index bd814a54..7ee161c1 100644
--- a/pygments/lexers/markup.py
+++ b/pygments/lexers/markup.py
@@ -168,8 +168,8 @@ class RstLexer(RegexLexer):
yield from do_insertions(ins, lexer.get_tokens_unprocessed(code))
# from docutils.parsers.rst.states
- closers = u'\'")]}>\u2019\u201d\xbb!?'
- unicode_delimiters = u'\u2010\u2011\u2012\u2013\u2014\u00a0'
+ closers = '\'")]}>\u2019\u201d\xbb!?'
+ unicode_delimiters = '\u2010\u2011\u2012\u2013\u2014\u00a0'
end_string_suffix = (r'((?=$)|(?=[-/:.,; \n\x00%s%s]))'
% (re.escape(unicode_delimiters),
re.escape(closers)))
diff --git a/pygments/lexers/mime.py b/pygments/lexers/mime.py
index f5bae8bd..4c6bbd5f 100644
--- a/pygments/lexers/mime.py
+++ b/pygments/lexers/mime.py
@@ -100,7 +100,7 @@ class MIMELexer(RegexLexer):
# skip first newline
if entire_body[0] == '\n':
- yield pos_body_start, Text.Whitespace, u'\n'
+ yield pos_body_start, Text.Whitespace, '\n'
pos_body_start = pos_body_start + 1
entire_body = entire_body[1:]
@@ -176,7 +176,7 @@ class MIMELexer(RegexLexer):
prefix_len = match.start(1) - match.start(0)
yield match.start(0), Text.Whitespace, match.group(0)[:prefix_len]
yield match.start(1), Name.Label, match.group(2)
- yield match.end(2), String.Delimiter, u"/"
+ yield match.end(2), String.Delimiter, '/'
yield match.start(3), Name.Label, match.group(3)
def get_content_type_subtokens(self, match):
diff --git a/pygments/lexers/modeling.py b/pygments/lexers/modeling.py
index 167ec86a..5a9071d6 100644
--- a/pygments/lexers/modeling.py
+++ b/pygments/lexers/modeling.py
@@ -38,7 +38,7 @@ class ModelicaLexer(RegexLexer):
tokens = {
'whitespace': [
- (u'[\\s\ufeff]+', Text),
+ (r'[\s\ufeff]+', Text),
(r'//[^\n]*\n?', Comment.Single),
(r'/\*.*?\*/', Comment.Multiline)
],
diff --git a/pygments/lexers/modula2.py b/pygments/lexers/modula2.py
index b95bfaec..4794ebce 100644
--- a/pygments/lexers/modula2.py
+++ b/pygments/lexers/modula2.py
@@ -1547,15 +1547,15 @@ class Modula2Lexer(RegexLexer):
# substitute lexemes when in Algol mode
if self.algol_publication_mode:
if value == '#':
- value = u'≠'
+ value = '≠'
elif value == '<=':
- value = u'≤'
+ value = '≤'
elif value == '>=':
- value = u'≥'
+ value = '≥'
elif value == '==':
- value = u'≡'
+ value = '≡'
elif value == '*.':
- value = u'•'
+ value = '•'
# return result
yield index, token, value
diff --git a/pygments/lexers/perl.py b/pygments/lexers/perl.py
index 4a3ca300..741de3fd 100644
--- a/pygments/lexers/perl.py
+++ b/pygments/lexers/perl.py
@@ -415,70 +415,70 @@ class Perl6Lexer(ExtendedRegexLexer):
# Perl 6 has a *lot* of possible bracketing characters
# this list was lifted from STD.pm6 (https://github.com/perl6/std)
PERL6_BRACKETS = {
- u'\u0028': u'\u0029', u'\u003c': u'\u003e', u'\u005b': u'\u005d',
- u'\u007b': u'\u007d', u'\u00ab': u'\u00bb', u'\u0f3a': u'\u0f3b',
- u'\u0f3c': u'\u0f3d', u'\u169b': u'\u169c', u'\u2018': u'\u2019',
- u'\u201a': u'\u2019', u'\u201b': u'\u2019', u'\u201c': u'\u201d',
- u'\u201e': u'\u201d', u'\u201f': u'\u201d', u'\u2039': u'\u203a',
- u'\u2045': u'\u2046', u'\u207d': u'\u207e', u'\u208d': u'\u208e',
- u'\u2208': u'\u220b', u'\u2209': u'\u220c', u'\u220a': u'\u220d',
- u'\u2215': u'\u29f5', u'\u223c': u'\u223d', u'\u2243': u'\u22cd',
- u'\u2252': u'\u2253', u'\u2254': u'\u2255', u'\u2264': u'\u2265',
- u'\u2266': u'\u2267', u'\u2268': u'\u2269', u'\u226a': u'\u226b',
- u'\u226e': u'\u226f', u'\u2270': u'\u2271', u'\u2272': u'\u2273',
- u'\u2274': u'\u2275', u'\u2276': u'\u2277', u'\u2278': u'\u2279',
- u'\u227a': u'\u227b', u'\u227c': u'\u227d', u'\u227e': u'\u227f',
- u'\u2280': u'\u2281', u'\u2282': u'\u2283', u'\u2284': u'\u2285',
- u'\u2286': u'\u2287', u'\u2288': u'\u2289', u'\u228a': u'\u228b',
- u'\u228f': u'\u2290', u'\u2291': u'\u2292', u'\u2298': u'\u29b8',
- u'\u22a2': u'\u22a3', u'\u22a6': u'\u2ade', u'\u22a8': u'\u2ae4',
- u'\u22a9': u'\u2ae3', u'\u22ab': u'\u2ae5', u'\u22b0': u'\u22b1',
- u'\u22b2': u'\u22b3', u'\u22b4': u'\u22b5', u'\u22b6': u'\u22b7',
- u'\u22c9': u'\u22ca', u'\u22cb': u'\u22cc', u'\u22d0': u'\u22d1',
- u'\u22d6': u'\u22d7', u'\u22d8': u'\u22d9', u'\u22da': u'\u22db',
- u'\u22dc': u'\u22dd', u'\u22de': u'\u22df', u'\u22e0': u'\u22e1',
- u'\u22e2': u'\u22e3', u'\u22e4': u'\u22e5', u'\u22e6': u'\u22e7',
- u'\u22e8': u'\u22e9', u'\u22ea': u'\u22eb', u'\u22ec': u'\u22ed',
- u'\u22f0': u'\u22f1', u'\u22f2': u'\u22fa', u'\u22f3': u'\u22fb',
- u'\u22f4': u'\u22fc', u'\u22f6': u'\u22fd', u'\u22f7': u'\u22fe',
- u'\u2308': u'\u2309', u'\u230a': u'\u230b', u'\u2329': u'\u232a',
- u'\u23b4': u'\u23b5', u'\u2768': u'\u2769', u'\u276a': u'\u276b',
- u'\u276c': u'\u276d', u'\u276e': u'\u276f', u'\u2770': u'\u2771',
- u'\u2772': u'\u2773', u'\u2774': u'\u2775', u'\u27c3': u'\u27c4',
- u'\u27c5': u'\u27c6', u'\u27d5': u'\u27d6', u'\u27dd': u'\u27de',
- u'\u27e2': u'\u27e3', u'\u27e4': u'\u27e5', u'\u27e6': u'\u27e7',
- u'\u27e8': u'\u27e9', u'\u27ea': u'\u27eb', u'\u2983': u'\u2984',
- u'\u2985': u'\u2986', u'\u2987': u'\u2988', u'\u2989': u'\u298a',
- u'\u298b': u'\u298c', u'\u298d': u'\u298e', u'\u298f': u'\u2990',
- u'\u2991': u'\u2992', u'\u2993': u'\u2994', u'\u2995': u'\u2996',
- u'\u2997': u'\u2998', u'\u29c0': u'\u29c1', u'\u29c4': u'\u29c5',
- u'\u29cf': u'\u29d0', u'\u29d1': u'\u29d2', u'\u29d4': u'\u29d5',
- u'\u29d8': u'\u29d9', u'\u29da': u'\u29db', u'\u29f8': u'\u29f9',
- u'\u29fc': u'\u29fd', u'\u2a2b': u'\u2a2c', u'\u2a2d': u'\u2a2e',
- u'\u2a34': u'\u2a35', u'\u2a3c': u'\u2a3d', u'\u2a64': u'\u2a65',
- u'\u2a79': u'\u2a7a', u'\u2a7d': u'\u2a7e', u'\u2a7f': u'\u2a80',
- u'\u2a81': u'\u2a82', u'\u2a83': u'\u2a84', u'\u2a8b': u'\u2a8c',
- u'\u2a91': u'\u2a92', u'\u2a93': u'\u2a94', u'\u2a95': u'\u2a96',
- u'\u2a97': u'\u2a98', u'\u2a99': u'\u2a9a', u'\u2a9b': u'\u2a9c',
- u'\u2aa1': u'\u2aa2', u'\u2aa6': u'\u2aa7', u'\u2aa8': u'\u2aa9',
- u'\u2aaa': u'\u2aab', u'\u2aac': u'\u2aad', u'\u2aaf': u'\u2ab0',
- u'\u2ab3': u'\u2ab4', u'\u2abb': u'\u2abc', u'\u2abd': u'\u2abe',
- u'\u2abf': u'\u2ac0', u'\u2ac1': u'\u2ac2', u'\u2ac3': u'\u2ac4',
- u'\u2ac5': u'\u2ac6', u'\u2acd': u'\u2ace', u'\u2acf': u'\u2ad0',
- u'\u2ad1': u'\u2ad2', u'\u2ad3': u'\u2ad4', u'\u2ad5': u'\u2ad6',
- u'\u2aec': u'\u2aed', u'\u2af7': u'\u2af8', u'\u2af9': u'\u2afa',
- u'\u2e02': u'\u2e03', u'\u2e04': u'\u2e05', u'\u2e09': u'\u2e0a',
- u'\u2e0c': u'\u2e0d', u'\u2e1c': u'\u2e1d', u'\u2e20': u'\u2e21',
- u'\u3008': u'\u3009', u'\u300a': u'\u300b', u'\u300c': u'\u300d',
- u'\u300e': u'\u300f', u'\u3010': u'\u3011', u'\u3014': u'\u3015',
- u'\u3016': u'\u3017', u'\u3018': u'\u3019', u'\u301a': u'\u301b',
- u'\u301d': u'\u301e', u'\ufd3e': u'\ufd3f', u'\ufe17': u'\ufe18',
- u'\ufe35': u'\ufe36', u'\ufe37': u'\ufe38', u'\ufe39': u'\ufe3a',
- u'\ufe3b': u'\ufe3c', u'\ufe3d': u'\ufe3e', u'\ufe3f': u'\ufe40',
- u'\ufe41': u'\ufe42', u'\ufe43': u'\ufe44', u'\ufe47': u'\ufe48',
- u'\ufe59': u'\ufe5a', u'\ufe5b': u'\ufe5c', u'\ufe5d': u'\ufe5e',
- u'\uff08': u'\uff09', u'\uff1c': u'\uff1e', u'\uff3b': u'\uff3d',
- u'\uff5b': u'\uff5d', u'\uff5f': u'\uff60', u'\uff62': u'\uff63',
+ '\u0028': '\u0029', '\u003c': '\u003e', '\u005b': '\u005d',
+ '\u007b': '\u007d', '\u00ab': '\u00bb', '\u0f3a': '\u0f3b',
+ '\u0f3c': '\u0f3d', '\u169b': '\u169c', '\u2018': '\u2019',
+ '\u201a': '\u2019', '\u201b': '\u2019', '\u201c': '\u201d',
+ '\u201e': '\u201d', '\u201f': '\u201d', '\u2039': '\u203a',
+ '\u2045': '\u2046', '\u207d': '\u207e', '\u208d': '\u208e',
+ '\u2208': '\u220b', '\u2209': '\u220c', '\u220a': '\u220d',
+ '\u2215': '\u29f5', '\u223c': '\u223d', '\u2243': '\u22cd',
+ '\u2252': '\u2253', '\u2254': '\u2255', '\u2264': '\u2265',
+ '\u2266': '\u2267', '\u2268': '\u2269', '\u226a': '\u226b',
+ '\u226e': '\u226f', '\u2270': '\u2271', '\u2272': '\u2273',
+ '\u2274': '\u2275', '\u2276': '\u2277', '\u2278': '\u2279',
+ '\u227a': '\u227b', '\u227c': '\u227d', '\u227e': '\u227f',
+ '\u2280': '\u2281', '\u2282': '\u2283', '\u2284': '\u2285',
+ '\u2286': '\u2287', '\u2288': '\u2289', '\u228a': '\u228b',
+ '\u228f': '\u2290', '\u2291': '\u2292', '\u2298': '\u29b8',
+ '\u22a2': '\u22a3', '\u22a6': '\u2ade', '\u22a8': '\u2ae4',
+ '\u22a9': '\u2ae3', '\u22ab': '\u2ae5', '\u22b0': '\u22b1',
+ '\u22b2': '\u22b3', '\u22b4': '\u22b5', '\u22b6': '\u22b7',
+ '\u22c9': '\u22ca', '\u22cb': '\u22cc', '\u22d0': '\u22d1',
+ '\u22d6': '\u22d7', '\u22d8': '\u22d9', '\u22da': '\u22db',
+ '\u22dc': '\u22dd', '\u22de': '\u22df', '\u22e0': '\u22e1',
+ '\u22e2': '\u22e3', '\u22e4': '\u22e5', '\u22e6': '\u22e7',
+ '\u22e8': '\u22e9', '\u22ea': '\u22eb', '\u22ec': '\u22ed',
+ '\u22f0': '\u22f1', '\u22f2': '\u22fa', '\u22f3': '\u22fb',
+ '\u22f4': '\u22fc', '\u22f6': '\u22fd', '\u22f7': '\u22fe',
+ '\u2308': '\u2309', '\u230a': '\u230b', '\u2329': '\u232a',
+ '\u23b4': '\u23b5', '\u2768': '\u2769', '\u276a': '\u276b',
+ '\u276c': '\u276d', '\u276e': '\u276f', '\u2770': '\u2771',
+ '\u2772': '\u2773', '\u2774': '\u2775', '\u27c3': '\u27c4',
+ '\u27c5': '\u27c6', '\u27d5': '\u27d6', '\u27dd': '\u27de',
+ '\u27e2': '\u27e3', '\u27e4': '\u27e5', '\u27e6': '\u27e7',
+ '\u27e8': '\u27e9', '\u27ea': '\u27eb', '\u2983': '\u2984',
+ '\u2985': '\u2986', '\u2987': '\u2988', '\u2989': '\u298a',
+ '\u298b': '\u298c', '\u298d': '\u298e', '\u298f': '\u2990',
+ '\u2991': '\u2992', '\u2993': '\u2994', '\u2995': '\u2996',
+ '\u2997': '\u2998', '\u29c0': '\u29c1', '\u29c4': '\u29c5',
+ '\u29cf': '\u29d0', '\u29d1': '\u29d2', '\u29d4': '\u29d5',
+ '\u29d8': '\u29d9', '\u29da': '\u29db', '\u29f8': '\u29f9',
+ '\u29fc': '\u29fd', '\u2a2b': '\u2a2c', '\u2a2d': '\u2a2e',
+ '\u2a34': '\u2a35', '\u2a3c': '\u2a3d', '\u2a64': '\u2a65',
+ '\u2a79': '\u2a7a', '\u2a7d': '\u2a7e', '\u2a7f': '\u2a80',
+ '\u2a81': '\u2a82', '\u2a83': '\u2a84', '\u2a8b': '\u2a8c',
+ '\u2a91': '\u2a92', '\u2a93': '\u2a94', '\u2a95': '\u2a96',
+ '\u2a97': '\u2a98', '\u2a99': '\u2a9a', '\u2a9b': '\u2a9c',
+ '\u2aa1': '\u2aa2', '\u2aa6': '\u2aa7', '\u2aa8': '\u2aa9',
+ '\u2aaa': '\u2aab', '\u2aac': '\u2aad', '\u2aaf': '\u2ab0',
+ '\u2ab3': '\u2ab4', '\u2abb': '\u2abc', '\u2abd': '\u2abe',
+ '\u2abf': '\u2ac0', '\u2ac1': '\u2ac2', '\u2ac3': '\u2ac4',
+ '\u2ac5': '\u2ac6', '\u2acd': '\u2ace', '\u2acf': '\u2ad0',
+ '\u2ad1': '\u2ad2', '\u2ad3': '\u2ad4', '\u2ad5': '\u2ad6',
+ '\u2aec': '\u2aed', '\u2af7': '\u2af8', '\u2af9': '\u2afa',
+ '\u2e02': '\u2e03', '\u2e04': '\u2e05', '\u2e09': '\u2e0a',
+ '\u2e0c': '\u2e0d', '\u2e1c': '\u2e1d', '\u2e20': '\u2e21',
+ '\u3008': '\u3009', '\u300a': '\u300b', '\u300c': '\u300d',
+ '\u300e': '\u300f', '\u3010': '\u3011', '\u3014': '\u3015',
+ '\u3016': '\u3017', '\u3018': '\u3019', '\u301a': '\u301b',
+ '\u301d': '\u301e', '\ufd3e': '\ufd3f', '\ufe17': '\ufe18',
+ '\ufe35': '\ufe36', '\ufe37': '\ufe38', '\ufe39': '\ufe3a',
+ '\ufe3b': '\ufe3c', '\ufe3d': '\ufe3e', '\ufe3f': '\ufe40',
+ '\ufe41': '\ufe42', '\ufe43': '\ufe44', '\ufe47': '\ufe48',
+ '\ufe59': '\ufe5a', '\ufe5b': '\ufe5c', '\ufe5d': '\ufe5e',
+ '\uff08': '\uff09', '\uff1c': '\uff1e', '\uff3b': '\uff3d',
+ '\uff5b': '\uff5d', '\uff5f': '\uff60', '\uff62': '\uff63',
}
def _build_word_match(words, boundary_regex_fragment=None, prefix='', suffix=''):
@@ -602,11 +602,11 @@ class Perl6Lexer(ExtendedRegexLexer):
Name.Builtin),
(_build_word_match(PERL6_BUILTINS, PERL6_IDENTIFIER_RANGE), Name.Builtin),
# copied from PerlLexer
- (r'[$@%&][.^:?=!~]?' + PERL6_IDENTIFIER_RANGE + u'+(?:<<.*?>>|<.*?>|«.*?»)*',
+ (r'[$@%&][.^:?=!~]?' + PERL6_IDENTIFIER_RANGE + '+(?:<<.*?>>|<.*?>|«.*?»)*',
Name.Variable),
(r'\$[!/](?:<<.*?>>|<.*?>|«.*?»)*', Name.Variable.Global),
(r'::\?\w+', Name.Variable.Global),
- (r'[$@%&]\*' + PERL6_IDENTIFIER_RANGE + u'+(?:<<.*?>>|<.*?>|«.*?»)*',
+ (r'[$@%&]\*' + PERL6_IDENTIFIER_RANGE + '+(?:<<.*?>>|<.*?>|«.*?»)*',
Name.Variable.Global),
(r'\$(?:<.*?>)+', Name.Variable),
(r'(?:q|qq|Q)[a-zA-Z]?\s*(?P<adverbs>:[\w\s:]+)?\s*(?P<delimiter>(?P<first_char>[^0-9a-zA-Z:\s])'
diff --git a/pygments/lexers/php.py b/pygments/lexers/php.py
index 2bad339a..aab502e2 100644
--- a/pygments/lexers/php.py
+++ b/pygments/lexers/php.py
@@ -116,13 +116,13 @@ class PsyshConsoleLexer(Lexer):
insertions = []
for match in line_re.finditer(text):
line = match.group()
- if line.startswith(u'>>> ') or line.startswith(u'... '):
+ if line.startswith('>>> ') or line.startswith('... '):
insertions.append((len(curcode),
[(0, Generic.Prompt, line[:4])]))
curcode += line[4:]
- elif line.rstrip() == u'...':
+ elif line.rstrip() == '...':
insertions.append((len(curcode),
- [(0, Generic.Prompt, u'...')]))
+ [(0, Generic.Prompt, '...')]))
curcode += line[3:]
else:
if curcode:
diff --git a/pygments/lexers/prolog.py b/pygments/lexers/prolog.py
index 40ef0df3..94f4024c 100644
--- a/pygments/lexers/prolog.py
+++ b/pygments/lexers/prolog.py
@@ -55,22 +55,22 @@ class PrologLexer(RegexLexer):
(r'(mod|div|not)\b', Operator),
(r'_', Keyword), # The don't-care variable
(r'([a-z]+)(:)', bygroups(Name.Namespace, Punctuation)),
- (u'([a-z\u00c0-\u1fff\u3040-\ud7ff\ue000-\uffef]'
- u'[\\w$\u00c0-\u1fff\u3040-\ud7ff\ue000-\uffef]*)'
- u'(\\s*)(:-|-->)',
+ (r'([a-z\u00c0-\u1fff\u3040-\ud7ff\ue000-\uffef]'
+ r'[\w$\u00c0-\u1fff\u3040-\ud7ff\ue000-\uffef]*)'
+ r'(\s*)(:-|-->)',
bygroups(Name.Function, Text, Operator)), # function defn
- (u'([a-z\u00c0-\u1fff\u3040-\ud7ff\ue000-\uffef]'
- u'[\\w$\u00c0-\u1fff\u3040-\ud7ff\ue000-\uffef]*)'
- u'(\\s*)(\\()',
+ (r'([a-z\u00c0-\u1fff\u3040-\ud7ff\ue000-\uffef]'
+ r'[\w$\u00c0-\u1fff\u3040-\ud7ff\ue000-\uffef]*)'
+ r'(\s*)(\()',
bygroups(Name.Function, Text, Punctuation)),
- (u'[a-z\u00c0-\u1fff\u3040-\ud7ff\ue000-\uffef]'
- u'[\\w$\u00c0-\u1fff\u3040-\ud7ff\ue000-\uffef]*',
+ (r'[a-z\u00c0-\u1fff\u3040-\ud7ff\ue000-\uffef]'
+ r'[\w$\u00c0-\u1fff\u3040-\ud7ff\ue000-\uffef]*',
String.Atom), # atom, characters
# This one includes !
- (u'[#&*+\\-./:<=>?@\\\\^~\u00a1-\u00bf\u2010-\u303f]+',
+ (r'[#&*+\-./:<=>?@\\^~\u00a1-\u00bf\u2010-\u303f]+',
String.Atom), # atom, graphics
(r'[A-Z_]\w*', Name.Variable),
- (u'\\s+|[\u2000-\u200f\ufff0-\ufffe\uffef]', Text),
+ (r'\s+|[\u2000-\u200f\ufff0-\ufffe\uffef]', Text),
],
'nested-comment': [
(r'\*/', Comment.Multiline, '#pop'),
diff --git a/pygments/lexers/python.py b/pygments/lexers/python.py
index 22d21430..10157999 100644
--- a/pygments/lexers/python.py
+++ b/pygments/lexers/python.py
@@ -646,17 +646,17 @@ class PythonConsoleLexer(Lexer):
tb = 0
for match in line_re.finditer(text):
line = match.group()
- if line.startswith(u'>>> ') or line.startswith(u'... '):
+ if line.startswith('>>> ') or line.startswith('... '):
tb = 0
insertions.append((len(curcode),
[(0, Generic.Prompt, line[:4])]))
curcode += line[4:]
- elif line.rstrip() == u'...' and not tb:
+ elif line.rstrip() == '...' and not tb:
# only a new >>> prompt can end an exception block
# otherwise an ellipsis in place of the traceback frames
# will be mishandled
insertions.append((len(curcode),
- [(0, Generic.Prompt, u'...')]))
+ [(0, Generic.Prompt, '...')]))
curcode += line[3:]
else:
if curcode:
@@ -664,8 +664,8 @@ class PythonConsoleLexer(Lexer):
insertions, pylexer.get_tokens_unprocessed(curcode))
curcode = ''
insertions = []
- if (line.startswith(u'Traceback (most recent call last):') or
- re.match(u' File "[^"]+", line \\d+\\n$', line)):
+ if (line.startswith('Traceback (most recent call last):') or
+ re.match(' File "[^"]+", line \\d+\\n$', line)):
tb = 1
curtb = line
tbindex = match.start()
@@ -673,7 +673,7 @@ class PythonConsoleLexer(Lexer):
yield match.start(), Name.Class, line
elif tb:
curtb += line
- if not (line.startswith(' ') or line.strip() == u'...'):
+ if not (line.startswith(' ') or line.strip() == '...'):
tb = 0
for i, t, v in tblexer.get_tokens_unprocessed(curtb):
yield tbindex+i, t, v
diff --git a/pygments/lexers/qvt.py b/pygments/lexers/qvt.py
index 515d7270..680d3fb8 100644
--- a/pygments/lexers/qvt.py
+++ b/pygments/lexers/qvt.py
@@ -18,7 +18,7 @@ __all__ = ['QVToLexer']
class QVToLexer(RegexLexer):
- u"""
+ """
For the `QVT Operational Mapping language <http://www.omg.org/spec/QVT/1.1/>`_.
Reference for implementing this: «Meta Object Facility (MOF) 2.0
diff --git a/pygments/lexers/rdf.py b/pygments/lexers/rdf.py
index 8bbd4b0c..136850bd 100644
--- a/pygments/lexers/rdf.py
+++ b/pygments/lexers/rdf.py
@@ -31,27 +31,27 @@ class SparqlLexer(RegexLexer):
# character group definitions ::
- PN_CHARS_BASE_GRP = (u'a-zA-Z'
- u'\u00c0-\u00d6'
- u'\u00d8-\u00f6'
- u'\u00f8-\u02ff'
- u'\u0370-\u037d'
- u'\u037f-\u1fff'
- u'\u200c-\u200d'
- u'\u2070-\u218f'
- u'\u2c00-\u2fef'
- u'\u3001-\ud7ff'
- u'\uf900-\ufdcf'
- u'\ufdf0-\ufffd')
+ PN_CHARS_BASE_GRP = ('a-zA-Z'
+ '\u00c0-\u00d6'
+ '\u00d8-\u00f6'
+ '\u00f8-\u02ff'
+ '\u0370-\u037d'
+ '\u037f-\u1fff'
+ '\u200c-\u200d'
+ '\u2070-\u218f'
+ '\u2c00-\u2fef'
+ '\u3001-\ud7ff'
+ '\uf900-\ufdcf'
+ '\ufdf0-\ufffd')
PN_CHARS_U_GRP = (PN_CHARS_BASE_GRP + '_')
PN_CHARS_GRP = (PN_CHARS_U_GRP +
r'\-' +
r'0-9' +
- u'\u00b7' +
- u'\u0300-\u036f' +
- u'\u203f-\u2040')
+ '\u00b7' +
+ '\u0300-\u036f' +
+ '\u203f-\u2040')
HEX_GRP = '0-9A-Fa-f'
@@ -76,8 +76,8 @@ class SparqlLexer(RegexLexer):
PN_PREFIX = PN_CHARS_BASE + '(?:[' + PN_CHARS_GRP + '.]*' + PN_CHARS + ')?'
- VARNAME = u'[0-9' + PN_CHARS_U_GRP + '][' + PN_CHARS_U_GRP + \
- u'0-9\u00b7\u0300-\u036f\u203f-\u2040]*'
+ VARNAME = '[0-9' + PN_CHARS_U_GRP + '][' + PN_CHARS_U_GRP + \
+ '0-9\u00b7\u0300-\u036f\u203f-\u2040]*'
PERCENT = '%' + HEX + HEX
@@ -288,27 +288,27 @@ class ShExCLexer(RegexLexer):
# character group definitions ::
- PN_CHARS_BASE_GRP = (u'a-zA-Z'
- u'\u00c0-\u00d6'
- u'\u00d8-\u00f6'
- u'\u00f8-\u02ff'
- u'\u0370-\u037d'
- u'\u037f-\u1fff'
- u'\u200c-\u200d'
- u'\u2070-\u218f'
- u'\u2c00-\u2fef'
- u'\u3001-\ud7ff'
- u'\uf900-\ufdcf'
- u'\ufdf0-\ufffd')
+ PN_CHARS_BASE_GRP = ('a-zA-Z'
+ '\u00c0-\u00d6'
+ '\u00d8-\u00f6'
+ '\u00f8-\u02ff'
+ '\u0370-\u037d'
+ '\u037f-\u1fff'
+ '\u200c-\u200d'
+ '\u2070-\u218f'
+ '\u2c00-\u2fef'
+ '\u3001-\ud7ff'
+ '\uf900-\ufdcf'
+ '\ufdf0-\ufffd')
PN_CHARS_U_GRP = (PN_CHARS_BASE_GRP + '_')
PN_CHARS_GRP = (PN_CHARS_U_GRP +
r'\-' +
r'0-9' +
- u'\u00b7' +
- u'\u0300-\u036f' +
- u'\u203f-\u2040')
+ '\u00b7' +
+ '\u0300-\u036f' +
+ '\u203f-\u2040')
HEX_GRP = '0-9A-Fa-f'
diff --git a/pygments/lexers/scripting.py b/pygments/lexers/scripting.py
index 843cddfc..50f47681 100644
--- a/pygments/lexers/scripting.py
+++ b/pygments/lexers/scripting.py
@@ -157,7 +157,7 @@ class LuaLexer(RegexLexer):
elif '.' in value:
a, b = value.split('.')
yield index, Name, a
- yield index + len(a), Punctuation, u'.'
+ yield index + len(a), Punctuation, '.'
yield index + len(a) + 1, Name, b
continue
yield index, token, value
@@ -659,18 +659,18 @@ class AppleScriptLexer(RegexLexer):
tokens = {
'root': [
(r'\s+', Text),
- (u'¬\\n', String.Escape),
+ (r'¬\n', String.Escape),
(r"'s\s+", Text), # This is a possessive, consider moving
(r'(--|#).*?$', Comment),
(r'\(\*', Comment.Multiline, 'comment'),
(r'[(){}!,.:]', Punctuation),
- (u'(«)([^»]+)(»)',
+ (r'(«)([^»]+)(»)',
bygroups(Text, Name.Builtin, Text)),
(r'\b((?:considering|ignoring)\s*)'
r'(application responses|case|diacriticals|hyphens|'
r'numeric strings|punctuation|white space)',
bygroups(Keyword, Name.Builtin)),
- (u'(-|\\*|\\+|&|≠|>=?|<=?|=|≥|≤|/|÷|\\^)', Operator),
+ (r'(-|\*|\+|&|≠|>=?|<=?|=|≥|≤|/|÷|\^)', Operator),
(r"\b(%s)\b" % '|'.join(Operators), Operator.Word),
(r'^(\s*(?:on|end)\s+)'
r'(%s)' % '|'.join(StudioEvents[::-1]),
@@ -976,7 +976,7 @@ class EasytrieveLexer(RegexLexer):
_DELIMITER_PATTERN = '[' + _DELIMITERS + ']'
_DELIMITER_PATTERN_CAPTURE = '(' + _DELIMITER_PATTERN + ')'
_NON_DELIMITER_OR_COMMENT_PATTERN = '[^' + _DELIMITERS_OR_COMENT + ']'
- _OPERATORS_PATTERN = u'[.+\\-/=\\[\\](){}<>;,&%¬]'
+ _OPERATORS_PATTERN = '[.+\\-/=\\[\\](){}<>;,&%¬]'
_KEYWORDS = [
'AFTER-BREAK', 'AFTER-LINE', 'AFTER-SCREEN', 'AIM', 'AND', 'ATTR',
'BEFORE', 'BEFORE-BREAK', 'BEFORE-LINE', 'BEFORE-SCREEN', 'BUSHU',
diff --git a/pygments/lexers/slash.py b/pygments/lexers/slash.py
index 8c9d53d2..84e1d2e6 100644
--- a/pygments/lexers/slash.py
+++ b/pygments/lexers/slash.py
@@ -26,7 +26,7 @@ class SlashLanguageLexer(ExtendedRegexLexer):
def right_angle_bracket(lexer, match, ctx):
if len(ctx.stack) > 1 and ctx.stack[-2] == "string":
ctx.stack.pop()
- yield match.start(), String.Interpol, u"}"
+ yield match.start(), String.Interpol, '}'
ctx.pos = match.end()
pass
diff --git a/pygments/lexers/testing.py b/pygments/lexers/testing.py
index 914bc1ec..919cc774 100644
--- a/pygments/lexers/testing.py
+++ b/pygments/lexers/testing.py
@@ -26,10 +26,10 @@ class GherkinLexer(RegexLexer):
filenames = ['*.feature']
mimetypes = ['text/x-gherkin']
- feature_keywords = u'^(기능|機能|功能|フィーチャ|خاصية|תכונה|Функціонал|Функционалност|Функционал|Фича|Особина|Могућност|Özellik|Właściwość|Tính năng|Trajto|Savybė|Požiadavka|Požadavek|Osobina|Ominaisuus|Omadus|OH HAI|Mogućnost|Mogucnost|Jellemző|Fīča|Funzionalità|Funktionalität|Funkcionalnost|Funkcionalitāte|Funcționalitate|Functionaliteit|Functionalitate|Funcionalitat|Funcionalidade|Fonctionnalité|Fitur|Feature|Egenskap|Egenskab|Crikey|Característica|Arwedd)(:)(.*)$'
- feature_element_keywords = u'^(\\s*)(시나리오 개요|시나리오|배경|背景|場景大綱|場景|场景大纲|场景|劇本大綱|劇本|剧本大纲|剧本|テンプレ|シナリオテンプレート|シナリオテンプレ|シナリオアウトライン|シナリオ|سيناريو مخطط|سيناريو|الخلفية|תרחיש|תבנית תרחיש|רקע|Тарих|Сценарій|Сценарио|Сценарий структураси|Сценарий|Структура сценарію|Структура сценарија|Структура сценария|Скица|Рамка на сценарий|Пример|Предыстория|Предистория|Позадина|Передумова|Основа|Концепт|Контекст|Założenia|Wharrimean is|Tình huống|The thing of it is|Tausta|Taust|Tapausaihio|Tapaus|Szenariogrundriss|Szenario|Szablon scenariusza|Stsenaarium|Struktura scenarija|Skica|Skenario konsep|Skenario|Situācija|Senaryo taslağı|Senaryo|Scénář|Scénario|Schema dello scenario|Scenārijs pēc parauga|Scenārijs|Scenár|Scenaro|Scenariusz|Scenariul de şablon|Scenariul de sablon|Scenariu|Scenario Outline|Scenario Amlinellol|Scenario|Scenarijus|Scenarijaus šablonas|Scenarij|Scenarie|Rerefons|Raamstsenaarium|Primer|Pozadí|Pozadina|Pozadie|Plan du scénario|Plan du Scénario|Osnova scénáře|Osnova|Náčrt Scénáře|Náčrt Scenáru|Mate|MISHUN SRSLY|MISHUN|Kịch bản|Konturo de la scenaro|Kontext|Konteksts|Kontekstas|Kontekst|Koncept|Khung tình huống|Khung kịch bản|Háttér|Grundlage|Geçmiş|Forgatókönyv vázlat|Forgatókönyv|Fono|Esquema do Cenário|Esquema do Cenario|Esquema del escenario|Esquema de l\'escenari|Escenario|Escenari|Dis is what went down|Dasar|Contexto|Contexte|Contesto|Condiţii|Conditii|Cenário|Cenario|Cefndir|Bối cảnh|Blokes|Bakgrunn|Bakgrund|Baggrund|Background|B4|Antecedents|Antecedentes|All y\'all|Achtergrond|Abstrakt Scenario|Abstract Scenario)(:)(.*)$'
- examples_keywords = u'^(\\s*)(예|例子|例|サンプル|امثلة|דוגמאות|Сценарији|Примери|Приклади|Мисоллар|Значения|Örnekler|Voorbeelden|Variantai|Tapaukset|Scenarios|Scenariji|Scenarijai|Příklady|Példák|Príklady|Przykłady|Primjeri|Primeri|Piemēri|Pavyzdžiai|Paraugs|Juhtumid|Exemplos|Exemples|Exemplele|Exempel|Examples|Esempi|Enghreifftiau|Ekzemploj|Eksempler|Ejemplos|EXAMPLZ|Dữ liệu|Contoh|Cobber|Beispiele)(:)(.*)$'
- step_keywords = u'^(\\s*)(하지만|조건|먼저|만일|만약|단|그리고|그러면|那麼|那么|而且|當|当|前提|假設|假设|假如|假定|但是|但し|並且|并且|同時|同时|もし|ならば|ただし|しかし|かつ|و |متى |لكن |عندما |ثم |بفرض |اذاً |כאשר |וגם |בהינתן |אזי |אז |אבל |Якщо |Унда |То |Припустимо, що |Припустимо |Онда |Но |Нехай |Лекин |Когато |Када |Кад |К тому же |И |Задато |Задати |Задате |Если |Допустим |Дадено |Ва |Бирок |Аммо |Али |Але |Агар |А |І |Și |És |Zatati |Zakładając |Zadato |Zadate |Zadano |Zadani |Zadan |Youse know when youse got |Youse know like when |Yna |Ya know how |Ya gotta |Y |Wun |Wtedy |When y\'all |When |Wenn |WEN |Và |Ve |Und |Un |Thì |Then y\'all |Then |Tapi |Tak |Tada |Tad |Så |Stel |Soit |Siis |Si |Sed |Se |Quando |Quand |Quan |Pryd |Pokud |Pokiaľ |Però |Pero |Pak |Oraz |Onda |Ond |Oletetaan |Og |Och |O zaman |Når |När |Niin |Nhưng |N |Mutta |Men |Mas |Maka |Majd |Mais |Maar |Ma |Lorsque |Lorsqu\'|Kun |Kuid |Kui |Khi |Keď |Ketika |Když |Kaj |Kai |Kada |Kad |Jeżeli |Ja |Ir |I CAN HAZ |I |Ha |Givun |Givet |Given y\'all |Given |Gitt |Gegeven |Gegeben sei |Fakat |Eğer ki |Etant donné |Et |Então |Entonces |Entao |En |Eeldades |E |Duota |Dun |Donitaĵo |Donat |Donada |Do |Diyelim ki |Dengan |Den youse gotta |De |Dato |Dar |Dann |Dan |Dado |Dacă |Daca |DEN |Când |Cuando |Cho |Cept |Cand |Cal |But y\'all |But |Buh |Biết |Bet |BUT |Atès |Atunci |Atesa |Anrhegedig a |Angenommen |And y\'all |And |An |Ama |Als |Alors |Allora |Ali |Aleshores |Ale |Akkor |Aber |AN |A také |A |\\* )'
+ feature_keywords = '^(기능|機能|功能|フィーチャ|خاصية|תכונה|Функціонал|Функционалност|Функционал|Фича|Особина|Могућност|Özellik|Właściwość|Tính năng|Trajto|Savybė|Požiadavka|Požadavek|Osobina|Ominaisuus|Omadus|OH HAI|Mogućnost|Mogucnost|Jellemző|Fīča|Funzionalità|Funktionalität|Funkcionalnost|Funkcionalitāte|Funcționalitate|Functionaliteit|Functionalitate|Funcionalitat|Funcionalidade|Fonctionnalité|Fitur|Feature|Egenskap|Egenskab|Crikey|Característica|Arwedd)(:)(.*)$'
+ feature_element_keywords = '^(\\s*)(시나리오 개요|시나리오|배경|背景|場景大綱|場景|场景大纲|场景|劇本大綱|劇本|剧本大纲|剧本|テンプレ|シナリオテンプレート|シナリオテンプレ|シナリオアウトライン|シナリオ|سيناريو مخطط|سيناريو|الخلفية|תרחיש|תבנית תרחיש|רקע|Тарих|Сценарій|Сценарио|Сценарий структураси|Сценарий|Структура сценарію|Структура сценарија|Структура сценария|Скица|Рамка на сценарий|Пример|Предыстория|Предистория|Позадина|Передумова|Основа|Концепт|Контекст|Założenia|Wharrimean is|Tình huống|The thing of it is|Tausta|Taust|Tapausaihio|Tapaus|Szenariogrundriss|Szenario|Szablon scenariusza|Stsenaarium|Struktura scenarija|Skica|Skenario konsep|Skenario|Situācija|Senaryo taslağı|Senaryo|Scénář|Scénario|Schema dello scenario|Scenārijs pēc parauga|Scenārijs|Scenár|Scenaro|Scenariusz|Scenariul de şablon|Scenariul de sablon|Scenariu|Scenario Outline|Scenario Amlinellol|Scenario|Scenarijus|Scenarijaus šablonas|Scenarij|Scenarie|Rerefons|Raamstsenaarium|Primer|Pozadí|Pozadina|Pozadie|Plan du scénario|Plan du Scénario|Osnova scénáře|Osnova|Náčrt Scénáře|Náčrt Scenáru|Mate|MISHUN SRSLY|MISHUN|Kịch bản|Konturo de la scenaro|Kontext|Konteksts|Kontekstas|Kontekst|Koncept|Khung tình huống|Khung kịch bản|Háttér|Grundlage|Geçmiş|Forgatókönyv vázlat|Forgatókönyv|Fono|Esquema do Cenário|Esquema do Cenario|Esquema del escenario|Esquema de l\'escenari|Escenario|Escenari|Dis is what went down|Dasar|Contexto|Contexte|Contesto|Condiţii|Conditii|Cenário|Cenario|Cefndir|Bối cảnh|Blokes|Bakgrunn|Bakgrund|Baggrund|Background|B4|Antecedents|Antecedentes|All y\'all|Achtergrond|Abstrakt Scenario|Abstract Scenario)(:)(.*)$'
+ examples_keywords = '^(\\s*)(예|例子|例|サンプル|امثلة|דוגמאות|Сценарији|Примери|Приклади|Мисоллар|Значения|Örnekler|Voorbeelden|Variantai|Tapaukset|Scenarios|Scenariji|Scenarijai|Příklady|Példák|Príklady|Przykłady|Primjeri|Primeri|Piemēri|Pavyzdžiai|Paraugs|Juhtumid|Exemplos|Exemples|Exemplele|Exempel|Examples|Esempi|Enghreifftiau|Ekzemploj|Eksempler|Ejemplos|EXAMPLZ|Dữ liệu|Contoh|Cobber|Beispiele)(:)(.*)$'
+ step_keywords = '^(\\s*)(하지만|조건|먼저|만일|만약|단|그리고|그러면|那麼|那么|而且|當|当|前提|假設|假设|假如|假定|但是|但し|並且|并且|同時|同时|もし|ならば|ただし|しかし|かつ|و |متى |لكن |عندما |ثم |بفرض |اذاً |כאשר |וגם |בהינתן |אזי |אז |אבל |Якщо |Унда |То |Припустимо, що |Припустимо |Онда |Но |Нехай |Лекин |Когато |Када |Кад |К тому же |И |Задато |Задати |Задате |Если |Допустим |Дадено |Ва |Бирок |Аммо |Али |Але |Агар |А |І |Și |És |Zatati |Zakładając |Zadato |Zadate |Zadano |Zadani |Zadan |Youse know when youse got |Youse know like when |Yna |Ya know how |Ya gotta |Y |Wun |Wtedy |When y\'all |When |Wenn |WEN |Và |Ve |Und |Un |Thì |Then y\'all |Then |Tapi |Tak |Tada |Tad |Så |Stel |Soit |Siis |Si |Sed |Se |Quando |Quand |Quan |Pryd |Pokud |Pokiaľ |Però |Pero |Pak |Oraz |Onda |Ond |Oletetaan |Og |Och |O zaman |Når |När |Niin |Nhưng |N |Mutta |Men |Mas |Maka |Majd |Mais |Maar |Ma |Lorsque |Lorsqu\'|Kun |Kuid |Kui |Khi |Keď |Ketika |Když |Kaj |Kai |Kada |Kad |Jeżeli |Ja |Ir |I CAN HAZ |I |Ha |Givun |Givet |Given y\'all |Given |Gitt |Gegeven |Gegeben sei |Fakat |Eğer ki |Etant donné |Et |Então |Entonces |Entao |En |Eeldades |E |Duota |Dun |Donitaĵo |Donat |Donada |Do |Diyelim ki |Dengan |Den youse gotta |De |Dato |Dar |Dann |Dan |Dado |Dacă |Daca |DEN |Când |Cuando |Cho |Cept |Cand |Cal |But y\'all |But |Buh |Biết |Bet |BUT |Atès |Atunci |Atesa |Anrhegedig a |Angenommen |And y\'all |And |An |Ama |Als |Alors |Allora |Ali |Aleshores |Ale |Akkor |Aber |AN |A také |A |\\* )'
tokens = {
'comments': [
diff --git a/pygments/lexers/theorem.py b/pygments/lexers/theorem.py
index fd34de2c..c4c857d4 100644
--- a/pygments/lexers/theorem.py
+++ b/pygments/lexers/theorem.py
@@ -93,7 +93,7 @@ class CoqLexer(RegexLexer):
'<->', '=', '>', '>]', r'>\}', r'\?', r'\?\?', r'\[', r'\[<', r'\[>',
r'\[\|', ']', '_', '`', r'\{', r'\{<', r'\|', r'\|]', r'\}', '~', '=>',
r'/\\', r'\\/', r'\{\|', r'\|\}',
- u'Π', u'λ',
+ 'Π', 'λ',
)
operators = r'[!$%&*+\./:<=>?@^|~-]'
prefix_syms = r'[!?~]'
@@ -440,11 +440,11 @@ class LeanLexer(RegexLexer):
'#print', '#help',
), suffix=r'\b'), Keyword),
(words((
- '(', ')', ':', '{', '}', '[', ']', u'⟨', u'⟩', u'‹', u'›', u'⦃', u'⦄', ':=', ',',
+ '(', ')', ':', '{', '}', '[', ']', '⟨', '⟩', '‹', '›', '⦃', '⦄', ':=', ',',
)), Operator),
- (u"[A-Za-z_\u03b1-\u03ba\u03bc-\u03fb\u1f00-\u1ffe\u2100-\u214f]"
- u"[.A-Za-z_'\u03b1-\u03ba\u03bc-\u03fb\u1f00-\u1ffe\u2070-\u2079"
- u"\u207f-\u2089\u2090-\u209c\u2100-\u214f0-9]*", Name),
+ (r'[A-Za-z_\u03b1-\u03ba\u03bc-\u03fb\u1f00-\u1ffe\u2100-\u214f]'
+ r'[.A-Za-z_\'\u03b1-\u03ba\u03bc-\u03fb\u1f00-\u1ffe\u2070-\u2079'
+ r'\u207f-\u2089\u2090-\u209c\u2100-\u214f0-9]*', Name),
(r'0x[A-Za-z0-9]+', Number.Integer),
(r'0b[01]+', Number.Integer),
(r'\d+', Number.Integer),
diff --git a/pygments/lexers/webmisc.py b/pygments/lexers/webmisc.py
index 84ba490c..dab36aa6 100644
--- a/pygments/lexers/webmisc.py
+++ b/pygments/lexers/webmisc.py
@@ -15,7 +15,6 @@ from pygments.lexer import RegexLexer, ExtendedRegexLexer, include, bygroups, \
default, using
from pygments.token import Text, Comment, Operator, Keyword, Name, String, \
Number, Punctuation, Literal
-from pygments.util import unirange
from pygments.lexers.css import _indentation, _starts_block
from pygments.lexers.html import HtmlLexer
@@ -74,15 +73,15 @@ class XQueryLexer(ExtendedRegexLexer):
# FIX UNICODE LATER
# ncnamestartchar = (
- # ur"[A-Z]|_|[a-z]|[\u00C0-\u00D6]|[\u00D8-\u00F6]|[\u00F8-\u02FF]|"
- # ur"[\u0370-\u037D]|[\u037F-\u1FFF]|[\u200C-\u200D]|[\u2070-\u218F]|"
- # ur"[\u2C00-\u2FEF]|[\u3001-\uD7FF]|[\uF900-\uFDCF]|[\uFDF0-\uFFFD]|"
- # ur"[\u10000-\uEFFFF]"
+ # r"[A-Z]|_|[a-z]|[\u00C0-\u00D6]|[\u00D8-\u00F6]|[\u00F8-\u02FF]|"
+ # r"[\u0370-\u037D]|[\u037F-\u1FFF]|[\u200C-\u200D]|[\u2070-\u218F]|"
+ # r"[\u2C00-\u2FEF]|[\u3001-\uD7FF]|[\uF900-\uFDCF]|[\uFDF0-\uFFFD]|"
+ # r"[\u10000-\uEFFFF]"
# )
ncnamestartchar = r"(?:[A-Z]|_|[a-z])"
# FIX UNICODE LATER
- # ncnamechar = ncnamestartchar + (ur"|-|\.|[0-9]|\u00B7|[\u0300-\u036F]|"
- # ur"[\u203F-\u2040]")
+ # ncnamechar = ncnamestartchar + (r"|-|\.|[0-9]|\u00B7|[\u0300-\u036F]|"
+ # r"[\u203F-\u2040]")
ncnamechar = r"(?:" + ncnamestartchar + r"|-|\.|[0-9])"
ncname = "(?:%s+%s*)" % (ncnamestartchar, ncnamechar)
pitarget_namestartchar = r"(?:[A-KN-WYZ]|_|:|[a-kn-wyz])"
@@ -99,14 +98,14 @@ class XQueryLexer(ExtendedRegexLexer):
stringsingle = r"(?:'(?:" + entityref + r"|" + charref + r"|''|[^&'])*')"
# FIX UNICODE LATER
- # elementcontentchar = (ur'\t|\r|\n|[\u0020-\u0025]|[\u0028-\u003b]|'
- # ur'[\u003d-\u007a]|\u007c|[\u007e-\u007F]')
+ # elementcontentchar = (r'\t|\r|\n|[\u0020-\u0025]|[\u0028-\u003b]|'
+ # r'[\u003d-\u007a]|\u007c|[\u007e-\u007F]')
elementcontentchar = r'[A-Za-z]|\s|\d|[!"#$%()*+,\-./:;=?@\[\\\]^_\'`|~]'
- # quotattrcontentchar = (ur'\t|\r|\n|[\u0020-\u0021]|[\u0023-\u0025]|'
- # ur'[\u0027-\u003b]|[\u003d-\u007a]|\u007c|[\u007e-\u007F]')
+ # quotattrcontentchar = (r'\t|\r|\n|[\u0020-\u0021]|[\u0023-\u0025]|'
+ # r'[\u0027-\u003b]|[\u003d-\u007a]|\u007c|[\u007e-\u007F]')
quotattrcontentchar = r'[A-Za-z]|\s|\d|[!#$%()*+,\-./:;=?@\[\\\]^_\'`|~]'
- # aposattrcontentchar = (ur'\t|\r|\n|[\u0020-\u0025]|[\u0028-\u003b]|'
- # ur'[\u003d-\u007a]|\u007c|[\u007e-\u007F]')
+ # aposattrcontentchar = (r'\t|\r|\n|[\u0020-\u0025]|[\u0028-\u003b]|'
+ # r'[\u003d-\u007a]|\u007c|[\u007e-\u007F]')
aposattrcontentchar = r'[A-Za-z]|\s|\d|[!"#$%()*+,\-./:;=?@\[\\\]^_`|~]'
# CHAR elements - fix the above elementcontentchar, quotattrcontentchar,
@@ -518,8 +517,8 @@ class XQueryLexer(ExtendedRegexLexer):
'xml_comment': [
(r'(-->)', popstate_xmlcomment_callback),
(r'[^-]{1,2}', Literal),
- (u'\\t|\\r|\\n|[\u0020-\uD7FF]|[\uE000-\uFFFD]|' +
- unirange(0x10000, 0x10ffff), Literal),
+ (r'\t|\r|\n|[\u0020-\uD7FF]|[\uE000-\uFFFD]|[\U00010000-\U0010FFFF]',
+ Literal),
],
'processing_instruction': [
(r'\s+', Text, 'processing_instruction_content'),
@@ -528,13 +527,13 @@ class XQueryLexer(ExtendedRegexLexer):
],
'processing_instruction_content': [
(r'\?>', String.Doc, '#pop'),
- (u'\\t|\\r|\\n|[\u0020-\uD7FF]|[\uE000-\uFFFD]|' +
- unirange(0x10000, 0x10ffff), Literal),
+ (r'\t|\r|\n|[\u0020-\uD7FF]|[\uE000-\uFFFD]|[\U00010000-\U0010FFFF]',
+ Literal),
],
'cdata_section': [
(r']]>', String.Doc, '#pop'),
- (u'\\t|\\r|\\n|[\u0020-\uD7FF]|[\uE000-\uFFFD]|' +
- unirange(0x10000, 0x10ffff), Literal),
+ (r'\t|\r|\n|[\u0020-\uD7FF]|[\uE000-\uFFFD]|[\U00010000-\U0010FFFF]',
+ Literal),
],
'start_tag': [
include('whitespace'),
@@ -603,8 +602,8 @@ class XQueryLexer(ExtendedRegexLexer):
],
'pragmacontents': [
(r'#\)', Punctuation, 'operator'),
- (u'\\t|\\r|\\n|[\u0020-\uD7FF]|[\uE000-\uFFFD]|' +
- unirange(0x10000, 0x10ffff), Literal),
+ (r'\t|\r|\n|[\u0020-\uD7FF]|[\uE000-\uFFFD]|[\U00010000-\U0010FFFF]',
+ Literal),
(r'(\s+)', Text),
],
'occurrenceindicator': [
diff --git a/pygments/lexers/whiley.py b/pygments/lexers/whiley.py
index 255e9d22..fad94e90 100644
--- a/pygments/lexers/whiley.py
+++ b/pygments/lexers/whiley.py
@@ -97,11 +97,11 @@ class WhileyLexer(RegexLexer):
# operators and punctuation
(r'[{}()\[\],.;]', Punctuation),
- (u'[+\\-*/%&|<>^!~@=:?'
+ (r'[+\-*/%&|<>^!~@=:?'
# unicode operators
- u'\u2200\u2203\u2205\u2282\u2286\u2283\u2287'
- u'\u222A\u2229\u2264\u2265\u2208\u2227\u2228'
- u']', Operator),
+ r'\u2200\u2203\u2205\u2282\u2286\u2283\u2287'
+ r'\u222A\u2229\u2264\u2265\u2208\u2227\u2228'
+ r']', Operator),
# identifier
(r'[a-zA-Z_]\w*', Name),
diff --git a/pygments/styles/arduino.py b/pygments/styles/arduino.py
index c734642f..3630ffc2 100644
--- a/pygments/styles/arduino.py
+++ b/pygments/styles/arduino.py
@@ -15,7 +15,7 @@ from pygments.token import Keyword, Name, Comment, String, Error, \
class ArduinoStyle(Style):
- u"""
+ """
The Arduino® language style. This style is designed to highlight the
Arduino source code, so exepect the best results with it.
"""
diff --git a/pygments/unistring.py b/pygments/unistring.py
index 027df53e..6292ad27 100644
--- a/pygments/unistring.py
+++ b/pygments/unistring.py
@@ -14,126 +14,83 @@
import sys
-Cc = u'\x00-\x1f\x7f-\x9f'
+Cc = '\x00-\x1f\x7f-\x9f'
-Cf = u'\xad\u0600-\u0605\u061c\u06dd\u070f\u08e2\u180e\u200b-\u200f\u202a-\u202e\u2060-\u2064\u2066-\u206f\ufeff\ufff9-\ufffb'
+Cf = '\xad\u0600-\u0605\u061c\u06dd\u070f\u08e2\u180e\u200b-\u200f\u202a-\u202e\u2060-\u2064\u2066-\u206f\ufeff\ufff9-\ufffb\U000110bd\U000110cd\U0001bca0-\U0001bca3\U0001d173-\U0001d17a\U000e0001\U000e0020-\U000e007f'
-Cn = u'\u0378-\u0379\u0380-\u0383\u038b\u038d\u03a2\u0530\u0557-\u0558\u058b-\u058c\u0590\u05c8-\u05cf\u05eb-\u05ee\u05f5-\u05ff\u061d\u070e\u074b-\u074c\u07b2-\u07bf\u07fb-\u07fc\u082e-\u082f\u083f\u085c-\u085d\u085f\u086b-\u089f\u08b5\u08be-\u08d2\u0984\u098d-\u098e\u0991-\u0992\u09a9\u09b1\u09b3-\u09b5\u09ba-\u09bb\u09c5-\u09c6\u09c9-\u09ca\u09cf-\u09d6\u09d8-\u09db\u09de\u09e4-\u09e5\u09ff-\u0a00\u0a04\u0a0b-\u0a0e\u0a11-\u0a12\u0a29\u0a31\u0a34\u0a37\u0a3a-\u0a3b\u0a3d\u0a43-\u0a46\u0a49-\u0a4a\u0a4e-\u0a50\u0a52-\u0a58\u0a5d\u0a5f-\u0a65\u0a77-\u0a80\u0a84\u0a8e\u0a92\u0aa9\u0ab1\u0ab4\u0aba-\u0abb\u0ac6\u0aca\u0ace-\u0acf\u0ad1-\u0adf\u0ae4-\u0ae5\u0af2-\u0af8\u0b00\u0b04\u0b0d-\u0b0e\u0b11-\u0b12\u0b29\u0b31\u0b34\u0b3a-\u0b3b\u0b45-\u0b46\u0b49-\u0b4a\u0b4e-\u0b55\u0b58-\u0b5b\u0b5e\u0b64-\u0b65\u0b78-\u0b81\u0b84\u0b8b-\u0b8d\u0b91\u0b96-\u0b98\u0b9b\u0b9d\u0ba0-\u0ba2\u0ba5-\u0ba7\u0bab-\u0bad\u0bba-\u0bbd\u0bc3-\u0bc5\u0bc9\u0bce-\u0bcf\u0bd1-\u0bd6\u0bd8-\u0be5\u0bfb-\u0bff\u0c0d\u0c11\u0c29\u0c3a-\u0c3c\u0c45\u0c49\u0c4e-\u0c54\u0c57\u0c5b-\u0c5f\u0c64-\u0c65\u0c70-\u0c77\u0c8d\u0c91\u0ca9\u0cb4\u0cba-\u0cbb\u0cc5\u0cc9\u0cce-\u0cd4\u0cd7-\u0cdd\u0cdf\u0ce4-\u0ce5\u0cf0\u0cf3-\u0cff\u0d04\u0d0d\u0d11\u0d45\u0d49\u0d50-\u0d53\u0d64-\u0d65\u0d80-\u0d81\u0d84\u0d97-\u0d99\u0db2\u0dbc\u0dbe-\u0dbf\u0dc7-\u0dc9\u0dcb-\u0dce\u0dd5\u0dd7\u0de0-\u0de5\u0df0-\u0df1\u0df5-\u0e00\u0e3b-\u0e3e\u0e5c-\u0e80\u0e83\u0e85-\u0e86\u0e89\u0e8b-\u0e8c\u0e8e-\u0e93\u0e98\u0ea0\u0ea4\u0ea6\u0ea8-\u0ea9\u0eac\u0eba\u0ebe-\u0ebf\u0ec5\u0ec7\u0ece-\u0ecf\u0eda-\u0edb\u0ee0-\u0eff\u0f48\u0f6d-\u0f70\u0f98\u0fbd\u0fcd\u0fdb-\u0fff\u10c6\u10c8-\u10cc\u10ce-\u10cf\u1249\u124e-\u124f\u1257\u1259\u125e-\u125f\u1289\u128e-\u128f\u12b1\u12b6-\u12b7\u12bf\u12c1\u12c6-\u12c7\u12d7\u1311\u1316-\u1317\u135b-\u135c\u137d-\u137f\u139a-\u139f\u13f6-\u13f7\u13fe-\u13ff\u169d-\u169f\u16f9-\u16ff\u170d\u1715-\u171f\u1737-\u173f\u1754-\u175f\u176d\u1771\u1774-\u177f\u17de-\u17df\u17ea-\u17ef\u17fa-\u17ff\u180f\u181a-\u181f\u1879-\u187f\u18ab-\u18af\u18f6-\u18ff\u191f\u192c-\u192f\u193c-\u193f\u1941-\u1943\u196e-\u196f\u1975-\u197f\u19ac-\u19af\u19ca-\u19cf\u19db-\u19dd\u1a1c-\u1a1d\u1a5f\u1a7d-\u1a7e\u1a8a-\u1a8f\u1a9a-\u1a9f\u1aae-\u1aaf\u1abf-\u1aff\u1b4c-\u1b4f\u1b7d-\u1b7f\u1bf4-\u1bfb\u1c38-\u1c3a\u1c4a-\u1c4c\u1c89-\u1c8f\u1cbb-\u1cbc\u1cc8-\u1ccf\u1cfa-\u1cff\u1dfa\u1f16-\u1f17\u1f1e-\u1f1f\u1f46-\u1f47\u1f4e-\u1f4f\u1f58\u1f5a\u1f5c\u1f5e\u1f7e-\u1f7f\u1fb5\u1fc5\u1fd4-\u1fd5\u1fdc\u1ff0-\u1ff1\u1ff5\u1fff\u2065\u2072-\u2073\u208f\u209d-\u209f\u20c0-\u20cf\u20f1-\u20ff\u218c-\u218f\u2427-\u243f\u244b-\u245f\u2b74-\u2b75\u2b96-\u2b97\u2bc9\u2bff\u2c2f\u2c5f\u2cf4-\u2cf8\u2d26\u2d28-\u2d2c\u2d2e-\u2d2f\u2d68-\u2d6e\u2d71-\u2d7e\u2d97-\u2d9f\u2da7\u2daf\u2db7\u2dbf\u2dc7\u2dcf\u2dd7\u2ddf\u2e4f-\u2e7f\u2e9a\u2ef4-\u2eff\u2fd6-\u2fef\u2ffc-\u2fff\u3040\u3097-\u3098\u3100-\u3104\u3130\u318f\u31bb-\u31bf\u31e4-\u31ef\u321f\u32ff\u4db6-\u4dbf\u9ff0-\u9fff\ua48d-\ua48f\ua4c7-\ua4cf\ua62c-\ua63f\ua6f8-\ua6ff\ua7ba-\ua7f6\ua82c-\ua82f\ua83a-\ua83f\ua878-\ua87f\ua8c6-\ua8cd\ua8da-\ua8df\ua954-\ua95e\ua97d-\ua97f\ua9ce\ua9da-\ua9dd\ua9ff\uaa37-\uaa3f\uaa4e-\uaa4f\uaa5a-\uaa5b\uaac3-\uaada\uaaf7-\uab00\uab07-\uab08\uab0f-\uab10\uab17-\uab1f\uab27\uab2f\uab66-\uab6f\uabee-\uabef\uabfa-\uabff\ud7a4-\ud7af\ud7c7-\ud7ca\ud7fc-\ud7ff\ufa6e-\ufa6f\ufada-\ufaff\ufb07-\ufb12\ufb18-\ufb1c\ufb37\ufb3d\ufb3f\ufb42\ufb45\ufbc2-\ufbd2\ufd40-\ufd4f\ufd90-\ufd91\ufdc8-\ufdef\ufdfe-\ufdff\ufe1a-\ufe1f\ufe53\ufe67\ufe6c-\ufe6f\ufe75\ufefd-\ufefe\uff00\uffbf-\uffc1\uffc8-\uffc9\uffd0-\uffd1\uffd8-\uffd9\uffdd-\uffdf\uffe7\uffef-\ufff8\ufffe-\uffff'
+Cn = '\u0378-\u0379\u0380-\u0383\u038b\u038d\u03a2\u0530\u0557-\u0558\u058b-\u058c\u0590\u05c8-\u05cf\u05eb-\u05ee\u05f5-\u05ff\u061d\u070e\u074b-\u074c\u07b2-\u07bf\u07fb-\u07fc\u082e-\u082f\u083f\u085c-\u085d\u085f\u086b-\u089f\u08b5\u08be-\u08d2\u0984\u098d-\u098e\u0991-\u0992\u09a9\u09b1\u09b3-\u09b5\u09ba-\u09bb\u09c5-\u09c6\u09c9-\u09ca\u09cf-\u09d6\u09d8-\u09db\u09de\u09e4-\u09e5\u09ff-\u0a00\u0a04\u0a0b-\u0a0e\u0a11-\u0a12\u0a29\u0a31\u0a34\u0a37\u0a3a-\u0a3b\u0a3d\u0a43-\u0a46\u0a49-\u0a4a\u0a4e-\u0a50\u0a52-\u0a58\u0a5d\u0a5f-\u0a65\u0a77-\u0a80\u0a84\u0a8e\u0a92\u0aa9\u0ab1\u0ab4\u0aba-\u0abb\u0ac6\u0aca\u0ace-\u0acf\u0ad1-\u0adf\u0ae4-\u0ae5\u0af2-\u0af8\u0b00\u0b04\u0b0d-\u0b0e\u0b11-\u0b12\u0b29\u0b31\u0b34\u0b3a-\u0b3b\u0b45-\u0b46\u0b49-\u0b4a\u0b4e-\u0b55\u0b58-\u0b5b\u0b5e\u0b64-\u0b65\u0b78-\u0b81\u0b84\u0b8b-\u0b8d\u0b91\u0b96-\u0b98\u0b9b\u0b9d\u0ba0-\u0ba2\u0ba5-\u0ba7\u0bab-\u0bad\u0bba-\u0bbd\u0bc3-\u0bc5\u0bc9\u0bce-\u0bcf\u0bd1-\u0bd6\u0bd8-\u0be5\u0bfb-\u0bff\u0c0d\u0c11\u0c29\u0c3a-\u0c3c\u0c45\u0c49\u0c4e-\u0c54\u0c57\u0c5b-\u0c5f\u0c64-\u0c65\u0c70-\u0c77\u0c8d\u0c91\u0ca9\u0cb4\u0cba-\u0cbb\u0cc5\u0cc9\u0cce-\u0cd4\u0cd7-\u0cdd\u0cdf\u0ce4-\u0ce5\u0cf0\u0cf3-\u0cff\u0d04\u0d0d\u0d11\u0d45\u0d49\u0d50-\u0d53\u0d64-\u0d65\u0d80-\u0d81\u0d84\u0d97-\u0d99\u0db2\u0dbc\u0dbe-\u0dbf\u0dc7-\u0dc9\u0dcb-\u0dce\u0dd5\u0dd7\u0de0-\u0de5\u0df0-\u0df1\u0df5-\u0e00\u0e3b-\u0e3e\u0e5c-\u0e80\u0e83\u0e85-\u0e86\u0e89\u0e8b-\u0e8c\u0e8e-\u0e93\u0e98\u0ea0\u0ea4\u0ea6\u0ea8-\u0ea9\u0eac\u0eba\u0ebe-\u0ebf\u0ec5\u0ec7\u0ece-\u0ecf\u0eda-\u0edb\u0ee0-\u0eff\u0f48\u0f6d-\u0f70\u0f98\u0fbd\u0fcd\u0fdb-\u0fff\u10c6\u10c8-\u10cc\u10ce-\u10cf\u1249\u124e-\u124f\u1257\u1259\u125e-\u125f\u1289\u128e-\u128f\u12b1\u12b6-\u12b7\u12bf\u12c1\u12c6-\u12c7\u12d7\u1311\u1316-\u1317\u135b-\u135c\u137d-\u137f\u139a-\u139f\u13f6-\u13f7\u13fe-\u13ff\u169d-\u169f\u16f9-\u16ff\u170d\u1715-\u171f\u1737-\u173f\u1754-\u175f\u176d\u1771\u1774-\u177f\u17de-\u17df\u17ea-\u17ef\u17fa-\u17ff\u180f\u181a-\u181f\u1879-\u187f\u18ab-\u18af\u18f6-\u18ff\u191f\u192c-\u192f\u193c-\u193f\u1941-\u1943\u196e-\u196f\u1975-\u197f\u19ac-\u19af\u19ca-\u19cf\u19db-\u19dd\u1a1c-\u1a1d\u1a5f\u1a7d-\u1a7e\u1a8a-\u1a8f\u1a9a-\u1a9f\u1aae-\u1aaf\u1abf-\u1aff\u1b4c-\u1b4f\u1b7d-\u1b7f\u1bf4-\u1bfb\u1c38-\u1c3a\u1c4a-\u1c4c\u1c89-\u1c8f\u1cbb-\u1cbc\u1cc8-\u1ccf\u1cfa-\u1cff\u1dfa\u1f16-\u1f17\u1f1e-\u1f1f\u1f46-\u1f47\u1f4e-\u1f4f\u1f58\u1f5a\u1f5c\u1f5e\u1f7e-\u1f7f\u1fb5\u1fc5\u1fd4-\u1fd5\u1fdc\u1ff0-\u1ff1\u1ff5\u1fff\u2065\u2072-\u2073\u208f\u209d-\u209f\u20c0-\u20cf\u20f1-\u20ff\u218c-\u218f\u2427-\u243f\u244b-\u245f\u2b74-\u2b75\u2b96-\u2b97\u2bc9\u2bff\u2c2f\u2c5f\u2cf4-\u2cf8\u2d26\u2d28-\u2d2c\u2d2e-\u2d2f\u2d68-\u2d6e\u2d71-\u2d7e\u2d97-\u2d9f\u2da7\u2daf\u2db7\u2dbf\u2dc7\u2dcf\u2dd7\u2ddf\u2e4f-\u2e7f\u2e9a\u2ef4-\u2eff\u2fd6-\u2fef\u2ffc-\u2fff\u3040\u3097-\u3098\u3100-\u3104\u3130\u318f\u31bb-\u31bf\u31e4-\u31ef\u321f\u32ff\u4db6-\u4dbf\u9ff0-\u9fff\ua48d-\ua48f\ua4c7-\ua4cf\ua62c-\ua63f\ua6f8-\ua6ff\ua7ba-\ua7f6\ua82c-\ua82f\ua83a-\ua83f\ua878-\ua87f\ua8c6-\ua8cd\ua8da-\ua8df\ua954-\ua95e\ua97d-\ua97f\ua9ce\ua9da-\ua9dd\ua9ff\uaa37-\uaa3f\uaa4e-\uaa4f\uaa5a-\uaa5b\uaac3-\uaada\uaaf7-\uab00\uab07-\uab08\uab0f-\uab10\uab17-\uab1f\uab27\uab2f\uab66-\uab6f\uabee-\uabef\uabfa-\uabff\ud7a4-\ud7af\ud7c7-\ud7ca\ud7fc-\ud7ff\ufa6e-\ufa6f\ufada-\ufaff\ufb07-\ufb12\ufb18-\ufb1c\ufb37\ufb3d\ufb3f\ufb42\ufb45\ufbc2-\ufbd2\ufd40-\ufd4f\ufd90-\ufd91\ufdc8-\ufdef\ufdfe-\ufdff\ufe1a-\ufe1f\ufe53\ufe67\ufe6c-\ufe6f\ufe75\ufefd-\ufefe\uff00\uffbf-\uffc1\uffc8-\uffc9\uffd0-\uffd1\uffd8-\uffd9\uffdd-\uffdf\uffe7\uffef-\ufff8\ufffe-\uffff\U0001000c\U00010027\U0001003b\U0001003e\U0001004e-\U0001004f\U0001005e-\U0001007f\U000100fb-\U000100ff\U00010103-\U00010106\U00010134-\U00010136\U0001018f\U0001019c-\U0001019f\U000101a1-\U000101cf\U000101fe-\U0001027f\U0001029d-\U0001029f\U000102d1-\U000102df\U000102fc-\U000102ff\U00010324-\U0001032c\U0001034b-\U0001034f\U0001037b-\U0001037f\U0001039e\U000103c4-\U000103c7\U000103d6-\U000103ff\U0001049e-\U0001049f\U000104aa-\U000104af\U000104d4-\U000104d7\U000104fc-\U000104ff\U00010528-\U0001052f\U00010564-\U0001056e\U00010570-\U000105ff\U00010737-\U0001073f\U00010756-\U0001075f\U00010768-\U000107ff\U00010806-\U00010807\U00010809\U00010836\U00010839-\U0001083b\U0001083d-\U0001083e\U00010856\U0001089f-\U000108a6\U000108b0-\U000108df\U000108f3\U000108f6-\U000108fa\U0001091c-\U0001091e\U0001093a-\U0001093e\U00010940-\U0001097f\U000109b8-\U000109bb\U000109d0-\U000109d1\U00010a04\U00010a07-\U00010a0b\U00010a14\U00010a18\U00010a36-\U00010a37\U00010a3b-\U00010a3e\U00010a49-\U00010a4f\U00010a59-\U00010a5f\U00010aa0-\U00010abf\U00010ae7-\U00010aea\U00010af7-\U00010aff\U00010b36-\U00010b38\U00010b56-\U00010b57\U00010b73-\U00010b77\U00010b92-\U00010b98\U00010b9d-\U00010ba8\U00010bb0-\U00010bff\U00010c49-\U00010c7f\U00010cb3-\U00010cbf\U00010cf3-\U00010cf9\U00010d28-\U00010d2f\U00010d3a-\U00010e5f\U00010e7f-\U00010eff\U00010f28-\U00010f2f\U00010f5a-\U00010fff\U0001104e-\U00011051\U00011070-\U0001107e\U000110c2-\U000110cc\U000110ce-\U000110cf\U000110e9-\U000110ef\U000110fa-\U000110ff\U00011135\U00011147-\U0001114f\U00011177-\U0001117f\U000111ce-\U000111cf\U000111e0\U000111f5-\U000111ff\U00011212\U0001123f-\U0001127f\U00011287\U00011289\U0001128e\U0001129e\U000112aa-\U000112af\U000112eb-\U000112ef\U000112fa-\U000112ff\U00011304\U0001130d-\U0001130e\U00011311-\U00011312\U00011329\U00011331\U00011334\U0001133a\U00011345-\U00011346\U00011349-\U0001134a\U0001134e-\U0001134f\U00011351-\U00011356\U00011358-\U0001135c\U00011364-\U00011365\U0001136d-\U0001136f\U00011375-\U000113ff\U0001145a\U0001145c\U0001145f-\U0001147f\U000114c8-\U000114cf\U000114da-\U0001157f\U000115b6-\U000115b7\U000115de-\U000115ff\U00011645-\U0001164f\U0001165a-\U0001165f\U0001166d-\U0001167f\U000116b8-\U000116bf\U000116ca-\U000116ff\U0001171b-\U0001171c\U0001172c-\U0001172f\U00011740-\U000117ff\U0001183c-\U0001189f\U000118f3-\U000118fe\U00011900-\U000119ff\U00011a48-\U00011a4f\U00011a84-\U00011a85\U00011aa3-\U00011abf\U00011af9-\U00011bff\U00011c09\U00011c37\U00011c46-\U00011c4f\U00011c6d-\U00011c6f\U00011c90-\U00011c91\U00011ca8\U00011cb7-\U00011cff\U00011d07\U00011d0a\U00011d37-\U00011d39\U00011d3b\U00011d3e\U00011d48-\U00011d4f\U00011d5a-\U00011d5f\U00011d66\U00011d69\U00011d8f\U00011d92\U00011d99-\U00011d9f\U00011daa-\U00011edf\U00011ef9-\U00011fff\U0001239a-\U000123ff\U0001246f\U00012475-\U0001247f\U00012544-\U00012fff\U0001342f-\U000143ff\U00014647-\U000167ff\U00016a39-\U00016a3f\U00016a5f\U00016a6a-\U00016a6d\U00016a70-\U00016acf\U00016aee-\U00016aef\U00016af6-\U00016aff\U00016b46-\U00016b4f\U00016b5a\U00016b62\U00016b78-\U00016b7c\U00016b90-\U00016e3f\U00016e9b-\U00016eff\U00016f45-\U00016f4f\U00016f7f-\U00016f8e\U00016fa0-\U00016fdf\U00016fe2-\U00016fff\U000187f2-\U000187ff\U00018af3-\U0001afff\U0001b11f-\U0001b16f\U0001b2fc-\U0001bbff\U0001bc6b-\U0001bc6f\U0001bc7d-\U0001bc7f\U0001bc89-\U0001bc8f\U0001bc9a-\U0001bc9b\U0001bca4-\U0001cfff\U0001d0f6-\U0001d0ff\U0001d127-\U0001d128\U0001d1e9-\U0001d1ff\U0001d246-\U0001d2df\U0001d2f4-\U0001d2ff\U0001d357-\U0001d35f\U0001d379-\U0001d3ff\U0001d455\U0001d49d\U0001d4a0-\U0001d4a1\U0001d4a3-\U0001d4a4\U0001d4a7-\U0001d4a8\U0001d4ad\U0001d4ba\U0001d4bc\U0001d4c4\U0001d506\U0001d50b-\U0001d50c\U0001d515\U0001d51d\U0001d53a\U0001d53f\U0001d545\U0001d547-\U0001d549\U0001d551\U0001d6a6-\U0001d6a7\U0001d7cc-\U0001d7cd\U0001da8c-\U0001da9a\U0001daa0\U0001dab0-\U0001dfff\U0001e007\U0001e019-\U0001e01a\U0001e022\U0001e025\U0001e02b-\U0001e7ff\U0001e8c5-\U0001e8c6\U0001e8d7-\U0001e8ff\U0001e94b-\U0001e94f\U0001e95a-\U0001e95d\U0001e960-\U0001ec70\U0001ecb5-\U0001edff\U0001ee04\U0001ee20\U0001ee23\U0001ee25-\U0001ee26\U0001ee28\U0001ee33\U0001ee38\U0001ee3a\U0001ee3c-\U0001ee41\U0001ee43-\U0001ee46\U0001ee48\U0001ee4a\U0001ee4c\U0001ee50\U0001ee53\U0001ee55-\U0001ee56\U0001ee58\U0001ee5a\U0001ee5c\U0001ee5e\U0001ee60\U0001ee63\U0001ee65-\U0001ee66\U0001ee6b\U0001ee73\U0001ee78\U0001ee7d\U0001ee7f\U0001ee8a\U0001ee9c-\U0001eea0\U0001eea4\U0001eeaa\U0001eebc-\U0001eeef\U0001eef2-\U0001efff\U0001f02c-\U0001f02f\U0001f094-\U0001f09f\U0001f0af-\U0001f0b0\U0001f0c0\U0001f0d0\U0001f0f6-\U0001f0ff\U0001f10d-\U0001f10f\U0001f16c-\U0001f16f\U0001f1ad-\U0001f1e5\U0001f203-\U0001f20f\U0001f23c-\U0001f23f\U0001f249-\U0001f24f\U0001f252-\U0001f25f\U0001f266-\U0001f2ff\U0001f6d5-\U0001f6df\U0001f6ed-\U0001f6ef\U0001f6fa-\U0001f6ff\U0001f774-\U0001f77f\U0001f7d9-\U0001f7ff\U0001f80c-\U0001f80f\U0001f848-\U0001f84f\U0001f85a-\U0001f85f\U0001f888-\U0001f88f\U0001f8ae-\U0001f8ff\U0001f90c-\U0001f90f\U0001f93f\U0001f971-\U0001f972\U0001f977-\U0001f979\U0001f97b\U0001f9a3-\U0001f9af\U0001f9ba-\U0001f9bf\U0001f9c3-\U0001f9cf\U0001fa00-\U0001fa5f\U0001fa6e-\U0001ffff\U0002a6d7-\U0002a6ff\U0002b735-\U0002b73f\U0002b81e-\U0002b81f\U0002cea2-\U0002ceaf\U0002ebe1-\U0002f7ff\U0002fa1e-\U000e0000\U000e0002-\U000e001f\U000e0080-\U000e00ff\U000e01f0-\U000effff\U000ffffe-\U000fffff\U0010fffe-\U0010ffff'
-Co = u'\ue000-\uf8ff'
+Co = '\ue000-\uf8ff\U000f0000-\U000ffffd\U00100000-\U0010fffd'
-try:
- Cs = eval(r"u'\ud800-\udbff\\\udc00\udc01-\udfff'")
-except UnicodeDecodeError:
- Cs = '' # Jython can't handle isolated surrogates
+Cs = '\ud800-\udbff\\\udc00\udc01-\udfff'
-Ll = u'a-z\xb5\xdf-\xf6\xf8-\xff\u0101\u0103\u0105\u0107\u0109\u010b\u010d\u010f\u0111\u0113\u0115\u0117\u0119\u011b\u011d\u011f\u0121\u0123\u0125\u0127\u0129\u012b\u012d\u012f\u0131\u0133\u0135\u0137-\u0138\u013a\u013c\u013e\u0140\u0142\u0144\u0146\u0148-\u0149\u014b\u014d\u014f\u0151\u0153\u0155\u0157\u0159\u015b\u015d\u015f\u0161\u0163\u0165\u0167\u0169\u016b\u016d\u016f\u0171\u0173\u0175\u0177\u017a\u017c\u017e-\u0180\u0183\u0185\u0188\u018c-\u018d\u0192\u0195\u0199-\u019b\u019e\u01a1\u01a3\u01a5\u01a8\u01aa-\u01ab\u01ad\u01b0\u01b4\u01b6\u01b9-\u01ba\u01bd-\u01bf\u01c6\u01c9\u01cc\u01ce\u01d0\u01d2\u01d4\u01d6\u01d8\u01da\u01dc-\u01dd\u01df\u01e1\u01e3\u01e5\u01e7\u01e9\u01eb\u01ed\u01ef-\u01f0\u01f3\u01f5\u01f9\u01fb\u01fd\u01ff\u0201\u0203\u0205\u0207\u0209\u020b\u020d\u020f\u0211\u0213\u0215\u0217\u0219\u021b\u021d\u021f\u0221\u0223\u0225\u0227\u0229\u022b\u022d\u022f\u0231\u0233-\u0239\u023c\u023f-\u0240\u0242\u0247\u0249\u024b\u024d\u024f-\u0293\u0295-\u02af\u0371\u0373\u0377\u037b-\u037d\u0390\u03ac-\u03ce\u03d0-\u03d1\u03d5-\u03d7\u03d9\u03db\u03dd\u03df\u03e1\u03e3\u03e5\u03e7\u03e9\u03eb\u03ed\u03ef-\u03f3\u03f5\u03f8\u03fb-\u03fc\u0430-\u045f\u0461\u0463\u0465\u0467\u0469\u046b\u046d\u046f\u0471\u0473\u0475\u0477\u0479\u047b\u047d\u047f\u0481\u048b\u048d\u048f\u0491\u0493\u0495\u0497\u0499\u049b\u049d\u049f\u04a1\u04a3\u04a5\u04a7\u04a9\u04ab\u04ad\u04af\u04b1\u04b3\u04b5\u04b7\u04b9\u04bb\u04bd\u04bf\u04c2\u04c4\u04c6\u04c8\u04ca\u04cc\u04ce-\u04cf\u04d1\u04d3\u04d5\u04d7\u04d9\u04db\u04dd\u04df\u04e1\u04e3\u04e5\u04e7\u04e9\u04eb\u04ed\u04ef\u04f1\u04f3\u04f5\u04f7\u04f9\u04fb\u04fd\u04ff\u0501\u0503\u0505\u0507\u0509\u050b\u050d\u050f\u0511\u0513\u0515\u0517\u0519\u051b\u051d\u051f\u0521\u0523\u0525\u0527\u0529\u052b\u052d\u052f\u0560-\u0588\u10d0-\u10fa\u10fd-\u10ff\u13f8-\u13fd\u1c80-\u1c88\u1d00-\u1d2b\u1d6b-\u1d77\u1d79-\u1d9a\u1e01\u1e03\u1e05\u1e07\u1e09\u1e0b\u1e0d\u1e0f\u1e11\u1e13\u1e15\u1e17\u1e19\u1e1b\u1e1d\u1e1f\u1e21\u1e23\u1e25\u1e27\u1e29\u1e2b\u1e2d\u1e2f\u1e31\u1e33\u1e35\u1e37\u1e39\u1e3b\u1e3d\u1e3f\u1e41\u1e43\u1e45\u1e47\u1e49\u1e4b\u1e4d\u1e4f\u1e51\u1e53\u1e55\u1e57\u1e59\u1e5b\u1e5d\u1e5f\u1e61\u1e63\u1e65\u1e67\u1e69\u1e6b\u1e6d\u1e6f\u1e71\u1e73\u1e75\u1e77\u1e79\u1e7b\u1e7d\u1e7f\u1e81\u1e83\u1e85\u1e87\u1e89\u1e8b\u1e8d\u1e8f\u1e91\u1e93\u1e95-\u1e9d\u1e9f\u1ea1\u1ea3\u1ea5\u1ea7\u1ea9\u1eab\u1ead\u1eaf\u1eb1\u1eb3\u1eb5\u1eb7\u1eb9\u1ebb\u1ebd\u1ebf\u1ec1\u1ec3\u1ec5\u1ec7\u1ec9\u1ecb\u1ecd\u1ecf\u1ed1\u1ed3\u1ed5\u1ed7\u1ed9\u1edb\u1edd\u1edf\u1ee1\u1ee3\u1ee5\u1ee7\u1ee9\u1eeb\u1eed\u1eef\u1ef1\u1ef3\u1ef5\u1ef7\u1ef9\u1efb\u1efd\u1eff-\u1f07\u1f10-\u1f15\u1f20-\u1f27\u1f30-\u1f37\u1f40-\u1f45\u1f50-\u1f57\u1f60-\u1f67\u1f70-\u1f7d\u1f80-\u1f87\u1f90-\u1f97\u1fa0-\u1fa7\u1fb0-\u1fb4\u1fb6-\u1fb7\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fc7\u1fd0-\u1fd3\u1fd6-\u1fd7\u1fe0-\u1fe7\u1ff2-\u1ff4\u1ff6-\u1ff7\u210a\u210e-\u210f\u2113\u212f\u2134\u2139\u213c-\u213d\u2146-\u2149\u214e\u2184\u2c30-\u2c5e\u2c61\u2c65-\u2c66\u2c68\u2c6a\u2c6c\u2c71\u2c73-\u2c74\u2c76-\u2c7b\u2c81\u2c83\u2c85\u2c87\u2c89\u2c8b\u2c8d\u2c8f\u2c91\u2c93\u2c95\u2c97\u2c99\u2c9b\u2c9d\u2c9f\u2ca1\u2ca3\u2ca5\u2ca7\u2ca9\u2cab\u2cad\u2caf\u2cb1\u2cb3\u2cb5\u2cb7\u2cb9\u2cbb\u2cbd\u2cbf\u2cc1\u2cc3\u2cc5\u2cc7\u2cc9\u2ccb\u2ccd\u2ccf\u2cd1\u2cd3\u2cd5\u2cd7\u2cd9\u2cdb\u2cdd\u2cdf\u2ce1\u2ce3-\u2ce4\u2cec\u2cee\u2cf3\u2d00-\u2d25\u2d27\u2d2d\ua641\ua643\ua645\ua647\ua649\ua64b\ua64d\ua64f\ua651\ua653\ua655\ua657\ua659\ua65b\ua65d\ua65f\ua661\ua663\ua665\ua667\ua669\ua66b\ua66d\ua681\ua683\ua685\ua687\ua689\ua68b\ua68d\ua68f\ua691\ua693\ua695\ua697\ua699\ua69b\ua723\ua725\ua727\ua729\ua72b\ua72d\ua72f-\ua731\ua733\ua735\ua737\ua739\ua73b\ua73d\ua73f\ua741\ua743\ua745\ua747\ua749\ua74b\ua74d\ua74f\ua751\ua753\ua755\ua757\ua759\ua75b\ua75d\ua75f\ua761\ua763\ua765\ua767\ua769\ua76b\ua76d\ua76f\ua771-\ua778\ua77a\ua77c\ua77f\ua781\ua783\ua785\ua787\ua78c\ua78e\ua791\ua793-\ua795\ua797\ua799\ua79b\ua79d\ua79f\ua7a1\ua7a3\ua7a5\ua7a7\ua7a9\ua7af\ua7b5\ua7b7\ua7b9\ua7fa\uab30-\uab5a\uab60-\uab65\uab70-\uabbf\ufb00-\ufb06\ufb13-\ufb17\uff41-\uff5a'
+Ll = 'a-z\xb5\xdf-\xf6\xf8-\xff\u0101\u0103\u0105\u0107\u0109\u010b\u010d\u010f\u0111\u0113\u0115\u0117\u0119\u011b\u011d\u011f\u0121\u0123\u0125\u0127\u0129\u012b\u012d\u012f\u0131\u0133\u0135\u0137-\u0138\u013a\u013c\u013e\u0140\u0142\u0144\u0146\u0148-\u0149\u014b\u014d\u014f\u0151\u0153\u0155\u0157\u0159\u015b\u015d\u015f\u0161\u0163\u0165\u0167\u0169\u016b\u016d\u016f\u0171\u0173\u0175\u0177\u017a\u017c\u017e-\u0180\u0183\u0185\u0188\u018c-\u018d\u0192\u0195\u0199-\u019b\u019e\u01a1\u01a3\u01a5\u01a8\u01aa-\u01ab\u01ad\u01b0\u01b4\u01b6\u01b9-\u01ba\u01bd-\u01bf\u01c6\u01c9\u01cc\u01ce\u01d0\u01d2\u01d4\u01d6\u01d8\u01da\u01dc-\u01dd\u01df\u01e1\u01e3\u01e5\u01e7\u01e9\u01eb\u01ed\u01ef-\u01f0\u01f3\u01f5\u01f9\u01fb\u01fd\u01ff\u0201\u0203\u0205\u0207\u0209\u020b\u020d\u020f\u0211\u0213\u0215\u0217\u0219\u021b\u021d\u021f\u0221\u0223\u0225\u0227\u0229\u022b\u022d\u022f\u0231\u0233-\u0239\u023c\u023f-\u0240\u0242\u0247\u0249\u024b\u024d\u024f-\u0293\u0295-\u02af\u0371\u0373\u0377\u037b-\u037d\u0390\u03ac-\u03ce\u03d0-\u03d1\u03d5-\u03d7\u03d9\u03db\u03dd\u03df\u03e1\u03e3\u03e5\u03e7\u03e9\u03eb\u03ed\u03ef-\u03f3\u03f5\u03f8\u03fb-\u03fc\u0430-\u045f\u0461\u0463\u0465\u0467\u0469\u046b\u046d\u046f\u0471\u0473\u0475\u0477\u0479\u047b\u047d\u047f\u0481\u048b\u048d\u048f\u0491\u0493\u0495\u0497\u0499\u049b\u049d\u049f\u04a1\u04a3\u04a5\u04a7\u04a9\u04ab\u04ad\u04af\u04b1\u04b3\u04b5\u04b7\u04b9\u04bb\u04bd\u04bf\u04c2\u04c4\u04c6\u04c8\u04ca\u04cc\u04ce-\u04cf\u04d1\u04d3\u04d5\u04d7\u04d9\u04db\u04dd\u04df\u04e1\u04e3\u04e5\u04e7\u04e9\u04eb\u04ed\u04ef\u04f1\u04f3\u04f5\u04f7\u04f9\u04fb\u04fd\u04ff\u0501\u0503\u0505\u0507\u0509\u050b\u050d\u050f\u0511\u0513\u0515\u0517\u0519\u051b\u051d\u051f\u0521\u0523\u0525\u0527\u0529\u052b\u052d\u052f\u0560-\u0588\u10d0-\u10fa\u10fd-\u10ff\u13f8-\u13fd\u1c80-\u1c88\u1d00-\u1d2b\u1d6b-\u1d77\u1d79-\u1d9a\u1e01\u1e03\u1e05\u1e07\u1e09\u1e0b\u1e0d\u1e0f\u1e11\u1e13\u1e15\u1e17\u1e19\u1e1b\u1e1d\u1e1f\u1e21\u1e23\u1e25\u1e27\u1e29\u1e2b\u1e2d\u1e2f\u1e31\u1e33\u1e35\u1e37\u1e39\u1e3b\u1e3d\u1e3f\u1e41\u1e43\u1e45\u1e47\u1e49\u1e4b\u1e4d\u1e4f\u1e51\u1e53\u1e55\u1e57\u1e59\u1e5b\u1e5d\u1e5f\u1e61\u1e63\u1e65\u1e67\u1e69\u1e6b\u1e6d\u1e6f\u1e71\u1e73\u1e75\u1e77\u1e79\u1e7b\u1e7d\u1e7f\u1e81\u1e83\u1e85\u1e87\u1e89\u1e8b\u1e8d\u1e8f\u1e91\u1e93\u1e95-\u1e9d\u1e9f\u1ea1\u1ea3\u1ea5\u1ea7\u1ea9\u1eab\u1ead\u1eaf\u1eb1\u1eb3\u1eb5\u1eb7\u1eb9\u1ebb\u1ebd\u1ebf\u1ec1\u1ec3\u1ec5\u1ec7\u1ec9\u1ecb\u1ecd\u1ecf\u1ed1\u1ed3\u1ed5\u1ed7\u1ed9\u1edb\u1edd\u1edf\u1ee1\u1ee3\u1ee5\u1ee7\u1ee9\u1eeb\u1eed\u1eef\u1ef1\u1ef3\u1ef5\u1ef7\u1ef9\u1efb\u1efd\u1eff-\u1f07\u1f10-\u1f15\u1f20-\u1f27\u1f30-\u1f37\u1f40-\u1f45\u1f50-\u1f57\u1f60-\u1f67\u1f70-\u1f7d\u1f80-\u1f87\u1f90-\u1f97\u1fa0-\u1fa7\u1fb0-\u1fb4\u1fb6-\u1fb7\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fc7\u1fd0-\u1fd3\u1fd6-\u1fd7\u1fe0-\u1fe7\u1ff2-\u1ff4\u1ff6-\u1ff7\u210a\u210e-\u210f\u2113\u212f\u2134\u2139\u213c-\u213d\u2146-\u2149\u214e\u2184\u2c30-\u2c5e\u2c61\u2c65-\u2c66\u2c68\u2c6a\u2c6c\u2c71\u2c73-\u2c74\u2c76-\u2c7b\u2c81\u2c83\u2c85\u2c87\u2c89\u2c8b\u2c8d\u2c8f\u2c91\u2c93\u2c95\u2c97\u2c99\u2c9b\u2c9d\u2c9f\u2ca1\u2ca3\u2ca5\u2ca7\u2ca9\u2cab\u2cad\u2caf\u2cb1\u2cb3\u2cb5\u2cb7\u2cb9\u2cbb\u2cbd\u2cbf\u2cc1\u2cc3\u2cc5\u2cc7\u2cc9\u2ccb\u2ccd\u2ccf\u2cd1\u2cd3\u2cd5\u2cd7\u2cd9\u2cdb\u2cdd\u2cdf\u2ce1\u2ce3-\u2ce4\u2cec\u2cee\u2cf3\u2d00-\u2d25\u2d27\u2d2d\ua641\ua643\ua645\ua647\ua649\ua64b\ua64d\ua64f\ua651\ua653\ua655\ua657\ua659\ua65b\ua65d\ua65f\ua661\ua663\ua665\ua667\ua669\ua66b\ua66d\ua681\ua683\ua685\ua687\ua689\ua68b\ua68d\ua68f\ua691\ua693\ua695\ua697\ua699\ua69b\ua723\ua725\ua727\ua729\ua72b\ua72d\ua72f-\ua731\ua733\ua735\ua737\ua739\ua73b\ua73d\ua73f\ua741\ua743\ua745\ua747\ua749\ua74b\ua74d\ua74f\ua751\ua753\ua755\ua757\ua759\ua75b\ua75d\ua75f\ua761\ua763\ua765\ua767\ua769\ua76b\ua76d\ua76f\ua771-\ua778\ua77a\ua77c\ua77f\ua781\ua783\ua785\ua787\ua78c\ua78e\ua791\ua793-\ua795\ua797\ua799\ua79b\ua79d\ua79f\ua7a1\ua7a3\ua7a5\ua7a7\ua7a9\ua7af\ua7b5\ua7b7\ua7b9\ua7fa\uab30-\uab5a\uab60-\uab65\uab70-\uabbf\ufb00-\ufb06\ufb13-\ufb17\uff41-\uff5a\U00010428-\U0001044f\U000104d8-\U000104fb\U00010cc0-\U00010cf2\U000118c0-\U000118df\U00016e60-\U00016e7f\U0001d41a-\U0001d433\U0001d44e-\U0001d454\U0001d456-\U0001d467\U0001d482-\U0001d49b\U0001d4b6-\U0001d4b9\U0001d4bb\U0001d4bd-\U0001d4c3\U0001d4c5-\U0001d4cf\U0001d4ea-\U0001d503\U0001d51e-\U0001d537\U0001d552-\U0001d56b\U0001d586-\U0001d59f\U0001d5ba-\U0001d5d3\U0001d5ee-\U0001d607\U0001d622-\U0001d63b\U0001d656-\U0001d66f\U0001d68a-\U0001d6a5\U0001d6c2-\U0001d6da\U0001d6dc-\U0001d6e1\U0001d6fc-\U0001d714\U0001d716-\U0001d71b\U0001d736-\U0001d74e\U0001d750-\U0001d755\U0001d770-\U0001d788\U0001d78a-\U0001d78f\U0001d7aa-\U0001d7c2\U0001d7c4-\U0001d7c9\U0001d7cb\U0001e922-\U0001e943'
-Lm = u'\u02b0-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0374\u037a\u0559\u0640\u06e5-\u06e6\u07f4-\u07f5\u07fa\u081a\u0824\u0828\u0971\u0e46\u0ec6\u10fc\u17d7\u1843\u1aa7\u1c78-\u1c7d\u1d2c-\u1d6a\u1d78\u1d9b-\u1dbf\u2071\u207f\u2090-\u209c\u2c7c-\u2c7d\u2d6f\u2e2f\u3005\u3031-\u3035\u303b\u309d-\u309e\u30fc-\u30fe\ua015\ua4f8-\ua4fd\ua60c\ua67f\ua69c-\ua69d\ua717-\ua71f\ua770\ua788\ua7f8-\ua7f9\ua9cf\ua9e6\uaa70\uaadd\uaaf3-\uaaf4\uab5c-\uab5f\uff70\uff9e-\uff9f'
+Lm = '\u02b0-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0374\u037a\u0559\u0640\u06e5-\u06e6\u07f4-\u07f5\u07fa\u081a\u0824\u0828\u0971\u0e46\u0ec6\u10fc\u17d7\u1843\u1aa7\u1c78-\u1c7d\u1d2c-\u1d6a\u1d78\u1d9b-\u1dbf\u2071\u207f\u2090-\u209c\u2c7c-\u2c7d\u2d6f\u2e2f\u3005\u3031-\u3035\u303b\u309d-\u309e\u30fc-\u30fe\ua015\ua4f8-\ua4fd\ua60c\ua67f\ua69c-\ua69d\ua717-\ua71f\ua770\ua788\ua7f8-\ua7f9\ua9cf\ua9e6\uaa70\uaadd\uaaf3-\uaaf4\uab5c-\uab5f\uff70\uff9e-\uff9f\U00016b40-\U00016b43\U00016f93-\U00016f9f\U00016fe0-\U00016fe1'
-Lo = u'\xaa\xba\u01bb\u01c0-\u01c3\u0294\u05d0-\u05ea\u05ef-\u05f2\u0620-\u063f\u0641-\u064a\u066e-\u066f\u0671-\u06d3\u06d5\u06ee-\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u0800-\u0815\u0840-\u0858\u0860-\u086a\u08a0-\u08b4\u08b6-\u08bd\u0904-\u0939\u093d\u0950\u0958-\u0961\u0972-\u0980\u0985-\u098c\u098f-\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc-\u09dd\u09df-\u09e1\u09f0-\u09f1\u09fc\u0a05-\u0a0a\u0a0f-\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32-\u0a33\u0a35-\u0a36\u0a38-\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2-\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0-\u0ae1\u0af9\u0b05-\u0b0c\u0b0f-\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32-\u0b33\u0b35-\u0b39\u0b3d\u0b5c-\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99-\u0b9a\u0b9c\u0b9e-\u0b9f\u0ba3-\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d\u0c58-\u0c5a\u0c60-\u0c61\u0c80\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cde\u0ce0-\u0ce1\u0cf1-\u0cf2\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d54-\u0d56\u0d5f-\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32-\u0e33\u0e40-\u0e45\u0e81-\u0e82\u0e84\u0e87-\u0e88\u0e8a\u0e8d\u0e94-\u0e97\u0e99-\u0e9f\u0ea1-\u0ea3\u0ea5\u0ea7\u0eaa-\u0eab\u0ead-\u0eb0\u0eb2-\u0eb3\u0ebd\u0ec0-\u0ec4\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065-\u1066\u106e-\u1070\u1075-\u1081\u108e\u1100-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16f1-\u16f8\u1700-\u170c\u170e-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17dc\u1820-\u1842\u1844-\u1878\u1880-\u1884\u1887-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191e\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a16\u1a20-\u1a54\u1b05-\u1b33\u1b45-\u1b4b\u1b83-\u1ba0\u1bae-\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c77\u1ce9-\u1cec\u1cee-\u1cf1\u1cf5-\u1cf6\u2135-\u2138\u2d30-\u2d67\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u3006\u303c\u3041-\u3096\u309f\u30a1-\u30fa\u30ff\u3105-\u312f\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fef\ua000-\ua014\ua016-\ua48c\ua4d0-\ua4f7\ua500-\ua60b\ua610-\ua61f\ua62a-\ua62b\ua66e\ua6a0-\ua6e5\ua78f\ua7f7\ua7fb-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua8fd-\ua8fe\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9e0-\ua9e4\ua9e7-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa6f\uaa71-\uaa76\uaa7a\uaa7e-\uaaaf\uaab1\uaab5-\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadc\uaae0-\uaaea\uaaf2\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uabc0-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40-\ufb41\ufb43-\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff66-\uff6f\uff71-\uff9d\uffa0-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc'
+Lo = '\xaa\xba\u01bb\u01c0-\u01c3\u0294\u05d0-\u05ea\u05ef-\u05f2\u0620-\u063f\u0641-\u064a\u066e-\u066f\u0671-\u06d3\u06d5\u06ee-\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u0800-\u0815\u0840-\u0858\u0860-\u086a\u08a0-\u08b4\u08b6-\u08bd\u0904-\u0939\u093d\u0950\u0958-\u0961\u0972-\u0980\u0985-\u098c\u098f-\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc-\u09dd\u09df-\u09e1\u09f0-\u09f1\u09fc\u0a05-\u0a0a\u0a0f-\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32-\u0a33\u0a35-\u0a36\u0a38-\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2-\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0-\u0ae1\u0af9\u0b05-\u0b0c\u0b0f-\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32-\u0b33\u0b35-\u0b39\u0b3d\u0b5c-\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99-\u0b9a\u0b9c\u0b9e-\u0b9f\u0ba3-\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d\u0c58-\u0c5a\u0c60-\u0c61\u0c80\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cde\u0ce0-\u0ce1\u0cf1-\u0cf2\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d54-\u0d56\u0d5f-\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32-\u0e33\u0e40-\u0e45\u0e81-\u0e82\u0e84\u0e87-\u0e88\u0e8a\u0e8d\u0e94-\u0e97\u0e99-\u0e9f\u0ea1-\u0ea3\u0ea5\u0ea7\u0eaa-\u0eab\u0ead-\u0eb0\u0eb2-\u0eb3\u0ebd\u0ec0-\u0ec4\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065-\u1066\u106e-\u1070\u1075-\u1081\u108e\u1100-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16f1-\u16f8\u1700-\u170c\u170e-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17dc\u1820-\u1842\u1844-\u1878\u1880-\u1884\u1887-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191e\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a16\u1a20-\u1a54\u1b05-\u1b33\u1b45-\u1b4b\u1b83-\u1ba0\u1bae-\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c77\u1ce9-\u1cec\u1cee-\u1cf1\u1cf5-\u1cf6\u2135-\u2138\u2d30-\u2d67\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u3006\u303c\u3041-\u3096\u309f\u30a1-\u30fa\u30ff\u3105-\u312f\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fef\ua000-\ua014\ua016-\ua48c\ua4d0-\ua4f7\ua500-\ua60b\ua610-\ua61f\ua62a-\ua62b\ua66e\ua6a0-\ua6e5\ua78f\ua7f7\ua7fb-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua8fd-\ua8fe\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9e0-\ua9e4\ua9e7-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa6f\uaa71-\uaa76\uaa7a\uaa7e-\uaaaf\uaab1\uaab5-\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadc\uaae0-\uaaea\uaaf2\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uabc0-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40-\ufb41\ufb43-\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff66-\uff6f\uff71-\uff9d\uffa0-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc\U00010000-\U0001000b\U0001000d-\U00010026\U00010028-\U0001003a\U0001003c-\U0001003d\U0001003f-\U0001004d\U00010050-\U0001005d\U00010080-\U000100fa\U00010280-\U0001029c\U000102a0-\U000102d0\U00010300-\U0001031f\U0001032d-\U00010340\U00010342-\U00010349\U00010350-\U00010375\U00010380-\U0001039d\U000103a0-\U000103c3\U000103c8-\U000103cf\U00010450-\U0001049d\U00010500-\U00010527\U00010530-\U00010563\U00010600-\U00010736\U00010740-\U00010755\U00010760-\U00010767\U00010800-\U00010805\U00010808\U0001080a-\U00010835\U00010837-\U00010838\U0001083c\U0001083f-\U00010855\U00010860-\U00010876\U00010880-\U0001089e\U000108e0-\U000108f2\U000108f4-\U000108f5\U00010900-\U00010915\U00010920-\U00010939\U00010980-\U000109b7\U000109be-\U000109bf\U00010a00\U00010a10-\U00010a13\U00010a15-\U00010a17\U00010a19-\U00010a35\U00010a60-\U00010a7c\U00010a80-\U00010a9c\U00010ac0-\U00010ac7\U00010ac9-\U00010ae4\U00010b00-\U00010b35\U00010b40-\U00010b55\U00010b60-\U00010b72\U00010b80-\U00010b91\U00010c00-\U00010c48\U00010d00-\U00010d23\U00010f00-\U00010f1c\U00010f27\U00010f30-\U00010f45\U00011003-\U00011037\U00011083-\U000110af\U000110d0-\U000110e8\U00011103-\U00011126\U00011144\U00011150-\U00011172\U00011176\U00011183-\U000111b2\U000111c1-\U000111c4\U000111da\U000111dc\U00011200-\U00011211\U00011213-\U0001122b\U00011280-\U00011286\U00011288\U0001128a-\U0001128d\U0001128f-\U0001129d\U0001129f-\U000112a8\U000112b0-\U000112de\U00011305-\U0001130c\U0001130f-\U00011310\U00011313-\U00011328\U0001132a-\U00011330\U00011332-\U00011333\U00011335-\U00011339\U0001133d\U00011350\U0001135d-\U00011361\U00011400-\U00011434\U00011447-\U0001144a\U00011480-\U000114af\U000114c4-\U000114c5\U000114c7\U00011580-\U000115ae\U000115d8-\U000115db\U00011600-\U0001162f\U00011644\U00011680-\U000116aa\U00011700-\U0001171a\U00011800-\U0001182b\U000118ff\U00011a00\U00011a0b-\U00011a32\U00011a3a\U00011a50\U00011a5c-\U00011a83\U00011a86-\U00011a89\U00011a9d\U00011ac0-\U00011af8\U00011c00-\U00011c08\U00011c0a-\U00011c2e\U00011c40\U00011c72-\U00011c8f\U00011d00-\U00011d06\U00011d08-\U00011d09\U00011d0b-\U00011d30\U00011d46\U00011d60-\U00011d65\U00011d67-\U00011d68\U00011d6a-\U00011d89\U00011d98\U00011ee0-\U00011ef2\U00012000-\U00012399\U00012480-\U00012543\U00013000-\U0001342e\U00014400-\U00014646\U00016800-\U00016a38\U00016a40-\U00016a5e\U00016ad0-\U00016aed\U00016b00-\U00016b2f\U00016b63-\U00016b77\U00016b7d-\U00016b8f\U00016f00-\U00016f44\U00016f50\U00017000-\U000187f1\U00018800-\U00018af2\U0001b000-\U0001b11e\U0001b170-\U0001b2fb\U0001bc00-\U0001bc6a\U0001bc70-\U0001bc7c\U0001bc80-\U0001bc88\U0001bc90-\U0001bc99\U0001e800-\U0001e8c4\U0001ee00-\U0001ee03\U0001ee05-\U0001ee1f\U0001ee21-\U0001ee22\U0001ee24\U0001ee27\U0001ee29-\U0001ee32\U0001ee34-\U0001ee37\U0001ee39\U0001ee3b\U0001ee42\U0001ee47\U0001ee49\U0001ee4b\U0001ee4d-\U0001ee4f\U0001ee51-\U0001ee52\U0001ee54\U0001ee57\U0001ee59\U0001ee5b\U0001ee5d\U0001ee5f\U0001ee61-\U0001ee62\U0001ee64\U0001ee67-\U0001ee6a\U0001ee6c-\U0001ee72\U0001ee74-\U0001ee77\U0001ee79-\U0001ee7c\U0001ee7e\U0001ee80-\U0001ee89\U0001ee8b-\U0001ee9b\U0001eea1-\U0001eea3\U0001eea5-\U0001eea9\U0001eeab-\U0001eebb\U00020000-\U0002a6d6\U0002a700-\U0002b734\U0002b740-\U0002b81d\U0002b820-\U0002cea1\U0002ceb0-\U0002ebe0\U0002f800-\U0002fa1d'
-Lt = u'\u01c5\u01c8\u01cb\u01f2\u1f88-\u1f8f\u1f98-\u1f9f\u1fa8-\u1faf\u1fbc\u1fcc\u1ffc'
+Lt = '\u01c5\u01c8\u01cb\u01f2\u1f88-\u1f8f\u1f98-\u1f9f\u1fa8-\u1faf\u1fbc\u1fcc\u1ffc'
-Lu = u'A-Z\xc0-\xd6\xd8-\xde\u0100\u0102\u0104\u0106\u0108\u010a\u010c\u010e\u0110\u0112\u0114\u0116\u0118\u011a\u011c\u011e\u0120\u0122\u0124\u0126\u0128\u012a\u012c\u012e\u0130\u0132\u0134\u0136\u0139\u013b\u013d\u013f\u0141\u0143\u0145\u0147\u014a\u014c\u014e\u0150\u0152\u0154\u0156\u0158\u015a\u015c\u015e\u0160\u0162\u0164\u0166\u0168\u016a\u016c\u016e\u0170\u0172\u0174\u0176\u0178-\u0179\u017b\u017d\u0181-\u0182\u0184\u0186-\u0187\u0189-\u018b\u018e-\u0191\u0193-\u0194\u0196-\u0198\u019c-\u019d\u019f-\u01a0\u01a2\u01a4\u01a6-\u01a7\u01a9\u01ac\u01ae-\u01af\u01b1-\u01b3\u01b5\u01b7-\u01b8\u01bc\u01c4\u01c7\u01ca\u01cd\u01cf\u01d1\u01d3\u01d5\u01d7\u01d9\u01db\u01de\u01e0\u01e2\u01e4\u01e6\u01e8\u01ea\u01ec\u01ee\u01f1\u01f4\u01f6-\u01f8\u01fa\u01fc\u01fe\u0200\u0202\u0204\u0206\u0208\u020a\u020c\u020e\u0210\u0212\u0214\u0216\u0218\u021a\u021c\u021e\u0220\u0222\u0224\u0226\u0228\u022a\u022c\u022e\u0230\u0232\u023a-\u023b\u023d-\u023e\u0241\u0243-\u0246\u0248\u024a\u024c\u024e\u0370\u0372\u0376\u037f\u0386\u0388-\u038a\u038c\u038e-\u038f\u0391-\u03a1\u03a3-\u03ab\u03cf\u03d2-\u03d4\u03d8\u03da\u03dc\u03de\u03e0\u03e2\u03e4\u03e6\u03e8\u03ea\u03ec\u03ee\u03f4\u03f7\u03f9-\u03fa\u03fd-\u042f\u0460\u0462\u0464\u0466\u0468\u046a\u046c\u046e\u0470\u0472\u0474\u0476\u0478\u047a\u047c\u047e\u0480\u048a\u048c\u048e\u0490\u0492\u0494\u0496\u0498\u049a\u049c\u049e\u04a0\u04a2\u04a4\u04a6\u04a8\u04aa\u04ac\u04ae\u04b0\u04b2\u04b4\u04b6\u04b8\u04ba\u04bc\u04be\u04c0-\u04c1\u04c3\u04c5\u04c7\u04c9\u04cb\u04cd\u04d0\u04d2\u04d4\u04d6\u04d8\u04da\u04dc\u04de\u04e0\u04e2\u04e4\u04e6\u04e8\u04ea\u04ec\u04ee\u04f0\u04f2\u04f4\u04f6\u04f8\u04fa\u04fc\u04fe\u0500\u0502\u0504\u0506\u0508\u050a\u050c\u050e\u0510\u0512\u0514\u0516\u0518\u051a\u051c\u051e\u0520\u0522\u0524\u0526\u0528\u052a\u052c\u052e\u0531-\u0556\u10a0-\u10c5\u10c7\u10cd\u13a0-\u13f5\u1c90-\u1cba\u1cbd-\u1cbf\u1e00\u1e02\u1e04\u1e06\u1e08\u1e0a\u1e0c\u1e0e\u1e10\u1e12\u1e14\u1e16\u1e18\u1e1a\u1e1c\u1e1e\u1e20\u1e22\u1e24\u1e26\u1e28\u1e2a\u1e2c\u1e2e\u1e30\u1e32\u1e34\u1e36\u1e38\u1e3a\u1e3c\u1e3e\u1e40\u1e42\u1e44\u1e46\u1e48\u1e4a\u1e4c\u1e4e\u1e50\u1e52\u1e54\u1e56\u1e58\u1e5a\u1e5c\u1e5e\u1e60\u1e62\u1e64\u1e66\u1e68\u1e6a\u1e6c\u1e6e\u1e70\u1e72\u1e74\u1e76\u1e78\u1e7a\u1e7c\u1e7e\u1e80\u1e82\u1e84\u1e86\u1e88\u1e8a\u1e8c\u1e8e\u1e90\u1e92\u1e94\u1e9e\u1ea0\u1ea2\u1ea4\u1ea6\u1ea8\u1eaa\u1eac\u1eae\u1eb0\u1eb2\u1eb4\u1eb6\u1eb8\u1eba\u1ebc\u1ebe\u1ec0\u1ec2\u1ec4\u1ec6\u1ec8\u1eca\u1ecc\u1ece\u1ed0\u1ed2\u1ed4\u1ed6\u1ed8\u1eda\u1edc\u1ede\u1ee0\u1ee2\u1ee4\u1ee6\u1ee8\u1eea\u1eec\u1eee\u1ef0\u1ef2\u1ef4\u1ef6\u1ef8\u1efa\u1efc\u1efe\u1f08-\u1f0f\u1f18-\u1f1d\u1f28-\u1f2f\u1f38-\u1f3f\u1f48-\u1f4d\u1f59\u1f5b\u1f5d\u1f5f\u1f68-\u1f6f\u1fb8-\u1fbb\u1fc8-\u1fcb\u1fd8-\u1fdb\u1fe8-\u1fec\u1ff8-\u1ffb\u2102\u2107\u210b-\u210d\u2110-\u2112\u2115\u2119-\u211d\u2124\u2126\u2128\u212a-\u212d\u2130-\u2133\u213e-\u213f\u2145\u2183\u2c00-\u2c2e\u2c60\u2c62-\u2c64\u2c67\u2c69\u2c6b\u2c6d-\u2c70\u2c72\u2c75\u2c7e-\u2c80\u2c82\u2c84\u2c86\u2c88\u2c8a\u2c8c\u2c8e\u2c90\u2c92\u2c94\u2c96\u2c98\u2c9a\u2c9c\u2c9e\u2ca0\u2ca2\u2ca4\u2ca6\u2ca8\u2caa\u2cac\u2cae\u2cb0\u2cb2\u2cb4\u2cb6\u2cb8\u2cba\u2cbc\u2cbe\u2cc0\u2cc2\u2cc4\u2cc6\u2cc8\u2cca\u2ccc\u2cce\u2cd0\u2cd2\u2cd4\u2cd6\u2cd8\u2cda\u2cdc\u2cde\u2ce0\u2ce2\u2ceb\u2ced\u2cf2\ua640\ua642\ua644\ua646\ua648\ua64a\ua64c\ua64e\ua650\ua652\ua654\ua656\ua658\ua65a\ua65c\ua65e\ua660\ua662\ua664\ua666\ua668\ua66a\ua66c\ua680\ua682\ua684\ua686\ua688\ua68a\ua68c\ua68e\ua690\ua692\ua694\ua696\ua698\ua69a\ua722\ua724\ua726\ua728\ua72a\ua72c\ua72e\ua732\ua734\ua736\ua738\ua73a\ua73c\ua73e\ua740\ua742\ua744\ua746\ua748\ua74a\ua74c\ua74e\ua750\ua752\ua754\ua756\ua758\ua75a\ua75c\ua75e\ua760\ua762\ua764\ua766\ua768\ua76a\ua76c\ua76e\ua779\ua77b\ua77d-\ua77e\ua780\ua782\ua784\ua786\ua78b\ua78d\ua790\ua792\ua796\ua798\ua79a\ua79c\ua79e\ua7a0\ua7a2\ua7a4\ua7a6\ua7a8\ua7aa-\ua7ae\ua7b0-\ua7b4\ua7b6\ua7b8\uff21-\uff3a'
+Lu = 'A-Z\xc0-\xd6\xd8-\xde\u0100\u0102\u0104\u0106\u0108\u010a\u010c\u010e\u0110\u0112\u0114\u0116\u0118\u011a\u011c\u011e\u0120\u0122\u0124\u0126\u0128\u012a\u012c\u012e\u0130\u0132\u0134\u0136\u0139\u013b\u013d\u013f\u0141\u0143\u0145\u0147\u014a\u014c\u014e\u0150\u0152\u0154\u0156\u0158\u015a\u015c\u015e\u0160\u0162\u0164\u0166\u0168\u016a\u016c\u016e\u0170\u0172\u0174\u0176\u0178-\u0179\u017b\u017d\u0181-\u0182\u0184\u0186-\u0187\u0189-\u018b\u018e-\u0191\u0193-\u0194\u0196-\u0198\u019c-\u019d\u019f-\u01a0\u01a2\u01a4\u01a6-\u01a7\u01a9\u01ac\u01ae-\u01af\u01b1-\u01b3\u01b5\u01b7-\u01b8\u01bc\u01c4\u01c7\u01ca\u01cd\u01cf\u01d1\u01d3\u01d5\u01d7\u01d9\u01db\u01de\u01e0\u01e2\u01e4\u01e6\u01e8\u01ea\u01ec\u01ee\u01f1\u01f4\u01f6-\u01f8\u01fa\u01fc\u01fe\u0200\u0202\u0204\u0206\u0208\u020a\u020c\u020e\u0210\u0212\u0214\u0216\u0218\u021a\u021c\u021e\u0220\u0222\u0224\u0226\u0228\u022a\u022c\u022e\u0230\u0232\u023a-\u023b\u023d-\u023e\u0241\u0243-\u0246\u0248\u024a\u024c\u024e\u0370\u0372\u0376\u037f\u0386\u0388-\u038a\u038c\u038e-\u038f\u0391-\u03a1\u03a3-\u03ab\u03cf\u03d2-\u03d4\u03d8\u03da\u03dc\u03de\u03e0\u03e2\u03e4\u03e6\u03e8\u03ea\u03ec\u03ee\u03f4\u03f7\u03f9-\u03fa\u03fd-\u042f\u0460\u0462\u0464\u0466\u0468\u046a\u046c\u046e\u0470\u0472\u0474\u0476\u0478\u047a\u047c\u047e\u0480\u048a\u048c\u048e\u0490\u0492\u0494\u0496\u0498\u049a\u049c\u049e\u04a0\u04a2\u04a4\u04a6\u04a8\u04aa\u04ac\u04ae\u04b0\u04b2\u04b4\u04b6\u04b8\u04ba\u04bc\u04be\u04c0-\u04c1\u04c3\u04c5\u04c7\u04c9\u04cb\u04cd\u04d0\u04d2\u04d4\u04d6\u04d8\u04da\u04dc\u04de\u04e0\u04e2\u04e4\u04e6\u04e8\u04ea\u04ec\u04ee\u04f0\u04f2\u04f4\u04f6\u04f8\u04fa\u04fc\u04fe\u0500\u0502\u0504\u0506\u0508\u050a\u050c\u050e\u0510\u0512\u0514\u0516\u0518\u051a\u051c\u051e\u0520\u0522\u0524\u0526\u0528\u052a\u052c\u052e\u0531-\u0556\u10a0-\u10c5\u10c7\u10cd\u13a0-\u13f5\u1c90-\u1cba\u1cbd-\u1cbf\u1e00\u1e02\u1e04\u1e06\u1e08\u1e0a\u1e0c\u1e0e\u1e10\u1e12\u1e14\u1e16\u1e18\u1e1a\u1e1c\u1e1e\u1e20\u1e22\u1e24\u1e26\u1e28\u1e2a\u1e2c\u1e2e\u1e30\u1e32\u1e34\u1e36\u1e38\u1e3a\u1e3c\u1e3e\u1e40\u1e42\u1e44\u1e46\u1e48\u1e4a\u1e4c\u1e4e\u1e50\u1e52\u1e54\u1e56\u1e58\u1e5a\u1e5c\u1e5e\u1e60\u1e62\u1e64\u1e66\u1e68\u1e6a\u1e6c\u1e6e\u1e70\u1e72\u1e74\u1e76\u1e78\u1e7a\u1e7c\u1e7e\u1e80\u1e82\u1e84\u1e86\u1e88\u1e8a\u1e8c\u1e8e\u1e90\u1e92\u1e94\u1e9e\u1ea0\u1ea2\u1ea4\u1ea6\u1ea8\u1eaa\u1eac\u1eae\u1eb0\u1eb2\u1eb4\u1eb6\u1eb8\u1eba\u1ebc\u1ebe\u1ec0\u1ec2\u1ec4\u1ec6\u1ec8\u1eca\u1ecc\u1ece\u1ed0\u1ed2\u1ed4\u1ed6\u1ed8\u1eda\u1edc\u1ede\u1ee0\u1ee2\u1ee4\u1ee6\u1ee8\u1eea\u1eec\u1eee\u1ef0\u1ef2\u1ef4\u1ef6\u1ef8\u1efa\u1efc\u1efe\u1f08-\u1f0f\u1f18-\u1f1d\u1f28-\u1f2f\u1f38-\u1f3f\u1f48-\u1f4d\u1f59\u1f5b\u1f5d\u1f5f\u1f68-\u1f6f\u1fb8-\u1fbb\u1fc8-\u1fcb\u1fd8-\u1fdb\u1fe8-\u1fec\u1ff8-\u1ffb\u2102\u2107\u210b-\u210d\u2110-\u2112\u2115\u2119-\u211d\u2124\u2126\u2128\u212a-\u212d\u2130-\u2133\u213e-\u213f\u2145\u2183\u2c00-\u2c2e\u2c60\u2c62-\u2c64\u2c67\u2c69\u2c6b\u2c6d-\u2c70\u2c72\u2c75\u2c7e-\u2c80\u2c82\u2c84\u2c86\u2c88\u2c8a\u2c8c\u2c8e\u2c90\u2c92\u2c94\u2c96\u2c98\u2c9a\u2c9c\u2c9e\u2ca0\u2ca2\u2ca4\u2ca6\u2ca8\u2caa\u2cac\u2cae\u2cb0\u2cb2\u2cb4\u2cb6\u2cb8\u2cba\u2cbc\u2cbe\u2cc0\u2cc2\u2cc4\u2cc6\u2cc8\u2cca\u2ccc\u2cce\u2cd0\u2cd2\u2cd4\u2cd6\u2cd8\u2cda\u2cdc\u2cde\u2ce0\u2ce2\u2ceb\u2ced\u2cf2\ua640\ua642\ua644\ua646\ua648\ua64a\ua64c\ua64e\ua650\ua652\ua654\ua656\ua658\ua65a\ua65c\ua65e\ua660\ua662\ua664\ua666\ua668\ua66a\ua66c\ua680\ua682\ua684\ua686\ua688\ua68a\ua68c\ua68e\ua690\ua692\ua694\ua696\ua698\ua69a\ua722\ua724\ua726\ua728\ua72a\ua72c\ua72e\ua732\ua734\ua736\ua738\ua73a\ua73c\ua73e\ua740\ua742\ua744\ua746\ua748\ua74a\ua74c\ua74e\ua750\ua752\ua754\ua756\ua758\ua75a\ua75c\ua75e\ua760\ua762\ua764\ua766\ua768\ua76a\ua76c\ua76e\ua779\ua77b\ua77d-\ua77e\ua780\ua782\ua784\ua786\ua78b\ua78d\ua790\ua792\ua796\ua798\ua79a\ua79c\ua79e\ua7a0\ua7a2\ua7a4\ua7a6\ua7a8\ua7aa-\ua7ae\ua7b0-\ua7b4\ua7b6\ua7b8\uff21-\uff3a\U00010400-\U00010427\U000104b0-\U000104d3\U00010c80-\U00010cb2\U000118a0-\U000118bf\U00016e40-\U00016e5f\U0001d400-\U0001d419\U0001d434-\U0001d44d\U0001d468-\U0001d481\U0001d49c\U0001d49e-\U0001d49f\U0001d4a2\U0001d4a5-\U0001d4a6\U0001d4a9-\U0001d4ac\U0001d4ae-\U0001d4b5\U0001d4d0-\U0001d4e9\U0001d504-\U0001d505\U0001d507-\U0001d50a\U0001d50d-\U0001d514\U0001d516-\U0001d51c\U0001d538-\U0001d539\U0001d53b-\U0001d53e\U0001d540-\U0001d544\U0001d546\U0001d54a-\U0001d550\U0001d56c-\U0001d585\U0001d5a0-\U0001d5b9\U0001d5d4-\U0001d5ed\U0001d608-\U0001d621\U0001d63c-\U0001d655\U0001d670-\U0001d689\U0001d6a8-\U0001d6c0\U0001d6e2-\U0001d6fa\U0001d71c-\U0001d734\U0001d756-\U0001d76e\U0001d790-\U0001d7a8\U0001d7ca\U0001e900-\U0001e921'
-Mc = u'\u0903\u093b\u093e-\u0940\u0949-\u094c\u094e-\u094f\u0982-\u0983\u09be-\u09c0\u09c7-\u09c8\u09cb-\u09cc\u09d7\u0a03\u0a3e-\u0a40\u0a83\u0abe-\u0ac0\u0ac9\u0acb-\u0acc\u0b02-\u0b03\u0b3e\u0b40\u0b47-\u0b48\u0b4b-\u0b4c\u0b57\u0bbe-\u0bbf\u0bc1-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcc\u0bd7\u0c01-\u0c03\u0c41-\u0c44\u0c82-\u0c83\u0cbe\u0cc0-\u0cc4\u0cc7-\u0cc8\u0cca-\u0ccb\u0cd5-\u0cd6\u0d02-\u0d03\u0d3e-\u0d40\u0d46-\u0d48\u0d4a-\u0d4c\u0d57\u0d82-\u0d83\u0dcf-\u0dd1\u0dd8-\u0ddf\u0df2-\u0df3\u0f3e-\u0f3f\u0f7f\u102b-\u102c\u1031\u1038\u103b-\u103c\u1056-\u1057\u1062-\u1064\u1067-\u106d\u1083-\u1084\u1087-\u108c\u108f\u109a-\u109c\u17b6\u17be-\u17c5\u17c7-\u17c8\u1923-\u1926\u1929-\u192b\u1930-\u1931\u1933-\u1938\u1a19-\u1a1a\u1a55\u1a57\u1a61\u1a63-\u1a64\u1a6d-\u1a72\u1b04\u1b35\u1b3b\u1b3d-\u1b41\u1b43-\u1b44\u1b82\u1ba1\u1ba6-\u1ba7\u1baa\u1be7\u1bea-\u1bec\u1bee\u1bf2-\u1bf3\u1c24-\u1c2b\u1c34-\u1c35\u1ce1\u1cf2-\u1cf3\u1cf7\u302e-\u302f\ua823-\ua824\ua827\ua880-\ua881\ua8b4-\ua8c3\ua952-\ua953\ua983\ua9b4-\ua9b5\ua9ba-\ua9bb\ua9bd-\ua9c0\uaa2f-\uaa30\uaa33-\uaa34\uaa4d\uaa7b\uaa7d\uaaeb\uaaee-\uaaef\uaaf5\uabe3-\uabe4\uabe6-\uabe7\uabe9-\uabea\uabec'
+Mc = '\u0903\u093b\u093e-\u0940\u0949-\u094c\u094e-\u094f\u0982-\u0983\u09be-\u09c0\u09c7-\u09c8\u09cb-\u09cc\u09d7\u0a03\u0a3e-\u0a40\u0a83\u0abe-\u0ac0\u0ac9\u0acb-\u0acc\u0b02-\u0b03\u0b3e\u0b40\u0b47-\u0b48\u0b4b-\u0b4c\u0b57\u0bbe-\u0bbf\u0bc1-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcc\u0bd7\u0c01-\u0c03\u0c41-\u0c44\u0c82-\u0c83\u0cbe\u0cc0-\u0cc4\u0cc7-\u0cc8\u0cca-\u0ccb\u0cd5-\u0cd6\u0d02-\u0d03\u0d3e-\u0d40\u0d46-\u0d48\u0d4a-\u0d4c\u0d57\u0d82-\u0d83\u0dcf-\u0dd1\u0dd8-\u0ddf\u0df2-\u0df3\u0f3e-\u0f3f\u0f7f\u102b-\u102c\u1031\u1038\u103b-\u103c\u1056-\u1057\u1062-\u1064\u1067-\u106d\u1083-\u1084\u1087-\u108c\u108f\u109a-\u109c\u17b6\u17be-\u17c5\u17c7-\u17c8\u1923-\u1926\u1929-\u192b\u1930-\u1931\u1933-\u1938\u1a19-\u1a1a\u1a55\u1a57\u1a61\u1a63-\u1a64\u1a6d-\u1a72\u1b04\u1b35\u1b3b\u1b3d-\u1b41\u1b43-\u1b44\u1b82\u1ba1\u1ba6-\u1ba7\u1baa\u1be7\u1bea-\u1bec\u1bee\u1bf2-\u1bf3\u1c24-\u1c2b\u1c34-\u1c35\u1ce1\u1cf2-\u1cf3\u1cf7\u302e-\u302f\ua823-\ua824\ua827\ua880-\ua881\ua8b4-\ua8c3\ua952-\ua953\ua983\ua9b4-\ua9b5\ua9ba-\ua9bb\ua9bd-\ua9c0\uaa2f-\uaa30\uaa33-\uaa34\uaa4d\uaa7b\uaa7d\uaaeb\uaaee-\uaaef\uaaf5\uabe3-\uabe4\uabe6-\uabe7\uabe9-\uabea\uabec\U00011000\U00011002\U00011082\U000110b0-\U000110b2\U000110b7-\U000110b8\U0001112c\U00011145-\U00011146\U00011182\U000111b3-\U000111b5\U000111bf-\U000111c0\U0001122c-\U0001122e\U00011232-\U00011233\U00011235\U000112e0-\U000112e2\U00011302-\U00011303\U0001133e-\U0001133f\U00011341-\U00011344\U00011347-\U00011348\U0001134b-\U0001134d\U00011357\U00011362-\U00011363\U00011435-\U00011437\U00011440-\U00011441\U00011445\U000114b0-\U000114b2\U000114b9\U000114bb-\U000114be\U000114c1\U000115af-\U000115b1\U000115b8-\U000115bb\U000115be\U00011630-\U00011632\U0001163b-\U0001163c\U0001163e\U000116ac\U000116ae-\U000116af\U000116b6\U00011720-\U00011721\U00011726\U0001182c-\U0001182e\U00011838\U00011a39\U00011a57-\U00011a58\U00011a97\U00011c2f\U00011c3e\U00011ca9\U00011cb1\U00011cb4\U00011d8a-\U00011d8e\U00011d93-\U00011d94\U00011d96\U00011ef5-\U00011ef6\U00016f51-\U00016f7e\U0001d165-\U0001d166\U0001d16d-\U0001d172'
-Me = u'\u0488-\u0489\u1abe\u20dd-\u20e0\u20e2-\u20e4\ua670-\ua672'
+Me = '\u0488-\u0489\u1abe\u20dd-\u20e0\u20e2-\u20e4\ua670-\ua672'
-Mn = u'\u0300-\u036f\u0483-\u0487\u0591-\u05bd\u05bf\u05c1-\u05c2\u05c4-\u05c5\u05c7\u0610-\u061a\u064b-\u065f\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7-\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u07fd\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u08d3-\u08e1\u08e3-\u0902\u093a\u093c\u0941-\u0948\u094d\u0951-\u0957\u0962-\u0963\u0981\u09bc\u09c1-\u09c4\u09cd\u09e2-\u09e3\u09fe\u0a01-\u0a02\u0a3c\u0a41-\u0a42\u0a47-\u0a48\u0a4b-\u0a4d\u0a51\u0a70-\u0a71\u0a75\u0a81-\u0a82\u0abc\u0ac1-\u0ac5\u0ac7-\u0ac8\u0acd\u0ae2-\u0ae3\u0afa-\u0aff\u0b01\u0b3c\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b62-\u0b63\u0b82\u0bc0\u0bcd\u0c00\u0c04\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55-\u0c56\u0c62-\u0c63\u0c81\u0cbc\u0cbf\u0cc6\u0ccc-\u0ccd\u0ce2-\u0ce3\u0d00-\u0d01\u0d3b-\u0d3c\u0d41-\u0d44\u0d4d\u0d62-\u0d63\u0dca\u0dd2-\u0dd4\u0dd6\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb-\u0ebc\u0ec8-\u0ecd\u0f18-\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86-\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039-\u103a\u103d-\u103e\u1058-\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085-\u1086\u108d\u109d\u135d-\u135f\u1712-\u1714\u1732-\u1734\u1752-\u1753\u1772-\u1773\u17b4-\u17b5\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u1885-\u1886\u18a9\u1920-\u1922\u1927-\u1928\u1932\u1939-\u193b\u1a17-\u1a18\u1a1b\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1ab0-\u1abd\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80-\u1b81\u1ba2-\u1ba5\u1ba8-\u1ba9\u1bab-\u1bad\u1be6\u1be8-\u1be9\u1bed\u1bef-\u1bf1\u1c2c-\u1c33\u1c36-\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1cf4\u1cf8-\u1cf9\u1dc0-\u1df9\u1dfb-\u1dff\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302d\u3099-\u309a\ua66f\ua674-\ua67d\ua69e-\ua69f\ua6f0-\ua6f1\ua802\ua806\ua80b\ua825-\ua826\ua8c4-\ua8c5\ua8e0-\ua8f1\ua8ff\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\ua9e5\uaa29-\uaa2e\uaa31-\uaa32\uaa35-\uaa36\uaa43\uaa4c\uaa7c\uaab0\uaab2-\uaab4\uaab7-\uaab8\uaabe-\uaabf\uaac1\uaaec-\uaaed\uaaf6\uabe5\uabe8\uabed\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f'
+Mn = '\u0300-\u036f\u0483-\u0487\u0591-\u05bd\u05bf\u05c1-\u05c2\u05c4-\u05c5\u05c7\u0610-\u061a\u064b-\u065f\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7-\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u07fd\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u08d3-\u08e1\u08e3-\u0902\u093a\u093c\u0941-\u0948\u094d\u0951-\u0957\u0962-\u0963\u0981\u09bc\u09c1-\u09c4\u09cd\u09e2-\u09e3\u09fe\u0a01-\u0a02\u0a3c\u0a41-\u0a42\u0a47-\u0a48\u0a4b-\u0a4d\u0a51\u0a70-\u0a71\u0a75\u0a81-\u0a82\u0abc\u0ac1-\u0ac5\u0ac7-\u0ac8\u0acd\u0ae2-\u0ae3\u0afa-\u0aff\u0b01\u0b3c\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b62-\u0b63\u0b82\u0bc0\u0bcd\u0c00\u0c04\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55-\u0c56\u0c62-\u0c63\u0c81\u0cbc\u0cbf\u0cc6\u0ccc-\u0ccd\u0ce2-\u0ce3\u0d00-\u0d01\u0d3b-\u0d3c\u0d41-\u0d44\u0d4d\u0d62-\u0d63\u0dca\u0dd2-\u0dd4\u0dd6\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb-\u0ebc\u0ec8-\u0ecd\u0f18-\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86-\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039-\u103a\u103d-\u103e\u1058-\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085-\u1086\u108d\u109d\u135d-\u135f\u1712-\u1714\u1732-\u1734\u1752-\u1753\u1772-\u1773\u17b4-\u17b5\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u1885-\u1886\u18a9\u1920-\u1922\u1927-\u1928\u1932\u1939-\u193b\u1a17-\u1a18\u1a1b\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1ab0-\u1abd\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80-\u1b81\u1ba2-\u1ba5\u1ba8-\u1ba9\u1bab-\u1bad\u1be6\u1be8-\u1be9\u1bed\u1bef-\u1bf1\u1c2c-\u1c33\u1c36-\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1cf4\u1cf8-\u1cf9\u1dc0-\u1df9\u1dfb-\u1dff\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302d\u3099-\u309a\ua66f\ua674-\ua67d\ua69e-\ua69f\ua6f0-\ua6f1\ua802\ua806\ua80b\ua825-\ua826\ua8c4-\ua8c5\ua8e0-\ua8f1\ua8ff\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\ua9e5\uaa29-\uaa2e\uaa31-\uaa32\uaa35-\uaa36\uaa43\uaa4c\uaa7c\uaab0\uaab2-\uaab4\uaab7-\uaab8\uaabe-\uaabf\uaac1\uaaec-\uaaed\uaaf6\uabe5\uabe8\uabed\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\U000101fd\U000102e0\U00010376-\U0001037a\U00010a01-\U00010a03\U00010a05-\U00010a06\U00010a0c-\U00010a0f\U00010a38-\U00010a3a\U00010a3f\U00010ae5-\U00010ae6\U00010d24-\U00010d27\U00010f46-\U00010f50\U00011001\U00011038-\U00011046\U0001107f-\U00011081\U000110b3-\U000110b6\U000110b9-\U000110ba\U00011100-\U00011102\U00011127-\U0001112b\U0001112d-\U00011134\U00011173\U00011180-\U00011181\U000111b6-\U000111be\U000111c9-\U000111cc\U0001122f-\U00011231\U00011234\U00011236-\U00011237\U0001123e\U000112df\U000112e3-\U000112ea\U00011300-\U00011301\U0001133b-\U0001133c\U00011340\U00011366-\U0001136c\U00011370-\U00011374\U00011438-\U0001143f\U00011442-\U00011444\U00011446\U0001145e\U000114b3-\U000114b8\U000114ba\U000114bf-\U000114c0\U000114c2-\U000114c3\U000115b2-\U000115b5\U000115bc-\U000115bd\U000115bf-\U000115c0\U000115dc-\U000115dd\U00011633-\U0001163a\U0001163d\U0001163f-\U00011640\U000116ab\U000116ad\U000116b0-\U000116b5\U000116b7\U0001171d-\U0001171f\U00011722-\U00011725\U00011727-\U0001172b\U0001182f-\U00011837\U00011839-\U0001183a\U00011a01-\U00011a0a\U00011a33-\U00011a38\U00011a3b-\U00011a3e\U00011a47\U00011a51-\U00011a56\U00011a59-\U00011a5b\U00011a8a-\U00011a96\U00011a98-\U00011a99\U00011c30-\U00011c36\U00011c38-\U00011c3d\U00011c3f\U00011c92-\U00011ca7\U00011caa-\U00011cb0\U00011cb2-\U00011cb3\U00011cb5-\U00011cb6\U00011d31-\U00011d36\U00011d3a\U00011d3c-\U00011d3d\U00011d3f-\U00011d45\U00011d47\U00011d90-\U00011d91\U00011d95\U00011d97\U00011ef3-\U00011ef4\U00016af0-\U00016af4\U00016b30-\U00016b36\U00016f8f-\U00016f92\U0001bc9d-\U0001bc9e\U0001d167-\U0001d169\U0001d17b-\U0001d182\U0001d185-\U0001d18b\U0001d1aa-\U0001d1ad\U0001d242-\U0001d244\U0001da00-\U0001da36\U0001da3b-\U0001da6c\U0001da75\U0001da84\U0001da9b-\U0001da9f\U0001daa1-\U0001daaf\U0001e000-\U0001e006\U0001e008-\U0001e018\U0001e01b-\U0001e021\U0001e023-\U0001e024\U0001e026-\U0001e02a\U0001e8d0-\U0001e8d6\U0001e944-\U0001e94a\U000e0100-\U000e01ef'
-Nd = u'0-9\u0660-\u0669\u06f0-\u06f9\u07c0-\u07c9\u0966-\u096f\u09e6-\u09ef\u0a66-\u0a6f\u0ae6-\u0aef\u0b66-\u0b6f\u0be6-\u0bef\u0c66-\u0c6f\u0ce6-\u0cef\u0d66-\u0d6f\u0de6-\u0def\u0e50-\u0e59\u0ed0-\u0ed9\u0f20-\u0f29\u1040-\u1049\u1090-\u1099\u17e0-\u17e9\u1810-\u1819\u1946-\u194f\u19d0-\u19d9\u1a80-\u1a89\u1a90-\u1a99\u1b50-\u1b59\u1bb0-\u1bb9\u1c40-\u1c49\u1c50-\u1c59\ua620-\ua629\ua8d0-\ua8d9\ua900-\ua909\ua9d0-\ua9d9\ua9f0-\ua9f9\uaa50-\uaa59\uabf0-\uabf9\uff10-\uff19'
+Nd = '0-9\u0660-\u0669\u06f0-\u06f9\u07c0-\u07c9\u0966-\u096f\u09e6-\u09ef\u0a66-\u0a6f\u0ae6-\u0aef\u0b66-\u0b6f\u0be6-\u0bef\u0c66-\u0c6f\u0ce6-\u0cef\u0d66-\u0d6f\u0de6-\u0def\u0e50-\u0e59\u0ed0-\u0ed9\u0f20-\u0f29\u1040-\u1049\u1090-\u1099\u17e0-\u17e9\u1810-\u1819\u1946-\u194f\u19d0-\u19d9\u1a80-\u1a89\u1a90-\u1a99\u1b50-\u1b59\u1bb0-\u1bb9\u1c40-\u1c49\u1c50-\u1c59\ua620-\ua629\ua8d0-\ua8d9\ua900-\ua909\ua9d0-\ua9d9\ua9f0-\ua9f9\uaa50-\uaa59\uabf0-\uabf9\uff10-\uff19\U000104a0-\U000104a9\U00010d30-\U00010d39\U00011066-\U0001106f\U000110f0-\U000110f9\U00011136-\U0001113f\U000111d0-\U000111d9\U000112f0-\U000112f9\U00011450-\U00011459\U000114d0-\U000114d9\U00011650-\U00011659\U000116c0-\U000116c9\U00011730-\U00011739\U000118e0-\U000118e9\U00011c50-\U00011c59\U00011d50-\U00011d59\U00011da0-\U00011da9\U00016a60-\U00016a69\U00016b50-\U00016b59\U0001d7ce-\U0001d7ff\U0001e950-\U0001e959'
-Nl = u'\u16ee-\u16f0\u2160-\u2182\u2185-\u2188\u3007\u3021-\u3029\u3038-\u303a\ua6e6-\ua6ef'
+Nl = '\u16ee-\u16f0\u2160-\u2182\u2185-\u2188\u3007\u3021-\u3029\u3038-\u303a\ua6e6-\ua6ef\U00010140-\U00010174\U00010341\U0001034a\U000103d1-\U000103d5\U00012400-\U0001246e'
-No = u'\xb2-\xb3\xb9\xbc-\xbe\u09f4-\u09f9\u0b72-\u0b77\u0bf0-\u0bf2\u0c78-\u0c7e\u0d58-\u0d5e\u0d70-\u0d78\u0f2a-\u0f33\u1369-\u137c\u17f0-\u17f9\u19da\u2070\u2074-\u2079\u2080-\u2089\u2150-\u215f\u2189\u2460-\u249b\u24ea-\u24ff\u2776-\u2793\u2cfd\u3192-\u3195\u3220-\u3229\u3248-\u324f\u3251-\u325f\u3280-\u3289\u32b1-\u32bf\ua830-\ua835'
+No = '\xb2-\xb3\xb9\xbc-\xbe\u09f4-\u09f9\u0b72-\u0b77\u0bf0-\u0bf2\u0c78-\u0c7e\u0d58-\u0d5e\u0d70-\u0d78\u0f2a-\u0f33\u1369-\u137c\u17f0-\u17f9\u19da\u2070\u2074-\u2079\u2080-\u2089\u2150-\u215f\u2189\u2460-\u249b\u24ea-\u24ff\u2776-\u2793\u2cfd\u3192-\u3195\u3220-\u3229\u3248-\u324f\u3251-\u325f\u3280-\u3289\u32b1-\u32bf\ua830-\ua835\U00010107-\U00010133\U00010175-\U00010178\U0001018a-\U0001018b\U000102e1-\U000102fb\U00010320-\U00010323\U00010858-\U0001085f\U00010879-\U0001087f\U000108a7-\U000108af\U000108fb-\U000108ff\U00010916-\U0001091b\U000109bc-\U000109bd\U000109c0-\U000109cf\U000109d2-\U000109ff\U00010a40-\U00010a48\U00010a7d-\U00010a7e\U00010a9d-\U00010a9f\U00010aeb-\U00010aef\U00010b58-\U00010b5f\U00010b78-\U00010b7f\U00010ba9-\U00010baf\U00010cfa-\U00010cff\U00010e60-\U00010e7e\U00010f1d-\U00010f26\U00010f51-\U00010f54\U00011052-\U00011065\U000111e1-\U000111f4\U0001173a-\U0001173b\U000118ea-\U000118f2\U00011c5a-\U00011c6c\U00016b5b-\U00016b61\U00016e80-\U00016e96\U0001d2e0-\U0001d2f3\U0001d360-\U0001d378\U0001e8c7-\U0001e8cf\U0001ec71-\U0001ecab\U0001ecad-\U0001ecaf\U0001ecb1-\U0001ecb4\U0001f100-\U0001f10c'
-Pc = u'_\u203f-\u2040\u2054\ufe33-\ufe34\ufe4d-\ufe4f\uff3f'
+Pc = '_\u203f-\u2040\u2054\ufe33-\ufe34\ufe4d-\ufe4f\uff3f'
-Pd = u'\\-\u058a\u05be\u1400\u1806\u2010-\u2015\u2e17\u2e1a\u2e3a-\u2e3b\u2e40\u301c\u3030\u30a0\ufe31-\ufe32\ufe58\ufe63\uff0d'
+Pd = '\\-\u058a\u05be\u1400\u1806\u2010-\u2015\u2e17\u2e1a\u2e3a-\u2e3b\u2e40\u301c\u3030\u30a0\ufe31-\ufe32\ufe58\ufe63\uff0d'
-Pe = u')\\]}\u0f3b\u0f3d\u169c\u2046\u207e\u208e\u2309\u230b\u232a\u2769\u276b\u276d\u276f\u2771\u2773\u2775\u27c6\u27e7\u27e9\u27eb\u27ed\u27ef\u2984\u2986\u2988\u298a\u298c\u298e\u2990\u2992\u2994\u2996\u2998\u29d9\u29db\u29fd\u2e23\u2e25\u2e27\u2e29\u3009\u300b\u300d\u300f\u3011\u3015\u3017\u3019\u301b\u301e-\u301f\ufd3e\ufe18\ufe36\ufe38\ufe3a\ufe3c\ufe3e\ufe40\ufe42\ufe44\ufe48\ufe5a\ufe5c\ufe5e\uff09\uff3d\uff5d\uff60\uff63'
+Pe = ')\\]}\u0f3b\u0f3d\u169c\u2046\u207e\u208e\u2309\u230b\u232a\u2769\u276b\u276d\u276f\u2771\u2773\u2775\u27c6\u27e7\u27e9\u27eb\u27ed\u27ef\u2984\u2986\u2988\u298a\u298c\u298e\u2990\u2992\u2994\u2996\u2998\u29d9\u29db\u29fd\u2e23\u2e25\u2e27\u2e29\u3009\u300b\u300d\u300f\u3011\u3015\u3017\u3019\u301b\u301e-\u301f\ufd3e\ufe18\ufe36\ufe38\ufe3a\ufe3c\ufe3e\ufe40\ufe42\ufe44\ufe48\ufe5a\ufe5c\ufe5e\uff09\uff3d\uff5d\uff60\uff63'
-Pf = u'\xbb\u2019\u201d\u203a\u2e03\u2e05\u2e0a\u2e0d\u2e1d\u2e21'
+Pf = '\xbb\u2019\u201d\u203a\u2e03\u2e05\u2e0a\u2e0d\u2e1d\u2e21'
-Pi = u'\xab\u2018\u201b-\u201c\u201f\u2039\u2e02\u2e04\u2e09\u2e0c\u2e1c\u2e20'
+Pi = '\xab\u2018\u201b-\u201c\u201f\u2039\u2e02\u2e04\u2e09\u2e0c\u2e1c\u2e20'
-Po = u"!-#%-'*,.-/:-;?-@\\\\\xa1\xa7\xb6-\xb7\xbf\u037e\u0387\u055a-\u055f\u0589\u05c0\u05c3\u05c6\u05f3-\u05f4\u0609-\u060a\u060c-\u060d\u061b\u061e-\u061f\u066a-\u066d\u06d4\u0700-\u070d\u07f7-\u07f9\u0830-\u083e\u085e\u0964-\u0965\u0970\u09fd\u0a76\u0af0\u0c84\u0df4\u0e4f\u0e5a-\u0e5b\u0f04-\u0f12\u0f14\u0f85\u0fd0-\u0fd4\u0fd9-\u0fda\u104a-\u104f\u10fb\u1360-\u1368\u166d-\u166e\u16eb-\u16ed\u1735-\u1736\u17d4-\u17d6\u17d8-\u17da\u1800-\u1805\u1807-\u180a\u1944-\u1945\u1a1e-\u1a1f\u1aa0-\u1aa6\u1aa8-\u1aad\u1b5a-\u1b60\u1bfc-\u1bff\u1c3b-\u1c3f\u1c7e-\u1c7f\u1cc0-\u1cc7\u1cd3\u2016-\u2017\u2020-\u2027\u2030-\u2038\u203b-\u203e\u2041-\u2043\u2047-\u2051\u2053\u2055-\u205e\u2cf9-\u2cfc\u2cfe-\u2cff\u2d70\u2e00-\u2e01\u2e06-\u2e08\u2e0b\u2e0e-\u2e16\u2e18-\u2e19\u2e1b\u2e1e-\u2e1f\u2e2a-\u2e2e\u2e30-\u2e39\u2e3c-\u2e3f\u2e41\u2e43-\u2e4e\u3001-\u3003\u303d\u30fb\ua4fe-\ua4ff\ua60d-\ua60f\ua673\ua67e\ua6f2-\ua6f7\ua874-\ua877\ua8ce-\ua8cf\ua8f8-\ua8fa\ua8fc\ua92e-\ua92f\ua95f\ua9c1-\ua9cd\ua9de-\ua9df\uaa5c-\uaa5f\uaade-\uaadf\uaaf0-\uaaf1\uabeb\ufe10-\ufe16\ufe19\ufe30\ufe45-\ufe46\ufe49-\ufe4c\ufe50-\ufe52\ufe54-\ufe57\ufe5f-\ufe61\ufe68\ufe6a-\ufe6b\uff01-\uff03\uff05-\uff07\uff0a\uff0c\uff0e-\uff0f\uff1a-\uff1b\uff1f-\uff20\uff3c\uff61\uff64-\uff65"
+Po = "!-#%-'*,.-/:-;?-@\\\\\xa1\xa7\xb6-\xb7\xbf\u037e\u0387\u055a-\u055f\u0589\u05c0\u05c3\u05c6\u05f3-\u05f4\u0609-\u060a\u060c-\u060d\u061b\u061e-\u061f\u066a-\u066d\u06d4\u0700-\u070d\u07f7-\u07f9\u0830-\u083e\u085e\u0964-\u0965\u0970\u09fd\u0a76\u0af0\u0c84\u0df4\u0e4f\u0e5a-\u0e5b\u0f04-\u0f12\u0f14\u0f85\u0fd0-\u0fd4\u0fd9-\u0fda\u104a-\u104f\u10fb\u1360-\u1368\u166d-\u166e\u16eb-\u16ed\u1735-\u1736\u17d4-\u17d6\u17d8-\u17da\u1800-\u1805\u1807-\u180a\u1944-\u1945\u1a1e-\u1a1f\u1aa0-\u1aa6\u1aa8-\u1aad\u1b5a-\u1b60\u1bfc-\u1bff\u1c3b-\u1c3f\u1c7e-\u1c7f\u1cc0-\u1cc7\u1cd3\u2016-\u2017\u2020-\u2027\u2030-\u2038\u203b-\u203e\u2041-\u2043\u2047-\u2051\u2053\u2055-\u205e\u2cf9-\u2cfc\u2cfe-\u2cff\u2d70\u2e00-\u2e01\u2e06-\u2e08\u2e0b\u2e0e-\u2e16\u2e18-\u2e19\u2e1b\u2e1e-\u2e1f\u2e2a-\u2e2e\u2e30-\u2e39\u2e3c-\u2e3f\u2e41\u2e43-\u2e4e\u3001-\u3003\u303d\u30fb\ua4fe-\ua4ff\ua60d-\ua60f\ua673\ua67e\ua6f2-\ua6f7\ua874-\ua877\ua8ce-\ua8cf\ua8f8-\ua8fa\ua8fc\ua92e-\ua92f\ua95f\ua9c1-\ua9cd\ua9de-\ua9df\uaa5c-\uaa5f\uaade-\uaadf\uaaf0-\uaaf1\uabeb\ufe10-\ufe16\ufe19\ufe30\ufe45-\ufe46\ufe49-\ufe4c\ufe50-\ufe52\ufe54-\ufe57\ufe5f-\ufe61\ufe68\ufe6a-\ufe6b\uff01-\uff03\uff05-\uff07\uff0a\uff0c\uff0e-\uff0f\uff1a-\uff1b\uff1f-\uff20\uff3c\uff61\uff64-\uff65\U00010100-\U00010102\U0001039f\U000103d0\U0001056f\U00010857\U0001091f\U0001093f\U00010a50-\U00010a58\U00010a7f\U00010af0-\U00010af6\U00010b39-\U00010b3f\U00010b99-\U00010b9c\U00010f55-\U00010f59\U00011047-\U0001104d\U000110bb-\U000110bc\U000110be-\U000110c1\U00011140-\U00011143\U00011174-\U00011175\U000111c5-\U000111c8\U000111cd\U000111db\U000111dd-\U000111df\U00011238-\U0001123d\U000112a9\U0001144b-\U0001144f\U0001145b\U0001145d\U000114c6\U000115c1-\U000115d7\U00011641-\U00011643\U00011660-\U0001166c\U0001173c-\U0001173e\U0001183b\U00011a3f-\U00011a46\U00011a9a-\U00011a9c\U00011a9e-\U00011aa2\U00011c41-\U00011c45\U00011c70-\U00011c71\U00011ef7-\U00011ef8\U00012470-\U00012474\U00016a6e-\U00016a6f\U00016af5\U00016b37-\U00016b3b\U00016b44\U00016e97-\U00016e9a\U0001bc9f\U0001da87-\U0001da8b\U0001e95e-\U0001e95f"
-Ps = u'(\\[{\u0f3a\u0f3c\u169b\u201a\u201e\u2045\u207d\u208d\u2308\u230a\u2329\u2768\u276a\u276c\u276e\u2770\u2772\u2774\u27c5\u27e6\u27e8\u27ea\u27ec\u27ee\u2983\u2985\u2987\u2989\u298b\u298d\u298f\u2991\u2993\u2995\u2997\u29d8\u29da\u29fc\u2e22\u2e24\u2e26\u2e28\u2e42\u3008\u300a\u300c\u300e\u3010\u3014\u3016\u3018\u301a\u301d\ufd3f\ufe17\ufe35\ufe37\ufe39\ufe3b\ufe3d\ufe3f\ufe41\ufe43\ufe47\ufe59\ufe5b\ufe5d\uff08\uff3b\uff5b\uff5f\uff62'
+Ps = '(\\[{\u0f3a\u0f3c\u169b\u201a\u201e\u2045\u207d\u208d\u2308\u230a\u2329\u2768\u276a\u276c\u276e\u2770\u2772\u2774\u27c5\u27e6\u27e8\u27ea\u27ec\u27ee\u2983\u2985\u2987\u2989\u298b\u298d\u298f\u2991\u2993\u2995\u2997\u29d8\u29da\u29fc\u2e22\u2e24\u2e26\u2e28\u2e42\u3008\u300a\u300c\u300e\u3010\u3014\u3016\u3018\u301a\u301d\ufd3f\ufe17\ufe35\ufe37\ufe39\ufe3b\ufe3d\ufe3f\ufe41\ufe43\ufe47\ufe59\ufe5b\ufe5d\uff08\uff3b\uff5b\uff5f\uff62'
-Sc = u'$\xa2-\xa5\u058f\u060b\u07fe-\u07ff\u09f2-\u09f3\u09fb\u0af1\u0bf9\u0e3f\u17db\u20a0-\u20bf\ua838\ufdfc\ufe69\uff04\uffe0-\uffe1\uffe5-\uffe6'
+Sc = '$\xa2-\xa5\u058f\u060b\u07fe-\u07ff\u09f2-\u09f3\u09fb\u0af1\u0bf9\u0e3f\u17db\u20a0-\u20bf\ua838\ufdfc\ufe69\uff04\uffe0-\uffe1\uffe5-\uffe6\U0001ecb0'
-Sk = u'\\^`\xa8\xaf\xb4\xb8\u02c2-\u02c5\u02d2-\u02df\u02e5-\u02eb\u02ed\u02ef-\u02ff\u0375\u0384-\u0385\u1fbd\u1fbf-\u1fc1\u1fcd-\u1fcf\u1fdd-\u1fdf\u1fed-\u1fef\u1ffd-\u1ffe\u309b-\u309c\ua700-\ua716\ua720-\ua721\ua789-\ua78a\uab5b\ufbb2-\ufbc1\uff3e\uff40\uffe3'
+Sk = '\\^`\xa8\xaf\xb4\xb8\u02c2-\u02c5\u02d2-\u02df\u02e5-\u02eb\u02ed\u02ef-\u02ff\u0375\u0384-\u0385\u1fbd\u1fbf-\u1fc1\u1fcd-\u1fcf\u1fdd-\u1fdf\u1fed-\u1fef\u1ffd-\u1ffe\u309b-\u309c\ua700-\ua716\ua720-\ua721\ua789-\ua78a\uab5b\ufbb2-\ufbc1\uff3e\uff40\uffe3\U0001f3fb-\U0001f3ff'
-Sm = u'+<->|~\xac\xb1\xd7\xf7\u03f6\u0606-\u0608\u2044\u2052\u207a-\u207c\u208a-\u208c\u2118\u2140-\u2144\u214b\u2190-\u2194\u219a-\u219b\u21a0\u21a3\u21a6\u21ae\u21ce-\u21cf\u21d2\u21d4\u21f4-\u22ff\u2320-\u2321\u237c\u239b-\u23b3\u23dc-\u23e1\u25b7\u25c1\u25f8-\u25ff\u266f\u27c0-\u27c4\u27c7-\u27e5\u27f0-\u27ff\u2900-\u2982\u2999-\u29d7\u29dc-\u29fb\u29fe-\u2aff\u2b30-\u2b44\u2b47-\u2b4c\ufb29\ufe62\ufe64-\ufe66\uff0b\uff1c-\uff1e\uff5c\uff5e\uffe2\uffe9-\uffec'
+Sm = '+<->|~\xac\xb1\xd7\xf7\u03f6\u0606-\u0608\u2044\u2052\u207a-\u207c\u208a-\u208c\u2118\u2140-\u2144\u214b\u2190-\u2194\u219a-\u219b\u21a0\u21a3\u21a6\u21ae\u21ce-\u21cf\u21d2\u21d4\u21f4-\u22ff\u2320-\u2321\u237c\u239b-\u23b3\u23dc-\u23e1\u25b7\u25c1\u25f8-\u25ff\u266f\u27c0-\u27c4\u27c7-\u27e5\u27f0-\u27ff\u2900-\u2982\u2999-\u29d7\u29dc-\u29fb\u29fe-\u2aff\u2b30-\u2b44\u2b47-\u2b4c\ufb29\ufe62\ufe64-\ufe66\uff0b\uff1c-\uff1e\uff5c\uff5e\uffe2\uffe9-\uffec\U0001d6c1\U0001d6db\U0001d6fb\U0001d715\U0001d735\U0001d74f\U0001d76f\U0001d789\U0001d7a9\U0001d7c3\U0001eef0-\U0001eef1'
-So = u'\xa6\xa9\xae\xb0\u0482\u058d-\u058e\u060e-\u060f\u06de\u06e9\u06fd-\u06fe\u07f6\u09fa\u0b70\u0bf3-\u0bf8\u0bfa\u0c7f\u0d4f\u0d79\u0f01-\u0f03\u0f13\u0f15-\u0f17\u0f1a-\u0f1f\u0f34\u0f36\u0f38\u0fbe-\u0fc5\u0fc7-\u0fcc\u0fce-\u0fcf\u0fd5-\u0fd8\u109e-\u109f\u1390-\u1399\u1940\u19de-\u19ff\u1b61-\u1b6a\u1b74-\u1b7c\u2100-\u2101\u2103-\u2106\u2108-\u2109\u2114\u2116-\u2117\u211e-\u2123\u2125\u2127\u2129\u212e\u213a-\u213b\u214a\u214c-\u214d\u214f\u218a-\u218b\u2195-\u2199\u219c-\u219f\u21a1-\u21a2\u21a4-\u21a5\u21a7-\u21ad\u21af-\u21cd\u21d0-\u21d1\u21d3\u21d5-\u21f3\u2300-\u2307\u230c-\u231f\u2322-\u2328\u232b-\u237b\u237d-\u239a\u23b4-\u23db\u23e2-\u2426\u2440-\u244a\u249c-\u24e9\u2500-\u25b6\u25b8-\u25c0\u25c2-\u25f7\u2600-\u266e\u2670-\u2767\u2794-\u27bf\u2800-\u28ff\u2b00-\u2b2f\u2b45-\u2b46\u2b4d-\u2b73\u2b76-\u2b95\u2b98-\u2bc8\u2bca-\u2bfe\u2ce5-\u2cea\u2e80-\u2e99\u2e9b-\u2ef3\u2f00-\u2fd5\u2ff0-\u2ffb\u3004\u3012-\u3013\u3020\u3036-\u3037\u303e-\u303f\u3190-\u3191\u3196-\u319f\u31c0-\u31e3\u3200-\u321e\u322a-\u3247\u3250\u3260-\u327f\u328a-\u32b0\u32c0-\u32fe\u3300-\u33ff\u4dc0-\u4dff\ua490-\ua4c6\ua828-\ua82b\ua836-\ua837\ua839\uaa77-\uaa79\ufdfd\uffe4\uffe8\uffed-\uffee\ufffc-\ufffd'
+So = '\xa6\xa9\xae\xb0\u0482\u058d-\u058e\u060e-\u060f\u06de\u06e9\u06fd-\u06fe\u07f6\u09fa\u0b70\u0bf3-\u0bf8\u0bfa\u0c7f\u0d4f\u0d79\u0f01-\u0f03\u0f13\u0f15-\u0f17\u0f1a-\u0f1f\u0f34\u0f36\u0f38\u0fbe-\u0fc5\u0fc7-\u0fcc\u0fce-\u0fcf\u0fd5-\u0fd8\u109e-\u109f\u1390-\u1399\u1940\u19de-\u19ff\u1b61-\u1b6a\u1b74-\u1b7c\u2100-\u2101\u2103-\u2106\u2108-\u2109\u2114\u2116-\u2117\u211e-\u2123\u2125\u2127\u2129\u212e\u213a-\u213b\u214a\u214c-\u214d\u214f\u218a-\u218b\u2195-\u2199\u219c-\u219f\u21a1-\u21a2\u21a4-\u21a5\u21a7-\u21ad\u21af-\u21cd\u21d0-\u21d1\u21d3\u21d5-\u21f3\u2300-\u2307\u230c-\u231f\u2322-\u2328\u232b-\u237b\u237d-\u239a\u23b4-\u23db\u23e2-\u2426\u2440-\u244a\u249c-\u24e9\u2500-\u25b6\u25b8-\u25c0\u25c2-\u25f7\u2600-\u266e\u2670-\u2767\u2794-\u27bf\u2800-\u28ff\u2b00-\u2b2f\u2b45-\u2b46\u2b4d-\u2b73\u2b76-\u2b95\u2b98-\u2bc8\u2bca-\u2bfe\u2ce5-\u2cea\u2e80-\u2e99\u2e9b-\u2ef3\u2f00-\u2fd5\u2ff0-\u2ffb\u3004\u3012-\u3013\u3020\u3036-\u3037\u303e-\u303f\u3190-\u3191\u3196-\u319f\u31c0-\u31e3\u3200-\u321e\u322a-\u3247\u3250\u3260-\u327f\u328a-\u32b0\u32c0-\u32fe\u3300-\u33ff\u4dc0-\u4dff\ua490-\ua4c6\ua828-\ua82b\ua836-\ua837\ua839\uaa77-\uaa79\ufdfd\uffe4\uffe8\uffed-\uffee\ufffc-\ufffd\U00010137-\U0001013f\U00010179-\U00010189\U0001018c-\U0001018e\U00010190-\U0001019b\U000101a0\U000101d0-\U000101fc\U00010877-\U00010878\U00010ac8\U0001173f\U00016b3c-\U00016b3f\U00016b45\U0001bc9c\U0001d000-\U0001d0f5\U0001d100-\U0001d126\U0001d129-\U0001d164\U0001d16a-\U0001d16c\U0001d183-\U0001d184\U0001d18c-\U0001d1a9\U0001d1ae-\U0001d1e8\U0001d200-\U0001d241\U0001d245\U0001d300-\U0001d356\U0001d800-\U0001d9ff\U0001da37-\U0001da3a\U0001da6d-\U0001da74\U0001da76-\U0001da83\U0001da85-\U0001da86\U0001ecac\U0001f000-\U0001f02b\U0001f030-\U0001f093\U0001f0a0-\U0001f0ae\U0001f0b1-\U0001f0bf\U0001f0c1-\U0001f0cf\U0001f0d1-\U0001f0f5\U0001f110-\U0001f16b\U0001f170-\U0001f1ac\U0001f1e6-\U0001f202\U0001f210-\U0001f23b\U0001f240-\U0001f248\U0001f250-\U0001f251\U0001f260-\U0001f265\U0001f300-\U0001f3fa\U0001f400-\U0001f6d4\U0001f6e0-\U0001f6ec\U0001f6f0-\U0001f6f9\U0001f700-\U0001f773\U0001f780-\U0001f7d8\U0001f800-\U0001f80b\U0001f810-\U0001f847\U0001f850-\U0001f859\U0001f860-\U0001f887\U0001f890-\U0001f8ad\U0001f900-\U0001f90b\U0001f910-\U0001f93e\U0001f940-\U0001f970\U0001f973-\U0001f976\U0001f97a\U0001f97c-\U0001f9a2\U0001f9b0-\U0001f9b9\U0001f9c0-\U0001f9c2\U0001f9d0-\U0001f9ff\U0001fa60-\U0001fa6d'
-Zl = u'\u2028'
+Zl = '\u2028'
-Zp = u'\u2029'
+Zp = '\u2029'
-Zs = u' \xa0\u1680\u2000-\u200a\u202f\u205f\u3000'
+Zs = ' \xa0\u1680\u2000-\u200a\u202f\u205f\u3000'
-xid_continue = u'0-9A-Z_a-z\xaa\xb5\xb7\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0300-\u0374\u0376-\u0377\u037b-\u037d\u037f\u0386-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u0483-\u0487\u048a-\u052f\u0531-\u0556\u0559\u0560-\u0588\u0591-\u05bd\u05bf\u05c1-\u05c2\u05c4-\u05c5\u05c7\u05d0-\u05ea\u05ef-\u05f2\u0610-\u061a\u0620-\u0669\u066e-\u06d3\u06d5-\u06dc\u06df-\u06e8\u06ea-\u06fc\u06ff\u0710-\u074a\u074d-\u07b1\u07c0-\u07f5\u07fa\u07fd\u0800-\u082d\u0840-\u085b\u0860-\u086a\u08a0-\u08b4\u08b6-\u08bd\u08d3-\u08e1\u08e3-\u0963\u0966-\u096f\u0971-\u0983\u0985-\u098c\u098f-\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bc-\u09c4\u09c7-\u09c8\u09cb-\u09ce\u09d7\u09dc-\u09dd\u09df-\u09e3\u09e6-\u09f1\u09fc\u09fe\u0a01-\u0a03\u0a05-\u0a0a\u0a0f-\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32-\u0a33\u0a35-\u0a36\u0a38-\u0a39\u0a3c\u0a3e-\u0a42\u0a47-\u0a48\u0a4b-\u0a4d\u0a51\u0a59-\u0a5c\u0a5e\u0a66-\u0a75\u0a81-\u0a83\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2-\u0ab3\u0ab5-\u0ab9\u0abc-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ad0\u0ae0-\u0ae3\u0ae6-\u0aef\u0af9-\u0aff\u0b01-\u0b03\u0b05-\u0b0c\u0b0f-\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32-\u0b33\u0b35-\u0b39\u0b3c-\u0b44\u0b47-\u0b48\u0b4b-\u0b4d\u0b56-\u0b57\u0b5c-\u0b5d\u0b5f-\u0b63\u0b66-\u0b6f\u0b71\u0b82-\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99-\u0b9a\u0b9c\u0b9e-\u0b9f\u0ba3-\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd0\u0bd7\u0be6-\u0bef\u0c00-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55-\u0c56\u0c58-\u0c5a\u0c60-\u0c63\u0c66-\u0c6f\u0c80-\u0c83\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbc-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5-\u0cd6\u0cde\u0ce0-\u0ce3\u0ce6-\u0cef\u0cf1-\u0cf2\u0d00-\u0d03\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d44\u0d46-\u0d48\u0d4a-\u0d4e\u0d54-\u0d57\u0d5f-\u0d63\u0d66-\u0d6f\u0d7a-\u0d7f\u0d82-\u0d83\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2-\u0df3\u0e01-\u0e3a\u0e40-\u0e4e\u0e50-\u0e59\u0e81-\u0e82\u0e84\u0e87-\u0e88\u0e8a\u0e8d\u0e94-\u0e97\u0e99-\u0e9f\u0ea1-\u0ea3\u0ea5\u0ea7\u0eaa-\u0eab\u0ead-\u0eb9\u0ebb-\u0ebd\u0ec0-\u0ec4\u0ec6\u0ec8-\u0ecd\u0ed0-\u0ed9\u0edc-\u0edf\u0f00\u0f18-\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e-\u0f47\u0f49-\u0f6c\u0f71-\u0f84\u0f86-\u0f97\u0f99-\u0fbc\u0fc6\u1000-\u1049\u1050-\u109d\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u135d-\u135f\u1369-\u1371\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u170c\u170e-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176c\u176e-\u1770\u1772-\u1773\u1780-\u17d3\u17d7\u17dc-\u17dd\u17e0-\u17e9\u180b-\u180d\u1810-\u1819\u1820-\u1878\u1880-\u18aa\u18b0-\u18f5\u1900-\u191e\u1920-\u192b\u1930-\u193b\u1946-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u19d0-\u19da\u1a00-\u1a1b\u1a20-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1aa7\u1ab0-\u1abd\u1b00-\u1b4b\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1bf3\u1c00-\u1c37\u1c40-\u1c49\u1c4d-\u1c7d\u1c80-\u1c88\u1c90-\u1cba\u1cbd-\u1cbf\u1cd0-\u1cd2\u1cd4-\u1cf9\u1d00-\u1df9\u1dfb-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u203f-\u2040\u2054\u2071\u207f\u2090-\u209c\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d7f-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u2de0-\u2dff\u3005-\u3007\u3021-\u302f\u3031-\u3035\u3038-\u303c\u3041-\u3096\u3099-\u309a\u309d-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312f\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fef\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua62b\ua640-\ua66f\ua674-\ua67d\ua67f-\ua6f1\ua717-\ua71f\ua722-\ua788\ua78b-\ua7b9\ua7f7-\ua827\ua840-\ua873\ua880-\ua8c5\ua8d0-\ua8d9\ua8e0-\ua8f7\ua8fb\ua8fd-\ua92d\ua930-\ua953\ua960-\ua97c\ua980-\ua9c0\ua9cf-\ua9d9\ua9e0-\ua9fe\uaa00-\uaa36\uaa40-\uaa4d\uaa50-\uaa59\uaa60-\uaa76\uaa7a-\uaac2\uaadb-\uaadd\uaae0-\uaaef\uaaf2-\uaaf6\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab65\uab70-\uabea\uabec-\uabed\uabf0-\uabf9\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40-\ufb41\ufb43-\ufb44\ufb46-\ufbb1\ufbd3-\ufc5d\ufc64-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdf9\ufe00-\ufe0f\ufe20-\ufe2f\ufe33-\ufe34\ufe4d-\ufe4f\ufe71\ufe73\ufe77\ufe79\ufe7b\ufe7d\ufe7f-\ufefc\uff10-\uff19\uff21-\uff3a\uff3f\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc'
+xid_continue = '0-9A-Z_a-z\xaa\xb5\xb7\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0300-\u0374\u0376-\u0377\u037b-\u037d\u037f\u0386-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u0483-\u0487\u048a-\u052f\u0531-\u0556\u0559\u0560-\u0588\u0591-\u05bd\u05bf\u05c1-\u05c2\u05c4-\u05c5\u05c7\u05d0-\u05ea\u05ef-\u05f2\u0610-\u061a\u0620-\u0669\u066e-\u06d3\u06d5-\u06dc\u06df-\u06e8\u06ea-\u06fc\u06ff\u0710-\u074a\u074d-\u07b1\u07c0-\u07f5\u07fa\u07fd\u0800-\u082d\u0840-\u085b\u0860-\u086a\u08a0-\u08b4\u08b6-\u08bd\u08d3-\u08e1\u08e3-\u0963\u0966-\u096f\u0971-\u0983\u0985-\u098c\u098f-\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bc-\u09c4\u09c7-\u09c8\u09cb-\u09ce\u09d7\u09dc-\u09dd\u09df-\u09e3\u09e6-\u09f1\u09fc\u09fe\u0a01-\u0a03\u0a05-\u0a0a\u0a0f-\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32-\u0a33\u0a35-\u0a36\u0a38-\u0a39\u0a3c\u0a3e-\u0a42\u0a47-\u0a48\u0a4b-\u0a4d\u0a51\u0a59-\u0a5c\u0a5e\u0a66-\u0a75\u0a81-\u0a83\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2-\u0ab3\u0ab5-\u0ab9\u0abc-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ad0\u0ae0-\u0ae3\u0ae6-\u0aef\u0af9-\u0aff\u0b01-\u0b03\u0b05-\u0b0c\u0b0f-\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32-\u0b33\u0b35-\u0b39\u0b3c-\u0b44\u0b47-\u0b48\u0b4b-\u0b4d\u0b56-\u0b57\u0b5c-\u0b5d\u0b5f-\u0b63\u0b66-\u0b6f\u0b71\u0b82-\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99-\u0b9a\u0b9c\u0b9e-\u0b9f\u0ba3-\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd0\u0bd7\u0be6-\u0bef\u0c00-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55-\u0c56\u0c58-\u0c5a\u0c60-\u0c63\u0c66-\u0c6f\u0c80-\u0c83\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbc-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5-\u0cd6\u0cde\u0ce0-\u0ce3\u0ce6-\u0cef\u0cf1-\u0cf2\u0d00-\u0d03\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d44\u0d46-\u0d48\u0d4a-\u0d4e\u0d54-\u0d57\u0d5f-\u0d63\u0d66-\u0d6f\u0d7a-\u0d7f\u0d82-\u0d83\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2-\u0df3\u0e01-\u0e3a\u0e40-\u0e4e\u0e50-\u0e59\u0e81-\u0e82\u0e84\u0e87-\u0e88\u0e8a\u0e8d\u0e94-\u0e97\u0e99-\u0e9f\u0ea1-\u0ea3\u0ea5\u0ea7\u0eaa-\u0eab\u0ead-\u0eb9\u0ebb-\u0ebd\u0ec0-\u0ec4\u0ec6\u0ec8-\u0ecd\u0ed0-\u0ed9\u0edc-\u0edf\u0f00\u0f18-\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e-\u0f47\u0f49-\u0f6c\u0f71-\u0f84\u0f86-\u0f97\u0f99-\u0fbc\u0fc6\u1000-\u1049\u1050-\u109d\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u135d-\u135f\u1369-\u1371\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u170c\u170e-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176c\u176e-\u1770\u1772-\u1773\u1780-\u17d3\u17d7\u17dc-\u17dd\u17e0-\u17e9\u180b-\u180d\u1810-\u1819\u1820-\u1878\u1880-\u18aa\u18b0-\u18f5\u1900-\u191e\u1920-\u192b\u1930-\u193b\u1946-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u19d0-\u19da\u1a00-\u1a1b\u1a20-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1aa7\u1ab0-\u1abd\u1b00-\u1b4b\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1bf3\u1c00-\u1c37\u1c40-\u1c49\u1c4d-\u1c7d\u1c80-\u1c88\u1c90-\u1cba\u1cbd-\u1cbf\u1cd0-\u1cd2\u1cd4-\u1cf9\u1d00-\u1df9\u1dfb-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u203f-\u2040\u2054\u2071\u207f\u2090-\u209c\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d7f-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u2de0-\u2dff\u3005-\u3007\u3021-\u302f\u3031-\u3035\u3038-\u303c\u3041-\u3096\u3099-\u309a\u309d-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312f\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fef\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua62b\ua640-\ua66f\ua674-\ua67d\ua67f-\ua6f1\ua717-\ua71f\ua722-\ua788\ua78b-\ua7b9\ua7f7-\ua827\ua840-\ua873\ua880-\ua8c5\ua8d0-\ua8d9\ua8e0-\ua8f7\ua8fb\ua8fd-\ua92d\ua930-\ua953\ua960-\ua97c\ua980-\ua9c0\ua9cf-\ua9d9\ua9e0-\ua9fe\uaa00-\uaa36\uaa40-\uaa4d\uaa50-\uaa59\uaa60-\uaa76\uaa7a-\uaac2\uaadb-\uaadd\uaae0-\uaaef\uaaf2-\uaaf6\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab65\uab70-\uabea\uabec-\uabed\uabf0-\uabf9\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40-\ufb41\ufb43-\ufb44\ufb46-\ufbb1\ufbd3-\ufc5d\ufc64-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdf9\ufe00-\ufe0f\ufe20-\ufe2f\ufe33-\ufe34\ufe4d-\ufe4f\ufe71\ufe73\ufe77\ufe79\ufe7b\ufe7d\ufe7f-\ufefc\uff10-\uff19\uff21-\uff3a\uff3f\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc\U00010000-\U0001000b\U0001000d-\U00010026\U00010028-\U0001003a\U0001003c-\U0001003d\U0001003f-\U0001004d\U00010050-\U0001005d\U00010080-\U000100fa\U00010140-\U00010174\U000101fd\U00010280-\U0001029c\U000102a0-\U000102d0\U000102e0\U00010300-\U0001031f\U0001032d-\U0001034a\U00010350-\U0001037a\U00010380-\U0001039d\U000103a0-\U000103c3\U000103c8-\U000103cf\U000103d1-\U000103d5\U00010400-\U0001049d\U000104a0-\U000104a9\U000104b0-\U000104d3\U000104d8-\U000104fb\U00010500-\U00010527\U00010530-\U00010563\U00010600-\U00010736\U00010740-\U00010755\U00010760-\U00010767\U00010800-\U00010805\U00010808\U0001080a-\U00010835\U00010837-\U00010838\U0001083c\U0001083f-\U00010855\U00010860-\U00010876\U00010880-\U0001089e\U000108e0-\U000108f2\U000108f4-\U000108f5\U00010900-\U00010915\U00010920-\U00010939\U00010980-\U000109b7\U000109be-\U000109bf\U00010a00-\U00010a03\U00010a05-\U00010a06\U00010a0c-\U00010a13\U00010a15-\U00010a17\U00010a19-\U00010a35\U00010a38-\U00010a3a\U00010a3f\U00010a60-\U00010a7c\U00010a80-\U00010a9c\U00010ac0-\U00010ac7\U00010ac9-\U00010ae6\U00010b00-\U00010b35\U00010b40-\U00010b55\U00010b60-\U00010b72\U00010b80-\U00010b91\U00010c00-\U00010c48\U00010c80-\U00010cb2\U00010cc0-\U00010cf2\U00010d00-\U00010d27\U00010d30-\U00010d39\U00010f00-\U00010f1c\U00010f27\U00010f30-\U00010f50\U00011000-\U00011046\U00011066-\U0001106f\U0001107f-\U000110ba\U000110d0-\U000110e8\U000110f0-\U000110f9\U00011100-\U00011134\U00011136-\U0001113f\U00011144-\U00011146\U00011150-\U00011173\U00011176\U00011180-\U000111c4\U000111c9-\U000111cc\U000111d0-\U000111da\U000111dc\U00011200-\U00011211\U00011213-\U00011237\U0001123e\U00011280-\U00011286\U00011288\U0001128a-\U0001128d\U0001128f-\U0001129d\U0001129f-\U000112a8\U000112b0-\U000112ea\U000112f0-\U000112f9\U00011300-\U00011303\U00011305-\U0001130c\U0001130f-\U00011310\U00011313-\U00011328\U0001132a-\U00011330\U00011332-\U00011333\U00011335-\U00011339\U0001133b-\U00011344\U00011347-\U00011348\U0001134b-\U0001134d\U00011350\U00011357\U0001135d-\U00011363\U00011366-\U0001136c\U00011370-\U00011374\U00011400-\U0001144a\U00011450-\U00011459\U0001145e\U00011480-\U000114c5\U000114c7\U000114d0-\U000114d9\U00011580-\U000115b5\U000115b8-\U000115c0\U000115d8-\U000115dd\U00011600-\U00011640\U00011644\U00011650-\U00011659\U00011680-\U000116b7\U000116c0-\U000116c9\U00011700-\U0001171a\U0001171d-\U0001172b\U00011730-\U00011739\U00011800-\U0001183a\U000118a0-\U000118e9\U000118ff\U00011a00-\U00011a3e\U00011a47\U00011a50-\U00011a83\U00011a86-\U00011a99\U00011a9d\U00011ac0-\U00011af8\U00011c00-\U00011c08\U00011c0a-\U00011c36\U00011c38-\U00011c40\U00011c50-\U00011c59\U00011c72-\U00011c8f\U00011c92-\U00011ca7\U00011ca9-\U00011cb6\U00011d00-\U00011d06\U00011d08-\U00011d09\U00011d0b-\U00011d36\U00011d3a\U00011d3c-\U00011d3d\U00011d3f-\U00011d47\U00011d50-\U00011d59\U00011d60-\U00011d65\U00011d67-\U00011d68\U00011d6a-\U00011d8e\U00011d90-\U00011d91\U00011d93-\U00011d98\U00011da0-\U00011da9\U00011ee0-\U00011ef6\U00012000-\U00012399\U00012400-\U0001246e\U00012480-\U00012543\U00013000-\U0001342e\U00014400-\U00014646\U00016800-\U00016a38\U00016a40-\U00016a5e\U00016a60-\U00016a69\U00016ad0-\U00016aed\U00016af0-\U00016af4\U00016b00-\U00016b36\U00016b40-\U00016b43\U00016b50-\U00016b59\U00016b63-\U00016b77\U00016b7d-\U00016b8f\U00016e40-\U00016e7f\U00016f00-\U00016f44\U00016f50-\U00016f7e\U00016f8f-\U00016f9f\U00016fe0-\U00016fe1\U00017000-\U000187f1\U00018800-\U00018af2\U0001b000-\U0001b11e\U0001b170-\U0001b2fb\U0001bc00-\U0001bc6a\U0001bc70-\U0001bc7c\U0001bc80-\U0001bc88\U0001bc90-\U0001bc99\U0001bc9d-\U0001bc9e\U0001d165-\U0001d169\U0001d16d-\U0001d172\U0001d17b-\U0001d182\U0001d185-\U0001d18b\U0001d1aa-\U0001d1ad\U0001d242-\U0001d244\U0001d400-\U0001d454\U0001d456-\U0001d49c\U0001d49e-\U0001d49f\U0001d4a2\U0001d4a5-\U0001d4a6\U0001d4a9-\U0001d4ac\U0001d4ae-\U0001d4b9\U0001d4bb\U0001d4bd-\U0001d4c3\U0001d4c5-\U0001d505\U0001d507-\U0001d50a\U0001d50d-\U0001d514\U0001d516-\U0001d51c\U0001d51e-\U0001d539\U0001d53b-\U0001d53e\U0001d540-\U0001d544\U0001d546\U0001d54a-\U0001d550\U0001d552-\U0001d6a5\U0001d6a8-\U0001d6c0\U0001d6c2-\U0001d6da\U0001d6dc-\U0001d6fa\U0001d6fc-\U0001d714\U0001d716-\U0001d734\U0001d736-\U0001d74e\U0001d750-\U0001d76e\U0001d770-\U0001d788\U0001d78a-\U0001d7a8\U0001d7aa-\U0001d7c2\U0001d7c4-\U0001d7cb\U0001d7ce-\U0001d7ff\U0001da00-\U0001da36\U0001da3b-\U0001da6c\U0001da75\U0001da84\U0001da9b-\U0001da9f\U0001daa1-\U0001daaf\U0001e000-\U0001e006\U0001e008-\U0001e018\U0001e01b-\U0001e021\U0001e023-\U0001e024\U0001e026-\U0001e02a\U0001e800-\U0001e8c4\U0001e8d0-\U0001e8d6\U0001e900-\U0001e94a\U0001e950-\U0001e959\U0001ee00-\U0001ee03\U0001ee05-\U0001ee1f\U0001ee21-\U0001ee22\U0001ee24\U0001ee27\U0001ee29-\U0001ee32\U0001ee34-\U0001ee37\U0001ee39\U0001ee3b\U0001ee42\U0001ee47\U0001ee49\U0001ee4b\U0001ee4d-\U0001ee4f\U0001ee51-\U0001ee52\U0001ee54\U0001ee57\U0001ee59\U0001ee5b\U0001ee5d\U0001ee5f\U0001ee61-\U0001ee62\U0001ee64\U0001ee67-\U0001ee6a\U0001ee6c-\U0001ee72\U0001ee74-\U0001ee77\U0001ee79-\U0001ee7c\U0001ee7e\U0001ee80-\U0001ee89\U0001ee8b-\U0001ee9b\U0001eea1-\U0001eea3\U0001eea5-\U0001eea9\U0001eeab-\U0001eebb\U00020000-\U0002a6d6\U0002a700-\U0002b734\U0002b740-\U0002b81d\U0002b820-\U0002cea1\U0002ceb0-\U0002ebe0\U0002f800-\U0002fa1d\U000e0100-\U000e01ef'
-xid_start = u'A-Z_a-z\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376-\u0377\u037b-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u052f\u0531-\u0556\u0559\u0560-\u0588\u05d0-\u05ea\u05ef-\u05f2\u0620-\u064a\u066e-\u066f\u0671-\u06d3\u06d5\u06e5-\u06e6\u06ee-\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4-\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0860-\u086a\u08a0-\u08b4\u08b6-\u08bd\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098c\u098f-\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc-\u09dd\u09df-\u09e1\u09f0-\u09f1\u09fc\u0a05-\u0a0a\u0a0f-\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32-\u0a33\u0a35-\u0a36\u0a38-\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2-\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0-\u0ae1\u0af9\u0b05-\u0b0c\u0b0f-\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32-\u0b33\u0b35-\u0b39\u0b3d\u0b5c-\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99-\u0b9a\u0b9c\u0b9e-\u0b9f\u0ba3-\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d\u0c58-\u0c5a\u0c60-\u0c61\u0c80\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cde\u0ce0-\u0ce1\u0cf1-\u0cf2\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d54-\u0d56\u0d5f-\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e40-\u0e46\u0e81-\u0e82\u0e84\u0e87-\u0e88\u0e8a\u0e8d\u0e94-\u0e97\u0e99-\u0e9f\u0ea1-\u0ea3\u0ea5\u0ea7\u0eaa-\u0eab\u0ead-\u0eb0\u0eb2\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065-\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u170c\u170e-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1878\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191e\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4b\u1b83-\u1ba0\u1bae-\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1c80-\u1c88\u1c90-\u1cba\u1cbd-\u1cbf\u1ce9-\u1cec\u1cee-\u1cf1\u1cf5-\u1cf6\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cee\u2cf2-\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309d-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312f\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fef\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a-\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7b9\ua7f7-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua8fd-\ua8fe\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\ua9e0-\ua9e4\ua9e6-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa7e-\uaaaf\uaab1\uaab5-\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab65\uab70-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40-\ufb41\ufb43-\ufb44\ufb46-\ufbb1\ufbd3-\ufc5d\ufc64-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdf9\ufe71\ufe73\ufe77\ufe79\ufe7b\ufe7d\ufe7f-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uff9d\uffa0-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc'
-
-if sys.maxunicode > 0xFFFF:
- # non-BMP characters, use only on wide Unicode builds
- Cf += u'\U000110bd\U000110cd\U0001bca0-\U0001bca3\U0001d173-\U0001d17a\U000e0001\U000e0020-\U000e007f'
-
- Cn += u'\U0001000c\U00010027\U0001003b\U0001003e\U0001004e-\U0001004f\U0001005e-\U0001007f\U000100fb-\U000100ff\U00010103-\U00010106\U00010134-\U00010136\U0001018f\U0001019c-\U0001019f\U000101a1-\U000101cf\U000101fe-\U0001027f\U0001029d-\U0001029f\U000102d1-\U000102df\U000102fc-\U000102ff\U00010324-\U0001032c\U0001034b-\U0001034f\U0001037b-\U0001037f\U0001039e\U000103c4-\U000103c7\U000103d6-\U000103ff\U0001049e-\U0001049f\U000104aa-\U000104af\U000104d4-\U000104d7\U000104fc-\U000104ff\U00010528-\U0001052f\U00010564-\U0001056e\U00010570-\U000105ff\U00010737-\U0001073f\U00010756-\U0001075f\U00010768-\U000107ff\U00010806-\U00010807\U00010809\U00010836\U00010839-\U0001083b\U0001083d-\U0001083e\U00010856\U0001089f-\U000108a6\U000108b0-\U000108df\U000108f3\U000108f6-\U000108fa\U0001091c-\U0001091e\U0001093a-\U0001093e\U00010940-\U0001097f\U000109b8-\U000109bb\U000109d0-\U000109d1\U00010a04\U00010a07-\U00010a0b\U00010a14\U00010a18\U00010a36-\U00010a37\U00010a3b-\U00010a3e\U00010a49-\U00010a4f\U00010a59-\U00010a5f\U00010aa0-\U00010abf\U00010ae7-\U00010aea\U00010af7-\U00010aff\U00010b36-\U00010b38\U00010b56-\U00010b57\U00010b73-\U00010b77\U00010b92-\U00010b98\U00010b9d-\U00010ba8\U00010bb0-\U00010bff\U00010c49-\U00010c7f\U00010cb3-\U00010cbf\U00010cf3-\U00010cf9\U00010d28-\U00010d2f\U00010d3a-\U00010e5f\U00010e7f-\U00010eff\U00010f28-\U00010f2f\U00010f5a-\U00010fff\U0001104e-\U00011051\U00011070-\U0001107e\U000110c2-\U000110cc\U000110ce-\U000110cf\U000110e9-\U000110ef\U000110fa-\U000110ff\U00011135\U00011147-\U0001114f\U00011177-\U0001117f\U000111ce-\U000111cf\U000111e0\U000111f5-\U000111ff\U00011212\U0001123f-\U0001127f\U00011287\U00011289\U0001128e\U0001129e\U000112aa-\U000112af\U000112eb-\U000112ef\U000112fa-\U000112ff\U00011304\U0001130d-\U0001130e\U00011311-\U00011312\U00011329\U00011331\U00011334\U0001133a\U00011345-\U00011346\U00011349-\U0001134a\U0001134e-\U0001134f\U00011351-\U00011356\U00011358-\U0001135c\U00011364-\U00011365\U0001136d-\U0001136f\U00011375-\U000113ff\U0001145a\U0001145c\U0001145f-\U0001147f\U000114c8-\U000114cf\U000114da-\U0001157f\U000115b6-\U000115b7\U000115de-\U000115ff\U00011645-\U0001164f\U0001165a-\U0001165f\U0001166d-\U0001167f\U000116b8-\U000116bf\U000116ca-\U000116ff\U0001171b-\U0001171c\U0001172c-\U0001172f\U00011740-\U000117ff\U0001183c-\U0001189f\U000118f3-\U000118fe\U00011900-\U000119ff\U00011a48-\U00011a4f\U00011a84-\U00011a85\U00011aa3-\U00011abf\U00011af9-\U00011bff\U00011c09\U00011c37\U00011c46-\U00011c4f\U00011c6d-\U00011c6f\U00011c90-\U00011c91\U00011ca8\U00011cb7-\U00011cff\U00011d07\U00011d0a\U00011d37-\U00011d39\U00011d3b\U00011d3e\U00011d48-\U00011d4f\U00011d5a-\U00011d5f\U00011d66\U00011d69\U00011d8f\U00011d92\U00011d99-\U00011d9f\U00011daa-\U00011edf\U00011ef9-\U00011fff\U0001239a-\U000123ff\U0001246f\U00012475-\U0001247f\U00012544-\U00012fff\U0001342f-\U000143ff\U00014647-\U000167ff\U00016a39-\U00016a3f\U00016a5f\U00016a6a-\U00016a6d\U00016a70-\U00016acf\U00016aee-\U00016aef\U00016af6-\U00016aff\U00016b46-\U00016b4f\U00016b5a\U00016b62\U00016b78-\U00016b7c\U00016b90-\U00016e3f\U00016e9b-\U00016eff\U00016f45-\U00016f4f\U00016f7f-\U00016f8e\U00016fa0-\U00016fdf\U00016fe2-\U00016fff\U000187f2-\U000187ff\U00018af3-\U0001afff\U0001b11f-\U0001b16f\U0001b2fc-\U0001bbff\U0001bc6b-\U0001bc6f\U0001bc7d-\U0001bc7f\U0001bc89-\U0001bc8f\U0001bc9a-\U0001bc9b\U0001bca4-\U0001cfff\U0001d0f6-\U0001d0ff\U0001d127-\U0001d128\U0001d1e9-\U0001d1ff\U0001d246-\U0001d2df\U0001d2f4-\U0001d2ff\U0001d357-\U0001d35f\U0001d379-\U0001d3ff\U0001d455\U0001d49d\U0001d4a0-\U0001d4a1\U0001d4a3-\U0001d4a4\U0001d4a7-\U0001d4a8\U0001d4ad\U0001d4ba\U0001d4bc\U0001d4c4\U0001d506\U0001d50b-\U0001d50c\U0001d515\U0001d51d\U0001d53a\U0001d53f\U0001d545\U0001d547-\U0001d549\U0001d551\U0001d6a6-\U0001d6a7\U0001d7cc-\U0001d7cd\U0001da8c-\U0001da9a\U0001daa0\U0001dab0-\U0001dfff\U0001e007\U0001e019-\U0001e01a\U0001e022\U0001e025\U0001e02b-\U0001e7ff\U0001e8c5-\U0001e8c6\U0001e8d7-\U0001e8ff\U0001e94b-\U0001e94f\U0001e95a-\U0001e95d\U0001e960-\U0001ec70\U0001ecb5-\U0001edff\U0001ee04\U0001ee20\U0001ee23\U0001ee25-\U0001ee26\U0001ee28\U0001ee33\U0001ee38\U0001ee3a\U0001ee3c-\U0001ee41\U0001ee43-\U0001ee46\U0001ee48\U0001ee4a\U0001ee4c\U0001ee50\U0001ee53\U0001ee55-\U0001ee56\U0001ee58\U0001ee5a\U0001ee5c\U0001ee5e\U0001ee60\U0001ee63\U0001ee65-\U0001ee66\U0001ee6b\U0001ee73\U0001ee78\U0001ee7d\U0001ee7f\U0001ee8a\U0001ee9c-\U0001eea0\U0001eea4\U0001eeaa\U0001eebc-\U0001eeef\U0001eef2-\U0001efff\U0001f02c-\U0001f02f\U0001f094-\U0001f09f\U0001f0af-\U0001f0b0\U0001f0c0\U0001f0d0\U0001f0f6-\U0001f0ff\U0001f10d-\U0001f10f\U0001f16c-\U0001f16f\U0001f1ad-\U0001f1e5\U0001f203-\U0001f20f\U0001f23c-\U0001f23f\U0001f249-\U0001f24f\U0001f252-\U0001f25f\U0001f266-\U0001f2ff\U0001f6d5-\U0001f6df\U0001f6ed-\U0001f6ef\U0001f6fa-\U0001f6ff\U0001f774-\U0001f77f\U0001f7d9-\U0001f7ff\U0001f80c-\U0001f80f\U0001f848-\U0001f84f\U0001f85a-\U0001f85f\U0001f888-\U0001f88f\U0001f8ae-\U0001f8ff\U0001f90c-\U0001f90f\U0001f93f\U0001f971-\U0001f972\U0001f977-\U0001f979\U0001f97b\U0001f9a3-\U0001f9af\U0001f9ba-\U0001f9bf\U0001f9c3-\U0001f9cf\U0001fa00-\U0001fa5f\U0001fa6e-\U0001ffff\U0002a6d7-\U0002a6ff\U0002b735-\U0002b73f\U0002b81e-\U0002b81f\U0002cea2-\U0002ceaf\U0002ebe1-\U0002f7ff\U0002fa1e-\U000e0000\U000e0002-\U000e001f\U000e0080-\U000e00ff\U000e01f0-\U000effff\U000ffffe-\U000fffff\U0010fffe-\U0010ffff'
-
- Co += u'\U000f0000-\U000ffffd\U00100000-\U0010fffd'
-
- Ll += u'\U00010428-\U0001044f\U000104d8-\U000104fb\U00010cc0-\U00010cf2\U000118c0-\U000118df\U00016e60-\U00016e7f\U0001d41a-\U0001d433\U0001d44e-\U0001d454\U0001d456-\U0001d467\U0001d482-\U0001d49b\U0001d4b6-\U0001d4b9\U0001d4bb\U0001d4bd-\U0001d4c3\U0001d4c5-\U0001d4cf\U0001d4ea-\U0001d503\U0001d51e-\U0001d537\U0001d552-\U0001d56b\U0001d586-\U0001d59f\U0001d5ba-\U0001d5d3\U0001d5ee-\U0001d607\U0001d622-\U0001d63b\U0001d656-\U0001d66f\U0001d68a-\U0001d6a5\U0001d6c2-\U0001d6da\U0001d6dc-\U0001d6e1\U0001d6fc-\U0001d714\U0001d716-\U0001d71b\U0001d736-\U0001d74e\U0001d750-\U0001d755\U0001d770-\U0001d788\U0001d78a-\U0001d78f\U0001d7aa-\U0001d7c2\U0001d7c4-\U0001d7c9\U0001d7cb\U0001e922-\U0001e943'
-
- Lm += u'\U00016b40-\U00016b43\U00016f93-\U00016f9f\U00016fe0-\U00016fe1'
-
- Lo += u'\U00010000-\U0001000b\U0001000d-\U00010026\U00010028-\U0001003a\U0001003c-\U0001003d\U0001003f-\U0001004d\U00010050-\U0001005d\U00010080-\U000100fa\U00010280-\U0001029c\U000102a0-\U000102d0\U00010300-\U0001031f\U0001032d-\U00010340\U00010342-\U00010349\U00010350-\U00010375\U00010380-\U0001039d\U000103a0-\U000103c3\U000103c8-\U000103cf\U00010450-\U0001049d\U00010500-\U00010527\U00010530-\U00010563\U00010600-\U00010736\U00010740-\U00010755\U00010760-\U00010767\U00010800-\U00010805\U00010808\U0001080a-\U00010835\U00010837-\U00010838\U0001083c\U0001083f-\U00010855\U00010860-\U00010876\U00010880-\U0001089e\U000108e0-\U000108f2\U000108f4-\U000108f5\U00010900-\U00010915\U00010920-\U00010939\U00010980-\U000109b7\U000109be-\U000109bf\U00010a00\U00010a10-\U00010a13\U00010a15-\U00010a17\U00010a19-\U00010a35\U00010a60-\U00010a7c\U00010a80-\U00010a9c\U00010ac0-\U00010ac7\U00010ac9-\U00010ae4\U00010b00-\U00010b35\U00010b40-\U00010b55\U00010b60-\U00010b72\U00010b80-\U00010b91\U00010c00-\U00010c48\U00010d00-\U00010d23\U00010f00-\U00010f1c\U00010f27\U00010f30-\U00010f45\U00011003-\U00011037\U00011083-\U000110af\U000110d0-\U000110e8\U00011103-\U00011126\U00011144\U00011150-\U00011172\U00011176\U00011183-\U000111b2\U000111c1-\U000111c4\U000111da\U000111dc\U00011200-\U00011211\U00011213-\U0001122b\U00011280-\U00011286\U00011288\U0001128a-\U0001128d\U0001128f-\U0001129d\U0001129f-\U000112a8\U000112b0-\U000112de\U00011305-\U0001130c\U0001130f-\U00011310\U00011313-\U00011328\U0001132a-\U00011330\U00011332-\U00011333\U00011335-\U00011339\U0001133d\U00011350\U0001135d-\U00011361\U00011400-\U00011434\U00011447-\U0001144a\U00011480-\U000114af\U000114c4-\U000114c5\U000114c7\U00011580-\U000115ae\U000115d8-\U000115db\U00011600-\U0001162f\U00011644\U00011680-\U000116aa\U00011700-\U0001171a\U00011800-\U0001182b\U000118ff\U00011a00\U00011a0b-\U00011a32\U00011a3a\U00011a50\U00011a5c-\U00011a83\U00011a86-\U00011a89\U00011a9d\U00011ac0-\U00011af8\U00011c00-\U00011c08\U00011c0a-\U00011c2e\U00011c40\U00011c72-\U00011c8f\U00011d00-\U00011d06\U00011d08-\U00011d09\U00011d0b-\U00011d30\U00011d46\U00011d60-\U00011d65\U00011d67-\U00011d68\U00011d6a-\U00011d89\U00011d98\U00011ee0-\U00011ef2\U00012000-\U00012399\U00012480-\U00012543\U00013000-\U0001342e\U00014400-\U00014646\U00016800-\U00016a38\U00016a40-\U00016a5e\U00016ad0-\U00016aed\U00016b00-\U00016b2f\U00016b63-\U00016b77\U00016b7d-\U00016b8f\U00016f00-\U00016f44\U00016f50\U00017000-\U000187f1\U00018800-\U00018af2\U0001b000-\U0001b11e\U0001b170-\U0001b2fb\U0001bc00-\U0001bc6a\U0001bc70-\U0001bc7c\U0001bc80-\U0001bc88\U0001bc90-\U0001bc99\U0001e800-\U0001e8c4\U0001ee00-\U0001ee03\U0001ee05-\U0001ee1f\U0001ee21-\U0001ee22\U0001ee24\U0001ee27\U0001ee29-\U0001ee32\U0001ee34-\U0001ee37\U0001ee39\U0001ee3b\U0001ee42\U0001ee47\U0001ee49\U0001ee4b\U0001ee4d-\U0001ee4f\U0001ee51-\U0001ee52\U0001ee54\U0001ee57\U0001ee59\U0001ee5b\U0001ee5d\U0001ee5f\U0001ee61-\U0001ee62\U0001ee64\U0001ee67-\U0001ee6a\U0001ee6c-\U0001ee72\U0001ee74-\U0001ee77\U0001ee79-\U0001ee7c\U0001ee7e\U0001ee80-\U0001ee89\U0001ee8b-\U0001ee9b\U0001eea1-\U0001eea3\U0001eea5-\U0001eea9\U0001eeab-\U0001eebb\U00020000-\U0002a6d6\U0002a700-\U0002b734\U0002b740-\U0002b81d\U0002b820-\U0002cea1\U0002ceb0-\U0002ebe0\U0002f800-\U0002fa1d'
-
- Lu += u'\U00010400-\U00010427\U000104b0-\U000104d3\U00010c80-\U00010cb2\U000118a0-\U000118bf\U00016e40-\U00016e5f\U0001d400-\U0001d419\U0001d434-\U0001d44d\U0001d468-\U0001d481\U0001d49c\U0001d49e-\U0001d49f\U0001d4a2\U0001d4a5-\U0001d4a6\U0001d4a9-\U0001d4ac\U0001d4ae-\U0001d4b5\U0001d4d0-\U0001d4e9\U0001d504-\U0001d505\U0001d507-\U0001d50a\U0001d50d-\U0001d514\U0001d516-\U0001d51c\U0001d538-\U0001d539\U0001d53b-\U0001d53e\U0001d540-\U0001d544\U0001d546\U0001d54a-\U0001d550\U0001d56c-\U0001d585\U0001d5a0-\U0001d5b9\U0001d5d4-\U0001d5ed\U0001d608-\U0001d621\U0001d63c-\U0001d655\U0001d670-\U0001d689\U0001d6a8-\U0001d6c0\U0001d6e2-\U0001d6fa\U0001d71c-\U0001d734\U0001d756-\U0001d76e\U0001d790-\U0001d7a8\U0001d7ca\U0001e900-\U0001e921'
-
- Mc += u'\U00011000\U00011002\U00011082\U000110b0-\U000110b2\U000110b7-\U000110b8\U0001112c\U00011145-\U00011146\U00011182\U000111b3-\U000111b5\U000111bf-\U000111c0\U0001122c-\U0001122e\U00011232-\U00011233\U00011235\U000112e0-\U000112e2\U00011302-\U00011303\U0001133e-\U0001133f\U00011341-\U00011344\U00011347-\U00011348\U0001134b-\U0001134d\U00011357\U00011362-\U00011363\U00011435-\U00011437\U00011440-\U00011441\U00011445\U000114b0-\U000114b2\U000114b9\U000114bb-\U000114be\U000114c1\U000115af-\U000115b1\U000115b8-\U000115bb\U000115be\U00011630-\U00011632\U0001163b-\U0001163c\U0001163e\U000116ac\U000116ae-\U000116af\U000116b6\U00011720-\U00011721\U00011726\U0001182c-\U0001182e\U00011838\U00011a39\U00011a57-\U00011a58\U00011a97\U00011c2f\U00011c3e\U00011ca9\U00011cb1\U00011cb4\U00011d8a-\U00011d8e\U00011d93-\U00011d94\U00011d96\U00011ef5-\U00011ef6\U00016f51-\U00016f7e\U0001d165-\U0001d166\U0001d16d-\U0001d172'
-
- Mn += u'\U000101fd\U000102e0\U00010376-\U0001037a\U00010a01-\U00010a03\U00010a05-\U00010a06\U00010a0c-\U00010a0f\U00010a38-\U00010a3a\U00010a3f\U00010ae5-\U00010ae6\U00010d24-\U00010d27\U00010f46-\U00010f50\U00011001\U00011038-\U00011046\U0001107f-\U00011081\U000110b3-\U000110b6\U000110b9-\U000110ba\U00011100-\U00011102\U00011127-\U0001112b\U0001112d-\U00011134\U00011173\U00011180-\U00011181\U000111b6-\U000111be\U000111c9-\U000111cc\U0001122f-\U00011231\U00011234\U00011236-\U00011237\U0001123e\U000112df\U000112e3-\U000112ea\U00011300-\U00011301\U0001133b-\U0001133c\U00011340\U00011366-\U0001136c\U00011370-\U00011374\U00011438-\U0001143f\U00011442-\U00011444\U00011446\U0001145e\U000114b3-\U000114b8\U000114ba\U000114bf-\U000114c0\U000114c2-\U000114c3\U000115b2-\U000115b5\U000115bc-\U000115bd\U000115bf-\U000115c0\U000115dc-\U000115dd\U00011633-\U0001163a\U0001163d\U0001163f-\U00011640\U000116ab\U000116ad\U000116b0-\U000116b5\U000116b7\U0001171d-\U0001171f\U00011722-\U00011725\U00011727-\U0001172b\U0001182f-\U00011837\U00011839-\U0001183a\U00011a01-\U00011a0a\U00011a33-\U00011a38\U00011a3b-\U00011a3e\U00011a47\U00011a51-\U00011a56\U00011a59-\U00011a5b\U00011a8a-\U00011a96\U00011a98-\U00011a99\U00011c30-\U00011c36\U00011c38-\U00011c3d\U00011c3f\U00011c92-\U00011ca7\U00011caa-\U00011cb0\U00011cb2-\U00011cb3\U00011cb5-\U00011cb6\U00011d31-\U00011d36\U00011d3a\U00011d3c-\U00011d3d\U00011d3f-\U00011d45\U00011d47\U00011d90-\U00011d91\U00011d95\U00011d97\U00011ef3-\U00011ef4\U00016af0-\U00016af4\U00016b30-\U00016b36\U00016f8f-\U00016f92\U0001bc9d-\U0001bc9e\U0001d167-\U0001d169\U0001d17b-\U0001d182\U0001d185-\U0001d18b\U0001d1aa-\U0001d1ad\U0001d242-\U0001d244\U0001da00-\U0001da36\U0001da3b-\U0001da6c\U0001da75\U0001da84\U0001da9b-\U0001da9f\U0001daa1-\U0001daaf\U0001e000-\U0001e006\U0001e008-\U0001e018\U0001e01b-\U0001e021\U0001e023-\U0001e024\U0001e026-\U0001e02a\U0001e8d0-\U0001e8d6\U0001e944-\U0001e94a\U000e0100-\U000e01ef'
-
- Nd += u'\U000104a0-\U000104a9\U00010d30-\U00010d39\U00011066-\U0001106f\U000110f0-\U000110f9\U00011136-\U0001113f\U000111d0-\U000111d9\U000112f0-\U000112f9\U00011450-\U00011459\U000114d0-\U000114d9\U00011650-\U00011659\U000116c0-\U000116c9\U00011730-\U00011739\U000118e0-\U000118e9\U00011c50-\U00011c59\U00011d50-\U00011d59\U00011da0-\U00011da9\U00016a60-\U00016a69\U00016b50-\U00016b59\U0001d7ce-\U0001d7ff\U0001e950-\U0001e959'
-
- Nl += u'\U00010140-\U00010174\U00010341\U0001034a\U000103d1-\U000103d5\U00012400-\U0001246e'
-
- No += u'\U00010107-\U00010133\U00010175-\U00010178\U0001018a-\U0001018b\U000102e1-\U000102fb\U00010320-\U00010323\U00010858-\U0001085f\U00010879-\U0001087f\U000108a7-\U000108af\U000108fb-\U000108ff\U00010916-\U0001091b\U000109bc-\U000109bd\U000109c0-\U000109cf\U000109d2-\U000109ff\U00010a40-\U00010a48\U00010a7d-\U00010a7e\U00010a9d-\U00010a9f\U00010aeb-\U00010aef\U00010b58-\U00010b5f\U00010b78-\U00010b7f\U00010ba9-\U00010baf\U00010cfa-\U00010cff\U00010e60-\U00010e7e\U00010f1d-\U00010f26\U00010f51-\U00010f54\U00011052-\U00011065\U000111e1-\U000111f4\U0001173a-\U0001173b\U000118ea-\U000118f2\U00011c5a-\U00011c6c\U00016b5b-\U00016b61\U00016e80-\U00016e96\U0001d2e0-\U0001d2f3\U0001d360-\U0001d378\U0001e8c7-\U0001e8cf\U0001ec71-\U0001ecab\U0001ecad-\U0001ecaf\U0001ecb1-\U0001ecb4\U0001f100-\U0001f10c'
-
- Po += u'\U00010100-\U00010102\U0001039f\U000103d0\U0001056f\U00010857\U0001091f\U0001093f\U00010a50-\U00010a58\U00010a7f\U00010af0-\U00010af6\U00010b39-\U00010b3f\U00010b99-\U00010b9c\U00010f55-\U00010f59\U00011047-\U0001104d\U000110bb-\U000110bc\U000110be-\U000110c1\U00011140-\U00011143\U00011174-\U00011175\U000111c5-\U000111c8\U000111cd\U000111db\U000111dd-\U000111df\U00011238-\U0001123d\U000112a9\U0001144b-\U0001144f\U0001145b\U0001145d\U000114c6\U000115c1-\U000115d7\U00011641-\U00011643\U00011660-\U0001166c\U0001173c-\U0001173e\U0001183b\U00011a3f-\U00011a46\U00011a9a-\U00011a9c\U00011a9e-\U00011aa2\U00011c41-\U00011c45\U00011c70-\U00011c71\U00011ef7-\U00011ef8\U00012470-\U00012474\U00016a6e-\U00016a6f\U00016af5\U00016b37-\U00016b3b\U00016b44\U00016e97-\U00016e9a\U0001bc9f\U0001da87-\U0001da8b\U0001e95e-\U0001e95f'
-
- Sc += u'\U0001ecb0'
-
- Sk += u'\U0001f3fb-\U0001f3ff'
-
- Sm += u'\U0001d6c1\U0001d6db\U0001d6fb\U0001d715\U0001d735\U0001d74f\U0001d76f\U0001d789\U0001d7a9\U0001d7c3\U0001eef0-\U0001eef1'
-
- So += u'\U00010137-\U0001013f\U00010179-\U00010189\U0001018c-\U0001018e\U00010190-\U0001019b\U000101a0\U000101d0-\U000101fc\U00010877-\U00010878\U00010ac8\U0001173f\U00016b3c-\U00016b3f\U00016b45\U0001bc9c\U0001d000-\U0001d0f5\U0001d100-\U0001d126\U0001d129-\U0001d164\U0001d16a-\U0001d16c\U0001d183-\U0001d184\U0001d18c-\U0001d1a9\U0001d1ae-\U0001d1e8\U0001d200-\U0001d241\U0001d245\U0001d300-\U0001d356\U0001d800-\U0001d9ff\U0001da37-\U0001da3a\U0001da6d-\U0001da74\U0001da76-\U0001da83\U0001da85-\U0001da86\U0001ecac\U0001f000-\U0001f02b\U0001f030-\U0001f093\U0001f0a0-\U0001f0ae\U0001f0b1-\U0001f0bf\U0001f0c1-\U0001f0cf\U0001f0d1-\U0001f0f5\U0001f110-\U0001f16b\U0001f170-\U0001f1ac\U0001f1e6-\U0001f202\U0001f210-\U0001f23b\U0001f240-\U0001f248\U0001f250-\U0001f251\U0001f260-\U0001f265\U0001f300-\U0001f3fa\U0001f400-\U0001f6d4\U0001f6e0-\U0001f6ec\U0001f6f0-\U0001f6f9\U0001f700-\U0001f773\U0001f780-\U0001f7d8\U0001f800-\U0001f80b\U0001f810-\U0001f847\U0001f850-\U0001f859\U0001f860-\U0001f887\U0001f890-\U0001f8ad\U0001f900-\U0001f90b\U0001f910-\U0001f93e\U0001f940-\U0001f970\U0001f973-\U0001f976\U0001f97a\U0001f97c-\U0001f9a2\U0001f9b0-\U0001f9b9\U0001f9c0-\U0001f9c2\U0001f9d0-\U0001f9ff\U0001fa60-\U0001fa6d'
-
- xid_continue += u'\U00010000-\U0001000b\U0001000d-\U00010026\U00010028-\U0001003a\U0001003c-\U0001003d\U0001003f-\U0001004d\U00010050-\U0001005d\U00010080-\U000100fa\U00010140-\U00010174\U000101fd\U00010280-\U0001029c\U000102a0-\U000102d0\U000102e0\U00010300-\U0001031f\U0001032d-\U0001034a\U00010350-\U0001037a\U00010380-\U0001039d\U000103a0-\U000103c3\U000103c8-\U000103cf\U000103d1-\U000103d5\U00010400-\U0001049d\U000104a0-\U000104a9\U000104b0-\U000104d3\U000104d8-\U000104fb\U00010500-\U00010527\U00010530-\U00010563\U00010600-\U00010736\U00010740-\U00010755\U00010760-\U00010767\U00010800-\U00010805\U00010808\U0001080a-\U00010835\U00010837-\U00010838\U0001083c\U0001083f-\U00010855\U00010860-\U00010876\U00010880-\U0001089e\U000108e0-\U000108f2\U000108f4-\U000108f5\U00010900-\U00010915\U00010920-\U00010939\U00010980-\U000109b7\U000109be-\U000109bf\U00010a00-\U00010a03\U00010a05-\U00010a06\U00010a0c-\U00010a13\U00010a15-\U00010a17\U00010a19-\U00010a35\U00010a38-\U00010a3a\U00010a3f\U00010a60-\U00010a7c\U00010a80-\U00010a9c\U00010ac0-\U00010ac7\U00010ac9-\U00010ae6\U00010b00-\U00010b35\U00010b40-\U00010b55\U00010b60-\U00010b72\U00010b80-\U00010b91\U00010c00-\U00010c48\U00010c80-\U00010cb2\U00010cc0-\U00010cf2\U00010d00-\U00010d27\U00010d30-\U00010d39\U00010f00-\U00010f1c\U00010f27\U00010f30-\U00010f50\U00011000-\U00011046\U00011066-\U0001106f\U0001107f-\U000110ba\U000110d0-\U000110e8\U000110f0-\U000110f9\U00011100-\U00011134\U00011136-\U0001113f\U00011144-\U00011146\U00011150-\U00011173\U00011176\U00011180-\U000111c4\U000111c9-\U000111cc\U000111d0-\U000111da\U000111dc\U00011200-\U00011211\U00011213-\U00011237\U0001123e\U00011280-\U00011286\U00011288\U0001128a-\U0001128d\U0001128f-\U0001129d\U0001129f-\U000112a8\U000112b0-\U000112ea\U000112f0-\U000112f9\U00011300-\U00011303\U00011305-\U0001130c\U0001130f-\U00011310\U00011313-\U00011328\U0001132a-\U00011330\U00011332-\U00011333\U00011335-\U00011339\U0001133b-\U00011344\U00011347-\U00011348\U0001134b-\U0001134d\U00011350\U00011357\U0001135d-\U00011363\U00011366-\U0001136c\U00011370-\U00011374\U00011400-\U0001144a\U00011450-\U00011459\U0001145e\U00011480-\U000114c5\U000114c7\U000114d0-\U000114d9\U00011580-\U000115b5\U000115b8-\U000115c0\U000115d8-\U000115dd\U00011600-\U00011640\U00011644\U00011650-\U00011659\U00011680-\U000116b7\U000116c0-\U000116c9\U00011700-\U0001171a\U0001171d-\U0001172b\U00011730-\U00011739\U00011800-\U0001183a\U000118a0-\U000118e9\U000118ff\U00011a00-\U00011a3e\U00011a47\U00011a50-\U00011a83\U00011a86-\U00011a99\U00011a9d\U00011ac0-\U00011af8\U00011c00-\U00011c08\U00011c0a-\U00011c36\U00011c38-\U00011c40\U00011c50-\U00011c59\U00011c72-\U00011c8f\U00011c92-\U00011ca7\U00011ca9-\U00011cb6\U00011d00-\U00011d06\U00011d08-\U00011d09\U00011d0b-\U00011d36\U00011d3a\U00011d3c-\U00011d3d\U00011d3f-\U00011d47\U00011d50-\U00011d59\U00011d60-\U00011d65\U00011d67-\U00011d68\U00011d6a-\U00011d8e\U00011d90-\U00011d91\U00011d93-\U00011d98\U00011da0-\U00011da9\U00011ee0-\U00011ef6\U00012000-\U00012399\U00012400-\U0001246e\U00012480-\U00012543\U00013000-\U0001342e\U00014400-\U00014646\U00016800-\U00016a38\U00016a40-\U00016a5e\U00016a60-\U00016a69\U00016ad0-\U00016aed\U00016af0-\U00016af4\U00016b00-\U00016b36\U00016b40-\U00016b43\U00016b50-\U00016b59\U00016b63-\U00016b77\U00016b7d-\U00016b8f\U00016e40-\U00016e7f\U00016f00-\U00016f44\U00016f50-\U00016f7e\U00016f8f-\U00016f9f\U00016fe0-\U00016fe1\U00017000-\U000187f1\U00018800-\U00018af2\U0001b000-\U0001b11e\U0001b170-\U0001b2fb\U0001bc00-\U0001bc6a\U0001bc70-\U0001bc7c\U0001bc80-\U0001bc88\U0001bc90-\U0001bc99\U0001bc9d-\U0001bc9e\U0001d165-\U0001d169\U0001d16d-\U0001d172\U0001d17b-\U0001d182\U0001d185-\U0001d18b\U0001d1aa-\U0001d1ad\U0001d242-\U0001d244\U0001d400-\U0001d454\U0001d456-\U0001d49c\U0001d49e-\U0001d49f\U0001d4a2\U0001d4a5-\U0001d4a6\U0001d4a9-\U0001d4ac\U0001d4ae-\U0001d4b9\U0001d4bb\U0001d4bd-\U0001d4c3\U0001d4c5-\U0001d505\U0001d507-\U0001d50a\U0001d50d-\U0001d514\U0001d516-\U0001d51c\U0001d51e-\U0001d539\U0001d53b-\U0001d53e\U0001d540-\U0001d544\U0001d546\U0001d54a-\U0001d550\U0001d552-\U0001d6a5\U0001d6a8-\U0001d6c0\U0001d6c2-\U0001d6da\U0001d6dc-\U0001d6fa\U0001d6fc-\U0001d714\U0001d716-\U0001d734\U0001d736-\U0001d74e\U0001d750-\U0001d76e\U0001d770-\U0001d788\U0001d78a-\U0001d7a8\U0001d7aa-\U0001d7c2\U0001d7c4-\U0001d7cb\U0001d7ce-\U0001d7ff\U0001da00-\U0001da36\U0001da3b-\U0001da6c\U0001da75\U0001da84\U0001da9b-\U0001da9f\U0001daa1-\U0001daaf\U0001e000-\U0001e006\U0001e008-\U0001e018\U0001e01b-\U0001e021\U0001e023-\U0001e024\U0001e026-\U0001e02a\U0001e800-\U0001e8c4\U0001e8d0-\U0001e8d6\U0001e900-\U0001e94a\U0001e950-\U0001e959\U0001ee00-\U0001ee03\U0001ee05-\U0001ee1f\U0001ee21-\U0001ee22\U0001ee24\U0001ee27\U0001ee29-\U0001ee32\U0001ee34-\U0001ee37\U0001ee39\U0001ee3b\U0001ee42\U0001ee47\U0001ee49\U0001ee4b\U0001ee4d-\U0001ee4f\U0001ee51-\U0001ee52\U0001ee54\U0001ee57\U0001ee59\U0001ee5b\U0001ee5d\U0001ee5f\U0001ee61-\U0001ee62\U0001ee64\U0001ee67-\U0001ee6a\U0001ee6c-\U0001ee72\U0001ee74-\U0001ee77\U0001ee79-\U0001ee7c\U0001ee7e\U0001ee80-\U0001ee89\U0001ee8b-\U0001ee9b\U0001eea1-\U0001eea3\U0001eea5-\U0001eea9\U0001eeab-\U0001eebb\U00020000-\U0002a6d6\U0002a700-\U0002b734\U0002b740-\U0002b81d\U0002b820-\U0002cea1\U0002ceb0-\U0002ebe0\U0002f800-\U0002fa1d\U000e0100-\U000e01ef'
-
- xid_start += u'\U00010000-\U0001000b\U0001000d-\U00010026\U00010028-\U0001003a\U0001003c-\U0001003d\U0001003f-\U0001004d\U00010050-\U0001005d\U00010080-\U000100fa\U00010140-\U00010174\U00010280-\U0001029c\U000102a0-\U000102d0\U00010300-\U0001031f\U0001032d-\U0001034a\U00010350-\U00010375\U00010380-\U0001039d\U000103a0-\U000103c3\U000103c8-\U000103cf\U000103d1-\U000103d5\U00010400-\U0001049d\U000104b0-\U000104d3\U000104d8-\U000104fb\U00010500-\U00010527\U00010530-\U00010563\U00010600-\U00010736\U00010740-\U00010755\U00010760-\U00010767\U00010800-\U00010805\U00010808\U0001080a-\U00010835\U00010837-\U00010838\U0001083c\U0001083f-\U00010855\U00010860-\U00010876\U00010880-\U0001089e\U000108e0-\U000108f2\U000108f4-\U000108f5\U00010900-\U00010915\U00010920-\U00010939\U00010980-\U000109b7\U000109be-\U000109bf\U00010a00\U00010a10-\U00010a13\U00010a15-\U00010a17\U00010a19-\U00010a35\U00010a60-\U00010a7c\U00010a80-\U00010a9c\U00010ac0-\U00010ac7\U00010ac9-\U00010ae4\U00010b00-\U00010b35\U00010b40-\U00010b55\U00010b60-\U00010b72\U00010b80-\U00010b91\U00010c00-\U00010c48\U00010c80-\U00010cb2\U00010cc0-\U00010cf2\U00010d00-\U00010d23\U00010f00-\U00010f1c\U00010f27\U00010f30-\U00010f45\U00011003-\U00011037\U00011083-\U000110af\U000110d0-\U000110e8\U00011103-\U00011126\U00011144\U00011150-\U00011172\U00011176\U00011183-\U000111b2\U000111c1-\U000111c4\U000111da\U000111dc\U00011200-\U00011211\U00011213-\U0001122b\U00011280-\U00011286\U00011288\U0001128a-\U0001128d\U0001128f-\U0001129d\U0001129f-\U000112a8\U000112b0-\U000112de\U00011305-\U0001130c\U0001130f-\U00011310\U00011313-\U00011328\U0001132a-\U00011330\U00011332-\U00011333\U00011335-\U00011339\U0001133d\U00011350\U0001135d-\U00011361\U00011400-\U00011434\U00011447-\U0001144a\U00011480-\U000114af\U000114c4-\U000114c5\U000114c7\U00011580-\U000115ae\U000115d8-\U000115db\U00011600-\U0001162f\U00011644\U00011680-\U000116aa\U00011700-\U0001171a\U00011800-\U0001182b\U000118a0-\U000118df\U000118ff\U00011a00\U00011a0b-\U00011a32\U00011a3a\U00011a50\U00011a5c-\U00011a83\U00011a86-\U00011a89\U00011a9d\U00011ac0-\U00011af8\U00011c00-\U00011c08\U00011c0a-\U00011c2e\U00011c40\U00011c72-\U00011c8f\U00011d00-\U00011d06\U00011d08-\U00011d09\U00011d0b-\U00011d30\U00011d46\U00011d60-\U00011d65\U00011d67-\U00011d68\U00011d6a-\U00011d89\U00011d98\U00011ee0-\U00011ef2\U00012000-\U00012399\U00012400-\U0001246e\U00012480-\U00012543\U00013000-\U0001342e\U00014400-\U00014646\U00016800-\U00016a38\U00016a40-\U00016a5e\U00016ad0-\U00016aed\U00016b00-\U00016b2f\U00016b40-\U00016b43\U00016b63-\U00016b77\U00016b7d-\U00016b8f\U00016e40-\U00016e7f\U00016f00-\U00016f44\U00016f50\U00016f93-\U00016f9f\U00016fe0-\U00016fe1\U00017000-\U000187f1\U00018800-\U00018af2\U0001b000-\U0001b11e\U0001b170-\U0001b2fb\U0001bc00-\U0001bc6a\U0001bc70-\U0001bc7c\U0001bc80-\U0001bc88\U0001bc90-\U0001bc99\U0001d400-\U0001d454\U0001d456-\U0001d49c\U0001d49e-\U0001d49f\U0001d4a2\U0001d4a5-\U0001d4a6\U0001d4a9-\U0001d4ac\U0001d4ae-\U0001d4b9\U0001d4bb\U0001d4bd-\U0001d4c3\U0001d4c5-\U0001d505\U0001d507-\U0001d50a\U0001d50d-\U0001d514\U0001d516-\U0001d51c\U0001d51e-\U0001d539\U0001d53b-\U0001d53e\U0001d540-\U0001d544\U0001d546\U0001d54a-\U0001d550\U0001d552-\U0001d6a5\U0001d6a8-\U0001d6c0\U0001d6c2-\U0001d6da\U0001d6dc-\U0001d6fa\U0001d6fc-\U0001d714\U0001d716-\U0001d734\U0001d736-\U0001d74e\U0001d750-\U0001d76e\U0001d770-\U0001d788\U0001d78a-\U0001d7a8\U0001d7aa-\U0001d7c2\U0001d7c4-\U0001d7cb\U0001e800-\U0001e8c4\U0001e900-\U0001e943\U0001ee00-\U0001ee03\U0001ee05-\U0001ee1f\U0001ee21-\U0001ee22\U0001ee24\U0001ee27\U0001ee29-\U0001ee32\U0001ee34-\U0001ee37\U0001ee39\U0001ee3b\U0001ee42\U0001ee47\U0001ee49\U0001ee4b\U0001ee4d-\U0001ee4f\U0001ee51-\U0001ee52\U0001ee54\U0001ee57\U0001ee59\U0001ee5b\U0001ee5d\U0001ee5f\U0001ee61-\U0001ee62\U0001ee64\U0001ee67-\U0001ee6a\U0001ee6c-\U0001ee72\U0001ee74-\U0001ee77\U0001ee79-\U0001ee7c\U0001ee7e\U0001ee80-\U0001ee89\U0001ee8b-\U0001ee9b\U0001eea1-\U0001eea3\U0001eea5-\U0001eea9\U0001eeab-\U0001eebb\U00020000-\U0002a6d6\U0002a700-\U0002b734\U0002b740-\U0002b81d\U0002b820-\U0002cea1\U0002ceb0-\U0002ebe0\U0002f800-\U0002fa1d'
+xid_start = 'A-Z_a-z\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376-\u0377\u037b-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u052f\u0531-\u0556\u0559\u0560-\u0588\u05d0-\u05ea\u05ef-\u05f2\u0620-\u064a\u066e-\u066f\u0671-\u06d3\u06d5\u06e5-\u06e6\u06ee-\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4-\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0860-\u086a\u08a0-\u08b4\u08b6-\u08bd\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098c\u098f-\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc-\u09dd\u09df-\u09e1\u09f0-\u09f1\u09fc\u0a05-\u0a0a\u0a0f-\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32-\u0a33\u0a35-\u0a36\u0a38-\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2-\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0-\u0ae1\u0af9\u0b05-\u0b0c\u0b0f-\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32-\u0b33\u0b35-\u0b39\u0b3d\u0b5c-\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99-\u0b9a\u0b9c\u0b9e-\u0b9f\u0ba3-\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d\u0c58-\u0c5a\u0c60-\u0c61\u0c80\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cde\u0ce0-\u0ce1\u0cf1-\u0cf2\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d54-\u0d56\u0d5f-\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e40-\u0e46\u0e81-\u0e82\u0e84\u0e87-\u0e88\u0e8a\u0e8d\u0e94-\u0e97\u0e99-\u0e9f\u0ea1-\u0ea3\u0ea5\u0ea7\u0eaa-\u0eab\u0ead-\u0eb0\u0eb2\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065-\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u170c\u170e-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1878\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191e\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4b\u1b83-\u1ba0\u1bae-\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1c80-\u1c88\u1c90-\u1cba\u1cbd-\u1cbf\u1ce9-\u1cec\u1cee-\u1cf1\u1cf5-\u1cf6\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cee\u2cf2-\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309d-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312f\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fef\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a-\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7b9\ua7f7-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua8fd-\ua8fe\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\ua9e0-\ua9e4\ua9e6-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa7e-\uaaaf\uaab1\uaab5-\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab65\uab70-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40-\ufb41\ufb43-\ufb44\ufb46-\ufbb1\ufbd3-\ufc5d\ufc64-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdf9\ufe71\ufe73\ufe77\ufe79\ufe7b\ufe7d\ufe7f-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uff9d\uffa0-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc\U00010000-\U0001000b\U0001000d-\U00010026\U00010028-\U0001003a\U0001003c-\U0001003d\U0001003f-\U0001004d\U00010050-\U0001005d\U00010080-\U000100fa\U00010140-\U00010174\U00010280-\U0001029c\U000102a0-\U000102d0\U00010300-\U0001031f\U0001032d-\U0001034a\U00010350-\U00010375\U00010380-\U0001039d\U000103a0-\U000103c3\U000103c8-\U000103cf\U000103d1-\U000103d5\U00010400-\U0001049d\U000104b0-\U000104d3\U000104d8-\U000104fb\U00010500-\U00010527\U00010530-\U00010563\U00010600-\U00010736\U00010740-\U00010755\U00010760-\U00010767\U00010800-\U00010805\U00010808\U0001080a-\U00010835\U00010837-\U00010838\U0001083c\U0001083f-\U00010855\U00010860-\U00010876\U00010880-\U0001089e\U000108e0-\U000108f2\U000108f4-\U000108f5\U00010900-\U00010915\U00010920-\U00010939\U00010980-\U000109b7\U000109be-\U000109bf\U00010a00\U00010a10-\U00010a13\U00010a15-\U00010a17\U00010a19-\U00010a35\U00010a60-\U00010a7c\U00010a80-\U00010a9c\U00010ac0-\U00010ac7\U00010ac9-\U00010ae4\U00010b00-\U00010b35\U00010b40-\U00010b55\U00010b60-\U00010b72\U00010b80-\U00010b91\U00010c00-\U00010c48\U00010c80-\U00010cb2\U00010cc0-\U00010cf2\U00010d00-\U00010d23\U00010f00-\U00010f1c\U00010f27\U00010f30-\U00010f45\U00011003-\U00011037\U00011083-\U000110af\U000110d0-\U000110e8\U00011103-\U00011126\U00011144\U00011150-\U00011172\U00011176\U00011183-\U000111b2\U000111c1-\U000111c4\U000111da\U000111dc\U00011200-\U00011211\U00011213-\U0001122b\U00011280-\U00011286\U00011288\U0001128a-\U0001128d\U0001128f-\U0001129d\U0001129f-\U000112a8\U000112b0-\U000112de\U00011305-\U0001130c\U0001130f-\U00011310\U00011313-\U00011328\U0001132a-\U00011330\U00011332-\U00011333\U00011335-\U00011339\U0001133d\U00011350\U0001135d-\U00011361\U00011400-\U00011434\U00011447-\U0001144a\U00011480-\U000114af\U000114c4-\U000114c5\U000114c7\U00011580-\U000115ae\U000115d8-\U000115db\U00011600-\U0001162f\U00011644\U00011680-\U000116aa\U00011700-\U0001171a\U00011800-\U0001182b\U000118a0-\U000118df\U000118ff\U00011a00\U00011a0b-\U00011a32\U00011a3a\U00011a50\U00011a5c-\U00011a83\U00011a86-\U00011a89\U00011a9d\U00011ac0-\U00011af8\U00011c00-\U00011c08\U00011c0a-\U00011c2e\U00011c40\U00011c72-\U00011c8f\U00011d00-\U00011d06\U00011d08-\U00011d09\U00011d0b-\U00011d30\U00011d46\U00011d60-\U00011d65\U00011d67-\U00011d68\U00011d6a-\U00011d89\U00011d98\U00011ee0-\U00011ef2\U00012000-\U00012399\U00012400-\U0001246e\U00012480-\U00012543\U00013000-\U0001342e\U00014400-\U00014646\U00016800-\U00016a38\U00016a40-\U00016a5e\U00016ad0-\U00016aed\U00016b00-\U00016b2f\U00016b40-\U00016b43\U00016b63-\U00016b77\U00016b7d-\U00016b8f\U00016e40-\U00016e7f\U00016f00-\U00016f44\U00016f50\U00016f93-\U00016f9f\U00016fe0-\U00016fe1\U00017000-\U000187f1\U00018800-\U00018af2\U0001b000-\U0001b11e\U0001b170-\U0001b2fb\U0001bc00-\U0001bc6a\U0001bc70-\U0001bc7c\U0001bc80-\U0001bc88\U0001bc90-\U0001bc99\U0001d400-\U0001d454\U0001d456-\U0001d49c\U0001d49e-\U0001d49f\U0001d4a2\U0001d4a5-\U0001d4a6\U0001d4a9-\U0001d4ac\U0001d4ae-\U0001d4b9\U0001d4bb\U0001d4bd-\U0001d4c3\U0001d4c5-\U0001d505\U0001d507-\U0001d50a\U0001d50d-\U0001d514\U0001d516-\U0001d51c\U0001d51e-\U0001d539\U0001d53b-\U0001d53e\U0001d540-\U0001d544\U0001d546\U0001d54a-\U0001d550\U0001d552-\U0001d6a5\U0001d6a8-\U0001d6c0\U0001d6c2-\U0001d6da\U0001d6dc-\U0001d6fa\U0001d6fc-\U0001d714\U0001d716-\U0001d734\U0001d736-\U0001d74e\U0001d750-\U0001d76e\U0001d770-\U0001d788\U0001d78a-\U0001d7a8\U0001d7aa-\U0001d7c2\U0001d7c4-\U0001d7cb\U0001e800-\U0001e8c4\U0001e900-\U0001e943\U0001ee00-\U0001ee03\U0001ee05-\U0001ee1f\U0001ee21-\U0001ee22\U0001ee24\U0001ee27\U0001ee29-\U0001ee32\U0001ee34-\U0001ee37\U0001ee39\U0001ee3b\U0001ee42\U0001ee47\U0001ee49\U0001ee4b\U0001ee4d-\U0001ee4f\U0001ee51-\U0001ee52\U0001ee54\U0001ee57\U0001ee59\U0001ee5b\U0001ee5d\U0001ee5f\U0001ee61-\U0001ee62\U0001ee64\U0001ee67-\U0001ee6a\U0001ee6c-\U0001ee72\U0001ee74-\U0001ee77\U0001ee79-\U0001ee7c\U0001ee7e\U0001ee80-\U0001ee89\U0001ee8b-\U0001ee9b\U0001eea1-\U0001eea3\U0001eea5-\U0001eea9\U0001eeab-\U0001eebb\U00020000-\U0002a6d6\U0002a700-\U0002b734\U0002b740-\U0002b81d\U0002b820-\U0002cea1\U0002ceb0-\U0002ebe0\U0002f800-\U0002fa1d'
cats = ['Cc', 'Cf', 'Cn', 'Co', 'Cs', 'Ll', 'Lm', 'Lo', 'Lt', 'Lu', 'Mc', 'Me', 'Mn', 'Nd', 'Nl', 'No', 'Pc', 'Pd', 'Pe', 'Pf', 'Pi', 'Po', 'Ps', 'Sc', 'Sk', 'Sm', 'So', 'Zl', 'Zp', 'Zs']
# Generated from unidata 11.0.0
def combine(*args):
- return u''.join(globals()[cat] for cat in args)
+ return ''.join(globals()[cat] for cat in args)
def allexcept(*args):
newcats = cats[:]
for arg in args:
newcats.remove(arg)
- return u''.join(globals()[cat] for cat in newcats)
+ return ''.join(globals()[cat] for cat in newcats)
def _handle_runs(char_list): # pragma: no cover
@@ -150,14 +107,13 @@ def _handle_runs(char_list): # pragma: no cover
if a == b:
yield a
else:
- yield u'%s-%s' % (a, b)
+ yield '%s-%s' % (a, b)
if __name__ == '__main__': # pragma: no cover
import unicodedata
- categories_bmp = {'xid_start': [], 'xid_continue': []}
- categories_nonbmp = {'xid_start': [], 'xid_continue': []}
+ categories = {'xid_start': [], 'xid_continue': []}
with open(__file__) as fp:
content = fp.read()
@@ -171,43 +127,26 @@ if __name__ == '__main__': # pragma: no cover
if ord(c) == 0xdc00:
# Hack to avoid combining this combining with the preceeding high
# surrogate, 0xdbff, when doing a repr.
- c = u'\\' + c
+ c = '\\' + c
elif ord(c) in (0x2d, 0x5b, 0x5c, 0x5d, 0x5e):
# Escape regex metachars.
- c = u'\\' + c
- cat_dic = categories_bmp if code < 0x10000 else categories_nonbmp
- cat_dic.setdefault(cat, []).append(c)
+ c = '\\' + c
+ categories.setdefault(cat, []).append(c)
# XID_START and XID_CONTINUE are special categories used for matching
# identifiers in Python 3.
if c.isidentifier():
- cat_dic['xid_start'].append(c)
+ categories['xid_start'].append(c)
if ('a' + c).isidentifier():
- cat_dic['xid_continue'].append(c)
+ categories['xid_continue'].append(c)
with open(__file__, 'w') as fp:
fp.write(header)
- for cat in sorted(categories_bmp):
- val = u''.join(_handle_runs(categories_bmp[cat]))
- if cat == 'Cs':
- # Jython can't handle isolated surrogates
- fp.write("""\
-try:
- Cs = eval(r"u%s")
-except UnicodeDecodeError:
- Cs = '' # Jython can't handle isolated surrogates\n\n""" % ascii(val))
- else:
- fp.write('%s = u%a\n\n' % (cat, val))
-
- fp.write('if sys.maxunicode > 0xFFFF:\n')
- fp.write(' # non-BMP characters, use only on wide Unicode builds\n')
- for cat in sorted(categories_nonbmp):
- # no special case for Cs needed, since there are no surrogates
- # in the higher planes
- val = u''.join(_handle_runs(categories_nonbmp[cat]))
- fp.write(' %s += u%a\n\n' % (cat, val))
+ for cat in sorted(categories):
+ val = ''.join(_handle_runs(categories[cat]))
+ fp.write('%s = %a\n\n' % (cat, val))
- cats = sorted(categories_bmp)
+ cats = sorted(categories)
cats.remove('xid_start')
cats.remove('xid_continue')
fp.write('cats = %r\n\n' % cats)
diff --git a/pygments/util.py b/pygments/util.py
index febde921..3a79029f 100644
--- a/pygments/util.py
+++ b/pygments/util.py
@@ -205,55 +205,15 @@ def looks_like_xml(text):
return rv
-# Python narrow build compatibility
-
-def _surrogatepair(c):
- # Given a unicode character code
- # with length greater than 16 bits,
- # return the two 16 bit surrogate pair.
+def surrogatepair(c):
+ """Given a unicode character code with length greater than 16 bits,
+ return the two 16 bit surrogate pair.
+ """
# From example D28 of:
# http://www.unicode.org/book/ch03.pdf
return (0xd7c0 + (c >> 10), (0xdc00 + (c & 0x3ff)))
-def unirange(a, b):
- """Returns a regular expression string to match the given non-BMP range."""
- if b < a:
- raise ValueError("Bad character range")
- if a < 0x10000 or b < 0x10000:
- raise ValueError("unirange is only defined for non-BMP ranges")
-
- if sys.maxunicode > 0xffff:
- # wide build
- return u'[%s-%s]' % (chr(a), chr(b))
- else:
- # narrow build stores surrogates, and the 're' module handles them
- # (incorrectly) as characters. Since there is still ordering among
- # these characters, expand the range to one that it understands. Some
- # background in http://bugs.python.org/issue3665 and
- # http://bugs.python.org/issue12749
- #
- # Additionally, the lower constants are using chr rather than
- # literals because jython [which uses the wide path] can't load this
- # file if they are literals.
- ah, al = _surrogatepair(a)
- bh, bl = _surrogatepair(b)
- if ah == bh:
- return u'(?:%s[%s-%s])' % (chr(ah), chr(al), chr(bl))
- else:
- buf = []
- buf.append(u'%s[%s-%s]' % (chr(ah), chr(al),
- ah == bh and chr(bl) or chr(0xdfff)))
- if ah - bh > 1:
- buf.append(u'[%s-%s][%s-%s]' %
- chr(ah+1), chr(bh-1), chr(0xdc00), chr(0xdfff))
- if ah != bh:
- buf.append(u'%s[%s-%s]' %
- (chr(bh), chr(0xdc00), chr(bl)))
-
- return u'(?:' + u'|'.join(buf) + u')'
-
-
def format_lines(var_name, seq, raw=False, indent_level=0):
"""Formats a sequence of strings for output."""
lines = []
diff --git a/scripts/check_sources.py b/scripts/check_sources.py
index 4c0a27b5..0762c967 100755
--- a/scripts/check_sources.py
+++ b/scripts/check_sources.py
@@ -197,7 +197,7 @@ def main(argv):
if not in_pygments_pkg and checker.only_pkg:
continue
for lno, msg in checker(fn, lines):
- print(u"%s:%d: %s" % (fn, lno, msg), file=out)
+ print('%s:%d: %s' % (fn, lno, msg), file=out)
num += 1
if verbose:
print()
diff --git a/scripts/debug_lexer.py b/scripts/debug_lexer.py
index d00b6102..0f1dc0bd 100755
--- a/scripts/debug_lexer.py
+++ b/scripts/debug_lexer.py
@@ -86,7 +86,7 @@ class DebuggingRegexLexer(ExtendedRegexLexer):
# at EOL, reset state to 'root'
ctx.stack = ['root']
statetokens = tokendefs['root']
- yield ctx.pos, Text, u'\n'
+ yield ctx.pos, Text, '\n'
ctx.pos += 1
continue
yield ctx.pos, Error, text[ctx.pos]
diff --git a/tests/test_asm.py b/tests/test_asm.py
index d351ce30..23e9f344 100644
--- a/tests/test_asm.py
+++ b/tests/test_asm.py
@@ -62,7 +62,7 @@ def test_cpuid(lexer_nasm):
# cpu id, but as a single token. See bug #1517
fragment = 'cpuid'
expected = [
- (Token.Name.Function, u'cpuid'),
- (Token.Text, u'\n'),
+ (Token.Name.Function, 'cpuid'),
+ (Token.Text, '\n'),
]
assert expected == list(lexer_nasm.get_tokens(fragment))
diff --git a/tests/test_basic.py b/tests/test_basic.py
index e3826b28..384be6ec 100644
--- a/tests/test_basic.py
+++ b/tests/test_basic.py
@@ -57,7 +57,7 @@ def test_can_lex_integer(lexer):
def test_can_lex_names(lexer):
- assert_are_tokens_of_type(lexer, u'thingy thingy123 _thingy _123', Name)
+ assert_are_tokens_of_type(lexer, 'thingy thingy123 _thingy _123', Name)
def test_can_recover_after_unterminated_string(lexer):
diff --git a/tests/test_basic_api.py b/tests/test_basic_api.py
index 378ea5e4..bbfbb14e 100644
--- a/tests/test_basic_api.py
+++ b/tests/test_basic_api.py
@@ -173,20 +173,20 @@ def test_formatter_encodings():
# unicode output
fmt = HtmlFormatter()
- tokens = [(Text, u"ä")]
+ tokens = [(Text, "ä")]
out = format(tokens, fmt)
assert type(out) is str
- assert u"ä" in out
+ assert "ä" in out
# encoding option
fmt = HtmlFormatter(encoding="latin1")
- tokens = [(Text, u"ä")]
- assert u"ä".encode("latin1") in format(tokens, fmt)
+ tokens = [(Text, "ä")]
+ assert "ä".encode("latin1") in format(tokens, fmt)
# encoding and outencoding option
fmt = HtmlFormatter(encoding="latin1", outencoding="utf8")
- tokens = [(Text, u"ä")]
- assert u"ä".encode("utf8") in format(tokens, fmt)
+ tokens = [(Text, "ä")]
+ assert "ä".encode("utf8") in format(tokens, fmt)
@pytest.mark.parametrize('cls', [getattr(formatters, name)
@@ -307,7 +307,7 @@ class TestFilters:
def test_codetag(self):
lx = lexers.PythonLexer()
lx.add_filter('codetagify')
- text = u'# BUG: text'
+ text = '# BUG: text'
tokens = list(lx.get_tokens(text))
assert '# ' == tokens[0][1]
assert 'BUG' == tokens[1][1]
@@ -316,15 +316,15 @@ class TestFilters:
# ticket #368
lx = lexers.PythonLexer()
lx.add_filter('codetagify')
- text = u'# DEBUG: text'
+ text = '# DEBUG: text'
tokens = list(lx.get_tokens(text))
assert '# DEBUG: text' == tokens[0][1]
def test_symbols(self):
lx = lexers.IsabelleLexer()
lx.add_filter('symbols')
- text = u'lemma "A \\<Longrightarrow> B"'
+ text = 'lemma "A \\<Longrightarrow> B"'
tokens = list(lx.get_tokens(text))
assert 'lemma' == tokens[0][1]
assert 'A ' == tokens[3][1]
- assert u'\U000027f9' == tokens[4][1]
+ assert '\U000027f9' == tokens[4][1]
diff --git a/tests/test_bibtex.py b/tests/test_bibtex.py
index dfa668f2..d7bc02ac 100644
--- a/tests/test_bibtex.py
+++ b/tests/test_bibtex.py
@@ -21,39 +21,39 @@ def lexer():
def test_preamble(lexer):
- data = u'@PREAMBLE{"% some LaTeX code here"}'
+ data = '@PREAMBLE{"% some LaTeX code here"}'
tokens = [
- (Token.Name.Class, u'@PREAMBLE'),
- (Token.Punctuation, u'{'),
- (Token.String, u'"'),
- (Token.String, u'% some LaTeX code here'),
- (Token.String, u'"'),
- (Token.Punctuation, u'}'),
- (Token.Text, u'\n'),
+ (Token.Name.Class, '@PREAMBLE'),
+ (Token.Punctuation, '{'),
+ (Token.String, '"'),
+ (Token.String, '% some LaTeX code here'),
+ (Token.String, '"'),
+ (Token.Punctuation, '}'),
+ (Token.Text, '\n'),
]
assert list(lexer.get_tokens(data)) == tokens
def test_string(lexer):
- data = u'@STRING(SCI = "Science")'
+ data = '@STRING(SCI = "Science")'
tokens = [
- (Token.Name.Class, u'@STRING'),
- (Token.Punctuation, u'('),
- (Token.Name.Attribute, u'SCI'),
- (Token.Text, u' '),
- (Token.Punctuation, u'='),
- (Token.Text, u' '),
- (Token.String, u'"'),
- (Token.String, u'Science'),
- (Token.String, u'"'),
- (Token.Punctuation, u')'),
- (Token.Text, u'\n'),
+ (Token.Name.Class, '@STRING'),
+ (Token.Punctuation, '('),
+ (Token.Name.Attribute, 'SCI'),
+ (Token.Text, ' '),
+ (Token.Punctuation, '='),
+ (Token.Text, ' '),
+ (Token.String, '"'),
+ (Token.String, 'Science'),
+ (Token.String, '"'),
+ (Token.Punctuation, ')'),
+ (Token.Text, '\n'),
]
assert list(lexer.get_tokens(data)) == tokens
def test_entry(lexer):
- data = u"""
+ data = """
This is a comment.
@ARTICLE{ruckenstein-diffusion,
@@ -65,56 +65,56 @@ def test_entry(lexer):
"""
tokens = [
- (Token.Comment, u'This is a comment.'),
- (Token.Text, u'\n\n'),
- (Token.Name.Class, u'@ARTICLE'),
- (Token.Punctuation, u'{'),
- (Token.Name.Label, u'ruckenstein-diffusion'),
- (Token.Punctuation, u','),
- (Token.Text, u'\n '),
- (Token.Name.Attribute, u'author'),
- (Token.Text, u' '),
- (Token.Punctuation, u'='),
- (Token.Text, u' '),
- (Token.String, u'"'),
- (Token.String, u'Liu, Hongquin'),
- (Token.String, u'"'),
- (Token.Text, u' '),
- (Token.Punctuation, u'#'),
- (Token.Text, u' '),
- (Token.Name.Variable, u'and'),
- (Token.Text, u' '),
- (Token.Punctuation, u'#'),
- (Token.Text, u' '),
- (Token.String, u'"'),
- (Token.String, u'Ruckenstein, Eli'),
- (Token.String, u'"'),
- (Token.Punctuation, u','),
- (Token.Text, u'\n '),
- (Token.Name.Attribute, u'year'),
- (Token.Text, u' '),
- (Token.Punctuation, u'='),
- (Token.Text, u' '),
- (Token.Number, u'1997'),
- (Token.Punctuation, u','),
- (Token.Text, u'\n '),
- (Token.Name.Attribute, u'month'),
- (Token.Text, u' '),
- (Token.Punctuation, u'='),
- (Token.Text, u' '),
- (Token.Name.Variable, u'JAN'),
- (Token.Punctuation, u','),
- (Token.Text, u'\n '),
- (Token.Name.Attribute, u'pages'),
- (Token.Text, u' '),
- (Token.Punctuation, u'='),
- (Token.Text, u' '),
- (Token.String, u'"'),
- (Token.String, u'888-895'),
- (Token.String, u'"'),
- (Token.Text, u'\n'),
- (Token.Punctuation, u'}'),
- (Token.Text, u'\n'),
+ (Token.Comment, 'This is a comment.'),
+ (Token.Text, '\n\n'),
+ (Token.Name.Class, '@ARTICLE'),
+ (Token.Punctuation, '{'),
+ (Token.Name.Label, 'ruckenstein-diffusion'),
+ (Token.Punctuation, ','),
+ (Token.Text, '\n '),
+ (Token.Name.Attribute, 'author'),
+ (Token.Text, ' '),
+ (Token.Punctuation, '='),
+ (Token.Text, ' '),
+ (Token.String, '"'),
+ (Token.String, 'Liu, Hongquin'),
+ (Token.String, '"'),
+ (Token.Text, ' '),
+ (Token.Punctuation, '#'),
+ (Token.Text, ' '),
+ (Token.Name.Variable, 'and'),
+ (Token.Text, ' '),
+ (Token.Punctuation, '#'),
+ (Token.Text, ' '),
+ (Token.String, '"'),
+ (Token.String, 'Ruckenstein, Eli'),
+ (Token.String, '"'),
+ (Token.Punctuation, ','),
+ (Token.Text, '\n '),
+ (Token.Name.Attribute, 'year'),
+ (Token.Text, ' '),
+ (Token.Punctuation, '='),
+ (Token.Text, ' '),
+ (Token.Number, '1997'),
+ (Token.Punctuation, ','),
+ (Token.Text, '\n '),
+ (Token.Name.Attribute, 'month'),
+ (Token.Text, ' '),
+ (Token.Punctuation, '='),
+ (Token.Text, ' '),
+ (Token.Name.Variable, 'JAN'),
+ (Token.Punctuation, ','),
+ (Token.Text, '\n '),
+ (Token.Name.Attribute, 'pages'),
+ (Token.Text, ' '),
+ (Token.Punctuation, '='),
+ (Token.Text, ' '),
+ (Token.String, '"'),
+ (Token.String, '888-895'),
+ (Token.String, '"'),
+ (Token.Text, '\n'),
+ (Token.Punctuation, '}'),
+ (Token.Text, '\n'),
]
assert list(lexer.get_tokens(textwrap.dedent(data))) == tokens
@@ -122,9 +122,9 @@ def test_entry(lexer):
def test_comment(lexer):
data = '@COMMENT{test}'
tokens = [
- (Token.Comment, u'@COMMENT'),
- (Token.Comment, u'{test}'),
- (Token.Text, u'\n'),
+ (Token.Comment, '@COMMENT'),
+ (Token.Comment, '{test}'),
+ (Token.Text, '\n'),
]
assert list(lexer.get_tokens(data)) == tokens
@@ -132,12 +132,12 @@ def test_comment(lexer):
def test_missing_body(lexer):
data = '@ARTICLE xxx'
tokens = [
- (Token.Name.Class, u'@ARTICLE'),
- (Token.Text, u' '),
- (Token.Error, u'x'),
- (Token.Error, u'x'),
- (Token.Error, u'x'),
- (Token.Text, u'\n'),
+ (Token.Name.Class, '@ARTICLE'),
+ (Token.Text, ' '),
+ (Token.Error, 'x'),
+ (Token.Error, 'x'),
+ (Token.Error, 'x'),
+ (Token.Text, '\n'),
]
assert list(lexer.get_tokens(data)) == tokens
@@ -145,12 +145,12 @@ def test_missing_body(lexer):
def test_mismatched_brace(lexer):
data = '@PREAMBLE(""}'
tokens = [
- (Token.Name.Class, u'@PREAMBLE'),
- (Token.Punctuation, u'('),
- (Token.String, u'"'),
- (Token.String, u'"'),
- (Token.Error, u'}'),
- (Token.Text, u'\n'),
+ (Token.Name.Class, '@PREAMBLE'),
+ (Token.Punctuation, '('),
+ (Token.String, '"'),
+ (Token.String, '"'),
+ (Token.Error, '}'),
+ (Token.Text, '\n'),
]
assert list(lexer.get_tokens(data)) == tokens
@@ -177,64 +177,64 @@ def test_basic_bst():
"""
tokens = [
(Token.Comment.SingleLine, "% BibTeX standard bibliography style `plain'"),
- (Token.Text, u'\n\n'),
- (Token.Keyword, u'INTEGERS'),
- (Token.Text, u' '),
- (Token.Punctuation, u'{'),
- (Token.Text, u' '),
- (Token.Name.Variable, u'output.state'),
- (Token.Text, u' '),
- (Token.Name.Variable, u'before.all'),
- (Token.Text, u' '),
- (Token.Punctuation, u'}'),
- (Token.Text, u'\n\n'),
- (Token.Keyword, u'FUNCTION'),
- (Token.Text, u' '),
- (Token.Punctuation, u'{'),
- (Token.Name.Variable, u'sort.format.title'),
- (Token.Punctuation, u'}'),
- (Token.Text, u'\n'),
- (Token.Punctuation, u'{'),
- (Token.Text, u' '),
- (Token.Name.Function, u"'t"),
- (Token.Text, u' '),
- (Token.Name.Variable, u':='),
- (Token.Text, u'\n'),
- (Token.Literal.String, u'"A "'),
- (Token.Text, u' '),
- (Token.Literal.Number, u'#2'),
- (Token.Text, u'\n '),
- (Token.Literal.String, u'"An "'),
- (Token.Text, u' '),
- (Token.Literal.Number, u'#3'),
- (Token.Text, u'\n '),
- (Token.Literal.String, u'"The "'),
- (Token.Text, u' '),
- (Token.Literal.Number, u'#4'),
- (Token.Text, u' '),
- (Token.Name.Variable, u't'),
- (Token.Text, u' '),
- (Token.Name.Variable, u'chop.word'),
- (Token.Text, u'\n '),
- (Token.Name.Variable, u'chop.word'),
- (Token.Text, u'\n'),
- (Token.Name.Variable, u'chop.word'),
- (Token.Text, u'\n'),
- (Token.Name.Variable, u'sortify'),
- (Token.Text, u'\n'),
- (Token.Literal.Number, u'#1'),
- (Token.Text, u' '),
- (Token.Name.Builtin, u'global.max$'),
- (Token.Text, u' '),
- (Token.Name.Builtin, u'substring$'),
- (Token.Text, u'\n'),
- (Token.Punctuation, u'}'),
- (Token.Text, u'\n\n'),
- (Token.Keyword, u'ITERATE'),
- (Token.Text, u' '),
- (Token.Punctuation, u'{'),
- (Token.Name.Builtin, u'call.type$'),
- (Token.Punctuation, u'}'),
- (Token.Text, u'\n'),
+ (Token.Text, '\n\n'),
+ (Token.Keyword, 'INTEGERS'),
+ (Token.Text, ' '),
+ (Token.Punctuation, '{'),
+ (Token.Text, ' '),
+ (Token.Name.Variable, 'output.state'),
+ (Token.Text, ' '),
+ (Token.Name.Variable, 'before.all'),
+ (Token.Text, ' '),
+ (Token.Punctuation, '}'),
+ (Token.Text, '\n\n'),
+ (Token.Keyword, 'FUNCTION'),
+ (Token.Text, ' '),
+ (Token.Punctuation, '{'),
+ (Token.Name.Variable, 'sort.format.title'),
+ (Token.Punctuation, '}'),
+ (Token.Text, '\n'),
+ (Token.Punctuation, '{'),
+ (Token.Text, ' '),
+ (Token.Name.Function, "'t"),
+ (Token.Text, ' '),
+ (Token.Name.Variable, ':='),
+ (Token.Text, '\n'),
+ (Token.Literal.String, '"A "'),
+ (Token.Text, ' '),
+ (Token.Literal.Number, '#2'),
+ (Token.Text, '\n '),
+ (Token.Literal.String, '"An "'),
+ (Token.Text, ' '),
+ (Token.Literal.Number, '#3'),
+ (Token.Text, '\n '),
+ (Token.Literal.String, '"The "'),
+ (Token.Text, ' '),
+ (Token.Literal.Number, '#4'),
+ (Token.Text, ' '),
+ (Token.Name.Variable, 't'),
+ (Token.Text, ' '),
+ (Token.Name.Variable, 'chop.word'),
+ (Token.Text, '\n '),
+ (Token.Name.Variable, 'chop.word'),
+ (Token.Text, '\n'),
+ (Token.Name.Variable, 'chop.word'),
+ (Token.Text, '\n'),
+ (Token.Name.Variable, 'sortify'),
+ (Token.Text, '\n'),
+ (Token.Literal.Number, '#1'),
+ (Token.Text, ' '),
+ (Token.Name.Builtin, 'global.max$'),
+ (Token.Text, ' '),
+ (Token.Name.Builtin, 'substring$'),
+ (Token.Text, '\n'),
+ (Token.Punctuation, '}'),
+ (Token.Text, '\n\n'),
+ (Token.Keyword, 'ITERATE'),
+ (Token.Text, ' '),
+ (Token.Punctuation, '{'),
+ (Token.Name.Builtin, 'call.type$'),
+ (Token.Punctuation, '}'),
+ (Token.Text, '\n'),
]
assert list(lexer.get_tokens(textwrap.dedent(data))) == tokens
diff --git a/tests/test_cfm.py b/tests/test_cfm.py
index a1600944..a89e160d 100644
--- a/tests/test_cfm.py
+++ b/tests/test_cfm.py
@@ -19,28 +19,28 @@ def lexer():
def test_basic_comment(lexer):
- fragment = u'<!--- cfcomment --->'
+ fragment = '<!--- cfcomment --->'
expected = [
- (Token.Text, u''),
- (Token.Comment.Multiline, u'<!---'),
- (Token.Comment.Multiline, u' cfcomment '),
- (Token.Comment.Multiline, u'--->'),
- (Token.Text, u'\n'),
+ (Token.Text, ''),
+ (Token.Comment.Multiline, '<!---'),
+ (Token.Comment.Multiline, ' cfcomment '),
+ (Token.Comment.Multiline, '--->'),
+ (Token.Text, '\n'),
]
assert list(lexer.get_tokens(fragment)) == expected
def test_nested_comment(lexer):
- fragment = u'<!--- nested <!--- cfcomment ---> --->'
+ fragment = '<!--- nested <!--- cfcomment ---> --->'
expected = [
- (Token.Text, u''),
- (Token.Comment.Multiline, u'<!---'),
- (Token.Comment.Multiline, u' nested '),
- (Token.Comment.Multiline, u'<!---'),
- (Token.Comment.Multiline, u' cfcomment '),
- (Token.Comment.Multiline, u'--->'),
- (Token.Comment.Multiline, u' '),
- (Token.Comment.Multiline, u'--->'),
- (Token.Text, u'\n'),
+ (Token.Text, ''),
+ (Token.Comment.Multiline, '<!---'),
+ (Token.Comment.Multiline, ' nested '),
+ (Token.Comment.Multiline, '<!---'),
+ (Token.Comment.Multiline, ' cfcomment '),
+ (Token.Comment.Multiline, '--->'),
+ (Token.Comment.Multiline, ' '),
+ (Token.Comment.Multiline, '--->'),
+ (Token.Text, '\n'),
]
assert list(lexer.get_tokens(fragment)) == expected
diff --git a/tests/test_clexer.py b/tests/test_clexer.py
index d40ec491..d6561243 100644
--- a/tests/test_clexer.py
+++ b/tests/test_clexer.py
@@ -33,7 +33,7 @@ def test_numbers(lexer):
def test_switch(lexer):
- fragment = u'''\
+ fragment = '''\
int main()
{
switch (0)
@@ -45,48 +45,48 @@ def test_switch(lexer):
}
'''
tokens = [
- (Token.Keyword.Type, u'int'),
- (Token.Text, u' '),
- (Token.Name.Function, u'main'),
- (Token.Punctuation, u'('),
- (Token.Punctuation, u')'),
- (Token.Text, u'\n'),
- (Token.Punctuation, u'{'),
- (Token.Text, u'\n'),
- (Token.Text, u' '),
- (Token.Keyword, u'switch'),
- (Token.Text, u' '),
- (Token.Punctuation, u'('),
- (Token.Literal.Number.Integer, u'0'),
- (Token.Punctuation, u')'),
- (Token.Text, u'\n'),
- (Token.Text, u' '),
- (Token.Punctuation, u'{'),
- (Token.Text, u'\n'),
- (Token.Text, u' '),
- (Token.Keyword, u'case'),
- (Token.Text, u' '),
- (Token.Literal.Number.Integer, u'0'),
- (Token.Operator, u':'),
- (Token.Text, u'\n'),
- (Token.Text, u' '),
- (Token.Keyword, u'default'),
- (Token.Operator, u':'),
- (Token.Text, u'\n'),
- (Token.Text, u' '),
- (Token.Punctuation, u';'),
- (Token.Text, u'\n'),
- (Token.Text, u' '),
- (Token.Punctuation, u'}'),
- (Token.Text, u'\n'),
- (Token.Punctuation, u'}'),
- (Token.Text, u'\n'),
+ (Token.Keyword.Type, 'int'),
+ (Token.Text, ' '),
+ (Token.Name.Function, 'main'),
+ (Token.Punctuation, '('),
+ (Token.Punctuation, ')'),
+ (Token.Text, '\n'),
+ (Token.Punctuation, '{'),
+ (Token.Text, '\n'),
+ (Token.Text, ' '),
+ (Token.Keyword, 'switch'),
+ (Token.Text, ' '),
+ (Token.Punctuation, '('),
+ (Token.Literal.Number.Integer, '0'),
+ (Token.Punctuation, ')'),
+ (Token.Text, '\n'),
+ (Token.Text, ' '),
+ (Token.Punctuation, '{'),
+ (Token.Text, '\n'),
+ (Token.Text, ' '),
+ (Token.Keyword, 'case'),
+ (Token.Text, ' '),
+ (Token.Literal.Number.Integer, '0'),
+ (Token.Operator, ':'),
+ (Token.Text, '\n'),
+ (Token.Text, ' '),
+ (Token.Keyword, 'default'),
+ (Token.Operator, ':'),
+ (Token.Text, '\n'),
+ (Token.Text, ' '),
+ (Token.Punctuation, ';'),
+ (Token.Text, '\n'),
+ (Token.Text, ' '),
+ (Token.Punctuation, '}'),
+ (Token.Text, '\n'),
+ (Token.Punctuation, '}'),
+ (Token.Text, '\n'),
]
assert list(lexer.get_tokens(textwrap.dedent(fragment))) == tokens
def test_switch_space_before_colon(lexer):
- fragment = u'''\
+ fragment = '''\
int main()
{
switch (0)
@@ -98,50 +98,50 @@ def test_switch_space_before_colon(lexer):
}
'''
tokens = [
- (Token.Keyword.Type, u'int'),
- (Token.Text, u' '),
- (Token.Name.Function, u'main'),
- (Token.Punctuation, u'('),
- (Token.Punctuation, u')'),
- (Token.Text, u'\n'),
- (Token.Punctuation, u'{'),
- (Token.Text, u'\n'),
- (Token.Text, u' '),
- (Token.Keyword, u'switch'),
- (Token.Text, u' '),
- (Token.Punctuation, u'('),
- (Token.Literal.Number.Integer, u'0'),
- (Token.Punctuation, u')'),
- (Token.Text, u'\n'),
- (Token.Text, u' '),
- (Token.Punctuation, u'{'),
- (Token.Text, u'\n'),
- (Token.Text, u' '),
- (Token.Keyword, u'case'),
- (Token.Text, u' '),
- (Token.Literal.Number.Integer, u'0'),
- (Token.Text, u' '),
- (Token.Operator, u':'),
- (Token.Text, u'\n'),
- (Token.Text, u' '),
- (Token.Keyword, u'default'),
- (Token.Text, u' '),
- (Token.Operator, u':'),
- (Token.Text, u'\n'),
- (Token.Text, u' '),
- (Token.Punctuation, u';'),
- (Token.Text, u'\n'),
- (Token.Text, u' '),
- (Token.Punctuation, u'}'),
- (Token.Text, u'\n'),
- (Token.Punctuation, u'}'),
- (Token.Text, u'\n'),
+ (Token.Keyword.Type, 'int'),
+ (Token.Text, ' '),
+ (Token.Name.Function, 'main'),
+ (Token.Punctuation, '('),
+ (Token.Punctuation, ')'),
+ (Token.Text, '\n'),
+ (Token.Punctuation, '{'),
+ (Token.Text, '\n'),
+ (Token.Text, ' '),
+ (Token.Keyword, 'switch'),
+ (Token.Text, ' '),
+ (Token.Punctuation, '('),
+ (Token.Literal.Number.Integer, '0'),
+ (Token.Punctuation, ')'),
+ (Token.Text, '\n'),
+ (Token.Text, ' '),
+ (Token.Punctuation, '{'),
+ (Token.Text, '\n'),
+ (Token.Text, ' '),
+ (Token.Keyword, 'case'),
+ (Token.Text, ' '),
+ (Token.Literal.Number.Integer, '0'),
+ (Token.Text, ' '),
+ (Token.Operator, ':'),
+ (Token.Text, '\n'),
+ (Token.Text, ' '),
+ (Token.Keyword, 'default'),
+ (Token.Text, ' '),
+ (Token.Operator, ':'),
+ (Token.Text, '\n'),
+ (Token.Text, ' '),
+ (Token.Punctuation, ';'),
+ (Token.Text, '\n'),
+ (Token.Text, ' '),
+ (Token.Punctuation, '}'),
+ (Token.Text, '\n'),
+ (Token.Punctuation, '}'),
+ (Token.Text, '\n'),
]
assert list(lexer.get_tokens(textwrap.dedent(fragment))) == tokens
def test_label(lexer):
- fragment = u'''\
+ fragment = '''\
int main()
{
foo:
@@ -149,31 +149,31 @@ def test_label(lexer):
}
'''
tokens = [
- (Token.Keyword.Type, u'int'),
- (Token.Text, u' '),
- (Token.Name.Function, u'main'),
- (Token.Punctuation, u'('),
- (Token.Punctuation, u')'),
- (Token.Text, u'\n'),
- (Token.Punctuation, u'{'),
- (Token.Text, u'\n'),
- (Token.Name.Label, u'foo'),
- (Token.Punctuation, u':'),
- (Token.Text, u'\n'),
- (Token.Text, u' '),
- (Token.Keyword, u'goto'),
- (Token.Text, u' '),
- (Token.Name, u'foo'),
- (Token.Punctuation, u';'),
- (Token.Text, u'\n'),
- (Token.Punctuation, u'}'),
- (Token.Text, u'\n'),
+ (Token.Keyword.Type, 'int'),
+ (Token.Text, ' '),
+ (Token.Name.Function, 'main'),
+ (Token.Punctuation, '('),
+ (Token.Punctuation, ')'),
+ (Token.Text, '\n'),
+ (Token.Punctuation, '{'),
+ (Token.Text, '\n'),
+ (Token.Name.Label, 'foo'),
+ (Token.Punctuation, ':'),
+ (Token.Text, '\n'),
+ (Token.Text, ' '),
+ (Token.Keyword, 'goto'),
+ (Token.Text, ' '),
+ (Token.Name, 'foo'),
+ (Token.Punctuation, ';'),
+ (Token.Text, '\n'),
+ (Token.Punctuation, '}'),
+ (Token.Text, '\n'),
]
assert list(lexer.get_tokens(textwrap.dedent(fragment))) == tokens
def test_label_space_before_colon(lexer):
- fragment = u'''\
+ fragment = '''\
int main()
{
foo :
@@ -181,32 +181,32 @@ def test_label_space_before_colon(lexer):
}
'''
tokens = [
- (Token.Keyword.Type, u'int'),
- (Token.Text, u' '),
- (Token.Name.Function, u'main'),
- (Token.Punctuation, u'('),
- (Token.Punctuation, u')'),
- (Token.Text, u'\n'),
- (Token.Punctuation, u'{'),
- (Token.Text, u'\n'),
- (Token.Name.Label, u'foo'),
- (Token.Text, u' '),
- (Token.Punctuation, u':'),
- (Token.Text, u'\n'),
- (Token.Text, u' '),
- (Token.Keyword, u'goto'),
- (Token.Text, u' '),
- (Token.Name, u'foo'),
- (Token.Punctuation, u';'),
- (Token.Text, u'\n'),
- (Token.Punctuation, u'}'),
- (Token.Text, u'\n'),
+ (Token.Keyword.Type, 'int'),
+ (Token.Text, ' '),
+ (Token.Name.Function, 'main'),
+ (Token.Punctuation, '('),
+ (Token.Punctuation, ')'),
+ (Token.Text, '\n'),
+ (Token.Punctuation, '{'),
+ (Token.Text, '\n'),
+ (Token.Name.Label, 'foo'),
+ (Token.Text, ' '),
+ (Token.Punctuation, ':'),
+ (Token.Text, '\n'),
+ (Token.Text, ' '),
+ (Token.Keyword, 'goto'),
+ (Token.Text, ' '),
+ (Token.Name, 'foo'),
+ (Token.Punctuation, ';'),
+ (Token.Text, '\n'),
+ (Token.Punctuation, '}'),
+ (Token.Text, '\n'),
]
assert list(lexer.get_tokens(textwrap.dedent(fragment))) == tokens
def test_label_followed_by_statement(lexer):
- fragment = u'''\
+ fragment = '''\
int main()
{
foo:return 0;
@@ -214,52 +214,52 @@ def test_label_followed_by_statement(lexer):
}
'''
tokens = [
- (Token.Keyword.Type, u'int'),
- (Token.Text, u' '),
- (Token.Name.Function, u'main'),
- (Token.Punctuation, u'('),
- (Token.Punctuation, u')'),
- (Token.Text, u'\n'),
- (Token.Punctuation, u'{'),
- (Token.Text, u'\n'),
- (Token.Name.Label, u'foo'),
- (Token.Punctuation, u':'),
- (Token.Keyword, u'return'),
- (Token.Text, u' '),
- (Token.Literal.Number.Integer, u'0'),
- (Token.Punctuation, u';'),
- (Token.Text, u'\n'),
- (Token.Text, u' '),
- (Token.Keyword, u'goto'),
- (Token.Text, u' '),
- (Token.Name, u'foo'),
- (Token.Punctuation, u';'),
- (Token.Text, u'\n'),
- (Token.Punctuation, u'}'),
- (Token.Text, u'\n'),
+ (Token.Keyword.Type, 'int'),
+ (Token.Text, ' '),
+ (Token.Name.Function, 'main'),
+ (Token.Punctuation, '('),
+ (Token.Punctuation, ')'),
+ (Token.Text, '\n'),
+ (Token.Punctuation, '{'),
+ (Token.Text, '\n'),
+ (Token.Name.Label, 'foo'),
+ (Token.Punctuation, ':'),
+ (Token.Keyword, 'return'),
+ (Token.Text, ' '),
+ (Token.Literal.Number.Integer, '0'),
+ (Token.Punctuation, ';'),
+ (Token.Text, '\n'),
+ (Token.Text, ' '),
+ (Token.Keyword, 'goto'),
+ (Token.Text, ' '),
+ (Token.Name, 'foo'),
+ (Token.Punctuation, ';'),
+ (Token.Text, '\n'),
+ (Token.Punctuation, '}'),
+ (Token.Text, '\n'),
]
assert list(lexer.get_tokens(textwrap.dedent(fragment))) == tokens
def test_preproc_file(lexer):
- fragment = u'#include <foo>\n'
+ fragment = '#include <foo>\n'
tokens = [
- (Token.Comment.Preproc, u'#'),
- (Token.Comment.Preproc, u'include'),
- (Token.Text, u' '),
- (Token.Comment.PreprocFile, u'<foo>'),
- (Token.Comment.Preproc, u'\n'),
+ (Token.Comment.Preproc, '#'),
+ (Token.Comment.Preproc, 'include'),
+ (Token.Text, ' '),
+ (Token.Comment.PreprocFile, '<foo>'),
+ (Token.Comment.Preproc, '\n'),
]
assert list(lexer.get_tokens(fragment)) == tokens
def test_preproc_file2(lexer):
- fragment = u'#include "foo.h"\n'
+ fragment = '#include "foo.h"\n'
tokens = [
- (Token.Comment.Preproc, u'#'),
- (Token.Comment.Preproc, u'include'),
- (Token.Text, u' '),
- (Token.Comment.PreprocFile, u'"foo.h"'),
- (Token.Comment.Preproc, u'\n'),
+ (Token.Comment.Preproc, '#'),
+ (Token.Comment.Preproc, 'include'),
+ (Token.Text, ' '),
+ (Token.Comment.PreprocFile, '"foo.h"'),
+ (Token.Comment.Preproc, '\n'),
]
assert list(lexer.get_tokens(fragment)) == tokens
diff --git a/tests/test_cpp.py b/tests/test_cpp.py
index a3ef33a3..e847079d 100644
--- a/tests/test_cpp.py
+++ b/tests/test_cpp.py
@@ -21,18 +21,18 @@ def lexer():
def test_good_comment(lexer):
- fragment = u'/* foo */\n'
+ fragment = '/* foo */\n'
tokens = [
- (Token.Comment.Multiline, u'/* foo */'),
- (Token.Text, u'\n'),
+ (Token.Comment.Multiline, '/* foo */'),
+ (Token.Text, '\n'),
]
assert list(lexer.get_tokens(fragment)) == tokens
def test_open_comment(lexer):
- fragment = u'/* foo\n'
+ fragment = '/* foo\n'
tokens = [
- (Token.Comment.Multiline, u'/* foo\n'),
+ (Token.Comment.Multiline, '/* foo\n'),
]
assert list(lexer.get_tokens(fragment)) == tokens
@@ -52,4 +52,4 @@ def test_guess_c_lexer():
}
'''
lexer = guess_lexer(code)
- assert isinstance(lexer, CLexer) \ No newline at end of file
+ assert isinstance(lexer, CLexer)
diff --git a/tests/test_csound.py b/tests/test_csound.py
index 0186da7a..26672043 100644
--- a/tests/test_csound.py
+++ b/tests/test_csound.py
@@ -30,12 +30,12 @@ def test_comments(lexer):
// comment
''')
tokens = [
- (Comment.Multiline, u'/*\n * comment\n */'),
- (Text, u'\n'),
- (Comment.Single, u'; comment'),
- (Text, u'\n'),
- (Comment.Single, u'// comment'),
- (Text, u'\n')
+ (Comment.Multiline, '/*\n * comment\n */'),
+ (Text, '\n'),
+ (Comment.Single, '; comment'),
+ (Text, '\n'),
+ (Comment.Single, '// comment'),
+ (Text, '\n')
]
assert list(lexer.get_tokens(fragment)) == tokens
@@ -48,38 +48,38 @@ def test_instrument_blocks(lexer):
endin
''')
tokens = [
- (Keyword.Declaration, u'instr'),
- (Comment.Multiline, u'/**/'),
- (Name.Function, u'1'),
- (Punctuation, u','),
- (Comment.Multiline, u'/**/'),
- (Name.Function, u'N_a_M_e_'),
- (Punctuation, u','),
- (Comment.Multiline, u'/**/'),
- (Punctuation, u'+'),
- (Name.Function, u'Name'),
- (Comment.Multiline, u'/**/'),
- (Comment.Single, u'//'),
- (Text, u'\n'),
- (Text, u' '),
- (Keyword.Type, u'i'),
- (Name, u'Duration'),
- (Text, u' '),
- (Operator, u'='),
- (Text, u' '),
- (Name.Variable.Instance, u'p3'),
- (Text, u'\n'),
- (Text, u' '),
- (Name.Builtin, u'outc'),
- (Punctuation, u':'),
- (Keyword.Type, u'a'),
- (Punctuation, u'('),
- (Keyword.Type, u'a'),
- (Name, u'Signal'),
- (Punctuation, u')'),
- (Text, u'\n'),
- (Keyword.Declaration, u'endin'),
- (Text, u'\n')
+ (Keyword.Declaration, 'instr'),
+ (Comment.Multiline, '/**/'),
+ (Name.Function, '1'),
+ (Punctuation, ','),
+ (Comment.Multiline, '/**/'),
+ (Name.Function, 'N_a_M_e_'),
+ (Punctuation, ','),
+ (Comment.Multiline, '/**/'),
+ (Punctuation, '+'),
+ (Name.Function, 'Name'),
+ (Comment.Multiline, '/**/'),
+ (Comment.Single, '//'),
+ (Text, '\n'),
+ (Text, ' '),
+ (Keyword.Type, 'i'),
+ (Name, 'Duration'),
+ (Text, ' '),
+ (Operator, '='),
+ (Text, ' '),
+ (Name.Variable.Instance, 'p3'),
+ (Text, '\n'),
+ (Text, ' '),
+ (Name.Builtin, 'outc'),
+ (Punctuation, ':'),
+ (Keyword.Type, 'a'),
+ (Punctuation, '('),
+ (Keyword.Type, 'a'),
+ (Name, 'Signal'),
+ (Punctuation, ')'),
+ (Text, '\n'),
+ (Keyword.Declaration, 'endin'),
+ (Text, '\n')
]
assert list(lexer.get_tokens(fragment)) == tokens
@@ -91,22 +91,22 @@ def test_user_defined_opcodes(lexer):
endop
''')
tokens = [
- (Keyword.Declaration, u'opcode'),
- (Comment.Multiline, u'/**/'),
- (Name.Function, u'aUDO'),
- (Punctuation, u','),
- (Comment.Multiline, u'/**/'),
- (Keyword.Type, u'i[]'),
- (Punctuation, u','),
- (Comment.Multiline, u'/**/'),
- (Keyword.Type, u'aik'),
- (Comment.Single, u'//'),
- (Text, u'\n'),
- (Text, u' '),
- (Name.Function, u'aUDO'),
- (Text, u'\n'),
- (Keyword.Declaration, u'endop'),
- (Text, u'\n')
+ (Keyword.Declaration, 'opcode'),
+ (Comment.Multiline, '/**/'),
+ (Name.Function, 'aUDO'),
+ (Punctuation, ','),
+ (Comment.Multiline, '/**/'),
+ (Keyword.Type, 'i[]'),
+ (Punctuation, ','),
+ (Comment.Multiline, '/**/'),
+ (Keyword.Type, 'aik'),
+ (Comment.Single, '//'),
+ (Text, '\n'),
+ (Text, ' '),
+ (Name.Function, 'aUDO'),
+ (Text, '\n'),
+ (Keyword.Declaration, 'endop'),
+ (Text, '\n')
]
assert list(lexer.get_tokens(fragment)) == tokens
@@ -114,27 +114,27 @@ def test_user_defined_opcodes(lexer):
def test_numbers(lexer):
fragment = '123 0123456789'
tokens = [
- (Number.Integer, u'123'),
- (Text, u' '),
- (Number.Integer, u'0123456789'),
- (Text, u'\n')
+ (Number.Integer, '123'),
+ (Text, ' '),
+ (Number.Integer, '0123456789'),
+ (Text, '\n')
]
assert list(lexer.get_tokens(fragment)) == tokens
fragment = '0xabcdef0123456789 0XABCDEF'
tokens = [
- (Keyword.Type, u'0x'),
- (Number.Hex, u'abcdef0123456789'),
- (Text, u' '),
- (Keyword.Type, u'0X'),
- (Number.Hex, u'ABCDEF'),
- (Text, u'\n')
+ (Keyword.Type, '0x'),
+ (Number.Hex, 'abcdef0123456789'),
+ (Text, ' '),
+ (Keyword.Type, '0X'),
+ (Number.Hex, 'ABCDEF'),
+ (Text, '\n')
]
assert list(lexer.get_tokens(fragment)) == tokens
fragments = ['1e2', '3e+4', '5e-6', '7E8', '9E+0', '1E-2', '3.', '4.56', '.789']
for fragment in fragments:
tokens = [
(Number.Float, fragment),
- (Text, u'\n')
+ (Text, '\n')
]
assert list(lexer.get_tokens(fragment)) == tokens
@@ -142,11 +142,11 @@ def test_numbers(lexer):
def test_quoted_strings(lexer):
fragment = '"characters$MACRO."'
tokens = [
- (String, u'"'),
- (String, u'characters'),
- (Comment.Preproc, u'$MACRO.'),
- (String, u'"'),
- (Text, u'\n')
+ (String, '"'),
+ (String, 'characters'),
+ (Comment.Preproc, '$MACRO.'),
+ (String, '"'),
+ (Text, '\n')
]
assert list(lexer.get_tokens(fragment)) == tokens
@@ -158,10 +158,10 @@ def test_braced_strings(lexer):
}}
''')
tokens = [
- (String, u'{{'),
- (String, u'\ncharacters$MACRO.\n'),
- (String, u'}}'),
- (Text, u'\n')
+ (String, '{{'),
+ (String, '\ncharacters$MACRO.\n'),
+ (String, '}}'),
+ (Text, '\n')
]
assert list(lexer.get_tokens(fragment)) == tokens
@@ -171,30 +171,30 @@ def test_escape_sequences(lexer):
escapedCharacter = '\\' + character
fragment = '"' + escapedCharacter + '"'
tokens = [
- (String, u'"'),
+ (String, '"'),
(String.Escape, escapedCharacter),
- (String, u'"'),
- (Text, u'\n')
+ (String, '"'),
+ (Text, '\n')
]
assert list(lexer.get_tokens(fragment)) == tokens
fragment = '{{' + escapedCharacter + '}}'
tokens = [
- (String, u'{{'),
+ (String, '{{'),
(String.Escape, escapedCharacter),
- (String, u'}}'),
- (Text, u'\n')
+ (String, '}}'),
+ (Text, '\n')
]
assert list(lexer.get_tokens(fragment)) == tokens
def test_operators(lexer):
- fragments = ['+', '-', '~', u'¬', '!', '*', '/', '^', '%', '<<', '>>', '<', '>',
+ fragments = ['+', '-', '~', '¬', '!', '*', '/', '^', '%', '<<', '>>', '<', '>',
'<=', '>=', '==', '!=', '&', '#', '|', '&&', '||', '?', ':', '+=',
'-=', '*=', '/=']
for fragment in fragments:
tokens = [
(Operator, fragment),
- (Text, u'\n')
+ (Text, '\n')
]
assert list(lexer.get_tokens(fragment)) == tokens
@@ -203,7 +203,7 @@ def test_global_value_identifiers(lexer):
for fragment in ['0dbfs', 'A4', 'kr', 'ksmps', 'nchnls', 'nchnls_i', 'sr']:
tokens = [
(Name.Variable.Global, fragment),
- (Text, u'\n')
+ (Text, '\n')
]
assert list(lexer.get_tokens(fragment)) == tokens
@@ -214,13 +214,13 @@ def test_keywords(lexer):
for fragment in fragments:
tokens = [
(Keyword, fragment),
- (Text, u'\n')
+ (Text, '\n')
]
assert list(lexer.get_tokens(fragment)) == tokens
for fragment in ['return', 'rireturn']:
tokens = [
(Keyword.Pseudo, fragment),
- (Text, u'\n')
+ (Text, '\n')
]
assert list(lexer.get_tokens(fragment)) == tokens
@@ -231,13 +231,13 @@ def test_labels(lexer):
label2:
''')
tokens = [
- (Name.Label, u'aLabel'),
- (Punctuation, u':'),
- (Text, u'\n'),
- (Text, u' '),
- (Name.Label, u'label2'),
- (Punctuation, u':'),
- (Text, u'\n')
+ (Name.Label, 'aLabel'),
+ (Punctuation, ':'),
+ (Text, '\n'),
+ (Text, ' '),
+ (Name.Label, 'label2'),
+ (Punctuation, ':'),
+ (Text, '\n')
]
assert list(lexer.get_tokens(fragment)) == tokens
@@ -251,11 +251,11 @@ def test_printks_and_prints_escape_sequences(lexer):
fragment = opcode + ' "' + escapedCharacter + '"'
tokens = [
(Name.Builtin, opcode),
- (Text, u' '),
- (String, u'"'),
+ (Text, ' '),
+ (String, '"'),
(String.Escape, escapedCharacter),
- (String, u'"'),
- (Text, u'\n')
+ (String, '"'),
+ (Text, '\n')
]
assert list(lexer.get_tokens(fragment)) == tokens
@@ -265,64 +265,64 @@ def test_goto_statements(lexer):
fragment = keyword + ' aLabel'
tokens = [
(Keyword, keyword),
- (Text, u' '),
- (Name.Label, u'aLabel'),
- (Text, u'\n')
+ (Text, ' '),
+ (Name.Label, 'aLabel'),
+ (Text, '\n')
]
assert list(lexer.get_tokens(fragment)) == tokens
for opcode in ['reinit', 'rigoto', 'tigoto']:
fragment = opcode + ' aLabel'
tokens = [
(Keyword.Pseudo, opcode),
- (Text, u' '),
- (Name.Label, u'aLabel'),
- (Text, u'\n')
+ (Text, ' '),
+ (Name.Label, 'aLabel'),
+ (Text, '\n')
]
assert list(lexer.get_tokens(fragment)) == tokens
for opcode in ['cggoto', 'cigoto', 'cingoto', 'ckgoto', 'cngoto', 'cnkgoto']:
fragment = opcode + ' 1==0, aLabel'
tokens = [
(Keyword.Pseudo, opcode),
- (Text, u' '),
- (Number.Integer, u'1'),
- (Operator, u'=='),
- (Number.Integer, u'0'),
- (Punctuation, u','),
- (Text, u' '),
- (Name.Label, u'aLabel'),
- (Text, u'\n')
+ (Text, ' '),
+ (Number.Integer, '1'),
+ (Operator, '=='),
+ (Number.Integer, '0'),
+ (Punctuation, ','),
+ (Text, ' '),
+ (Name.Label, 'aLabel'),
+ (Text, '\n')
]
assert list(lexer.get_tokens(fragment)) == tokens
fragment = 'timout 0, 0, aLabel'
tokens = [
(Keyword.Pseudo, 'timout'),
- (Text, u' '),
- (Number.Integer, u'0'),
- (Punctuation, u','),
- (Text, u' '),
- (Number.Integer, u'0'),
- (Punctuation, u','),
- (Text, u' '),
- (Name.Label, u'aLabel'),
- (Text, u'\n')
+ (Text, ' '),
+ (Number.Integer, '0'),
+ (Punctuation, ','),
+ (Text, ' '),
+ (Number.Integer, '0'),
+ (Punctuation, ','),
+ (Text, ' '),
+ (Name.Label, 'aLabel'),
+ (Text, '\n')
]
assert list(lexer.get_tokens(fragment)) == tokens
for opcode in ['loop_ge', 'loop_gt', 'loop_le', 'loop_lt']:
fragment = opcode + ' 0, 0, 0, aLabel'
tokens = [
(Keyword.Pseudo, opcode),
- (Text, u' '),
- (Number.Integer, u'0'),
- (Punctuation, u','),
- (Text, u' '),
- (Number.Integer, u'0'),
- (Punctuation, u','),
- (Text, u' '),
- (Number.Integer, u'0'),
- (Punctuation, u','),
- (Text, u' '),
- (Name.Label, u'aLabel'),
- (Text, u'\n')
+ (Text, ' '),
+ (Number.Integer, '0'),
+ (Punctuation, ','),
+ (Text, ' '),
+ (Number.Integer, '0'),
+ (Punctuation, ','),
+ (Text, ' '),
+ (Number.Integer, '0'),
+ (Punctuation, ','),
+ (Text, ' '),
+ (Name.Label, 'aLabel'),
+ (Text, '\n')
]
assert list(lexer.get_tokens(fragment)) == tokens
@@ -331,10 +331,10 @@ def test_include_directives(lexer):
for character in ['"', '|']:
fragment = '#include/**/' + character + 'file.udo' + character
tokens = [
- (Comment.Preproc, u'#include'),
- (Comment.Multiline, u'/**/'),
- (String, character + u'file.udo' + character),
- (Text, u'\n')
+ (Comment.Preproc, '#include'),
+ (Comment.Multiline, '/**/'),
+ (String, character + 'file.udo' + character),
+ (Text, '\n')
]
assert list(lexer.get_tokens(fragment)) == tokens
@@ -342,13 +342,13 @@ def test_include_directives(lexer):
def test_includestr_directives(lexer):
fragment = '#includestr/**/"$MACRO..udo"'
tokens = [
- (Comment.Preproc, u'#includestr'),
- (Comment.Multiline, u'/**/'),
- (String, u'"'),
- (Comment.Preproc, u'$MACRO.'),
- (String, u'.udo'),
- (String, u'"'),
- (Text, u'\n')
+ (Comment.Preproc, '#includestr'),
+ (Comment.Multiline, '/**/'),
+ (String, '"'),
+ (Comment.Preproc, '$MACRO.'),
+ (String, '.udo'),
+ (String, '"'),
+ (Text, '\n')
]
assert list(lexer.get_tokens(fragment)) == tokens
@@ -362,25 +362,25 @@ def test_object_like_macro_definitions(lexer):
body\\##
''')
tokens = [
- (Comment.Preproc, u'# \tdefine'),
- (Text, u' '),
- (Comment.Preproc, u'MACRO'),
- (Punctuation, u'#'),
- (Comment.Preproc, u'macro_body'),
- (Punctuation, u'#'),
- (Text, u'\n'),
- (Comment.Preproc, u'#define'),
- (Comment.Multiline, u'/**/'),
- (Text, u'\n'),
- (Comment.Preproc, u'MACRO'),
- (Comment.Multiline, u'/**/'),
- (Text, u'\n'),
- (Punctuation, u'#'),
- (Comment.Preproc, u'\\#'),
- (Comment.Preproc, u'macro\nbody'),
- (Comment.Preproc, u'\\#'),
- (Punctuation, u'#'),
- (Text, u'\n')
+ (Comment.Preproc, '# \tdefine'),
+ (Text, ' '),
+ (Comment.Preproc, 'MACRO'),
+ (Punctuation, '#'),
+ (Comment.Preproc, 'macro_body'),
+ (Punctuation, '#'),
+ (Text, '\n'),
+ (Comment.Preproc, '#define'),
+ (Comment.Multiline, '/**/'),
+ (Text, '\n'),
+ (Comment.Preproc, 'MACRO'),
+ (Comment.Multiline, '/**/'),
+ (Text, '\n'),
+ (Punctuation, '#'),
+ (Comment.Preproc, '\\#'),
+ (Comment.Preproc, 'macro\nbody'),
+ (Comment.Preproc, '\\#'),
+ (Punctuation, '#'),
+ (Text, '\n')
]
assert list(lexer.get_tokens(fragment)) == tokens
@@ -394,39 +394,39 @@ def test_function_like_macro_definitions(lexer):
body\\##
''')
tokens = [
- (Comment.Preproc, u'#define'),
- (Text, u' '),
- (Comment.Preproc, u'MACRO'),
- (Punctuation, u'('),
- (Comment.Preproc, u'ARG1'),
- (Punctuation, u'#'),
- (Comment.Preproc, u'ARG2'),
- (Punctuation, u')'),
- (Text, u' '),
- (Punctuation, u'#'),
- (Comment.Preproc, u'macro_body'),
- (Punctuation, u'#'),
- (Text, u'\n'),
- (Comment.Preproc, u'#define'),
- (Comment.Multiline, u'/**/'),
- (Text, u'\n'),
- (Comment.Preproc, u'MACRO'),
- (Punctuation, u'('),
- (Comment.Preproc, u'ARG1'),
- (Punctuation, u"'"),
- (Comment.Preproc, u'ARG2'),
- (Punctuation, u"'"),
- (Text, u' '),
- (Comment.Preproc, u'ARG3'),
- (Punctuation, u')'),
- (Comment.Multiline, u'/**/'),
- (Text, u'\n'),
- (Punctuation, u'#'),
- (Comment.Preproc, u'\\#'),
- (Comment.Preproc, u'macro\nbody'),
- (Comment.Preproc, u'\\#'),
- (Punctuation, u'#'),
- (Text, u'\n')
+ (Comment.Preproc, '#define'),
+ (Text, ' '),
+ (Comment.Preproc, 'MACRO'),
+ (Punctuation, '('),
+ (Comment.Preproc, 'ARG1'),
+ (Punctuation, '#'),
+ (Comment.Preproc, 'ARG2'),
+ (Punctuation, ')'),
+ (Text, ' '),
+ (Punctuation, '#'),
+ (Comment.Preproc, 'macro_body'),
+ (Punctuation, '#'),
+ (Text, '\n'),
+ (Comment.Preproc, '#define'),
+ (Comment.Multiline, '/**/'),
+ (Text, '\n'),
+ (Comment.Preproc, 'MACRO'),
+ (Punctuation, '('),
+ (Comment.Preproc, 'ARG1'),
+ (Punctuation, "'"),
+ (Comment.Preproc, 'ARG2'),
+ (Punctuation, "'"),
+ (Text, ' '),
+ (Comment.Preproc, 'ARG3'),
+ (Punctuation, ')'),
+ (Comment.Multiline, '/**/'),
+ (Text, '\n'),
+ (Punctuation, '#'),
+ (Comment.Preproc, '\\#'),
+ (Comment.Preproc, 'macro\nbody'),
+ (Comment.Preproc, '\\#'),
+ (Punctuation, '#'),
+ (Text, '\n')
]
assert list(lexer.get_tokens(fragment)) == tokens
@@ -436,9 +436,9 @@ def test_macro_preprocessor_directives(lexer):
fragment = directive + ' MACRO'
tokens = [
(Comment.Preproc, directive),
- (Text, u' '),
- (Comment.Preproc, u'MACRO'),
- (Text, u'\n')
+ (Text, ' '),
+ (Comment.Preproc, 'MACRO'),
+ (Text, '\n')
]
assert list(lexer.get_tokens(fragment)) == tokens
@@ -453,18 +453,18 @@ def test_other_preprocessor_directives(lexer):
@@ \t67890
''')
tokens = [
- (Comment.Preproc, u'#else'),
- (Text, u'\n'),
- (Comment.Preproc, u'#end'),
- (Text, u'\n'),
- (Comment.Preproc, u'#endif'),
- (Text, u'\n'),
- (Comment.Preproc, u'###'),
- (Text, u'\n'),
- (Comment.Preproc, u'@ \t12345'),
- (Text, u'\n'),
- (Comment.Preproc, u'@@ \t67890'),
- (Text, u'\n')
+ (Comment.Preproc, '#else'),
+ (Text, '\n'),
+ (Comment.Preproc, '#end'),
+ (Text, '\n'),
+ (Comment.Preproc, '#endif'),
+ (Text, '\n'),
+ (Comment.Preproc, '###'),
+ (Text, '\n'),
+ (Comment.Preproc, '@ \t12345'),
+ (Text, '\n'),
+ (Comment.Preproc, '@@ \t67890'),
+ (Text, '\n')
]
assert list(lexer.get_tokens(fragment)) == tokens
@@ -472,42 +472,42 @@ def test_other_preprocessor_directives(lexer):
def test_function_like_macros(lexer):
fragment = "$MACRO.(((x#y\\)))' \"(#'x)\\)x\\))\"# {{x\\))x)\\)(#'}});"
tokens = [
- (Comment.Preproc, u'$MACRO.'),
- (Punctuation, u'('),
- (Comment.Preproc, u'('),
- (Comment.Preproc, u'('),
- (Comment.Preproc, u'x#y\\)'),
- (Comment.Preproc, u')'),
- (Comment.Preproc, u')'),
- (Punctuation, u"'"),
- (Comment.Preproc, u' '),
- (String, u'"'),
- (Error, u'('),
- (Error, u'#'),
- (Error, u"'"),
- (String, u'x'),
- (Error, u')'),
- (Comment.Preproc, u'\\)'),
- (String, u'x'),
- (Comment.Preproc, u'\\)'),
- (Error, u')'),
- (String, u'"'),
- (Punctuation, u'#'),
- (Comment.Preproc, u' '),
- (String, u'{{'),
- (String, u'x'),
- (Comment.Preproc, u'\\)'),
- (Error, u')'),
- (String, u'x'),
- (Error, u')'),
- (Comment.Preproc, u'\\)'),
- (Error, u'('),
- (Error, u'#'),
- (Error, u"'"),
- (String, u'}}'),
- (Punctuation, u')'),
- (Comment.Single, u';'),
- (Text, u'\n')
+ (Comment.Preproc, '$MACRO.'),
+ (Punctuation, '('),
+ (Comment.Preproc, '('),
+ (Comment.Preproc, '('),
+ (Comment.Preproc, 'x#y\\)'),
+ (Comment.Preproc, ')'),
+ (Comment.Preproc, ')'),
+ (Punctuation, "'"),
+ (Comment.Preproc, ' '),
+ (String, '"'),
+ (Error, '('),
+ (Error, '#'),
+ (Error, "'"),
+ (String, 'x'),
+ (Error, ')'),
+ (Comment.Preproc, '\\)'),
+ (String, 'x'),
+ (Comment.Preproc, '\\)'),
+ (Error, ')'),
+ (String, '"'),
+ (Punctuation, '#'),
+ (Comment.Preproc, ' '),
+ (String, '{{'),
+ (String, 'x'),
+ (Comment.Preproc, '\\)'),
+ (Error, ')'),
+ (String, 'x'),
+ (Error, ')'),
+ (Comment.Preproc, '\\)'),
+ (Error, '('),
+ (Error, '#'),
+ (Error, "'"),
+ (String, '}}'),
+ (Punctuation, ')'),
+ (Comment.Single, ';'),
+ (Text, '\n')
]
assert list(lexer.get_tokens(fragment)) == tokens
diff --git a/tests/test_data.py b/tests/test_data.py
index 9724d235..22d4ee79 100644
--- a/tests/test_data.py
+++ b/tests/test_data.py
@@ -29,29 +29,29 @@ def lexer_yaml():
def test_basic_json(lexer_json):
- fragment = u'{"foo": "bar", "foo2": [1, 2, 3]}\n'
+ fragment = '{"foo": "bar", "foo2": [1, 2, 3]}\n'
tokens = [
- (Token.Punctuation, u'{'),
- (Token.Name.Tag, u'"foo"'),
- (Token.Punctuation, u':'),
- (Token.Text, u' '),
- (Token.Literal.String.Double, u'"bar"'),
- (Token.Punctuation, u','),
- (Token.Text, u' '),
- (Token.Name.Tag, u'"foo2"'),
- (Token.Punctuation, u':'),
- (Token.Text, u' '),
- (Token.Punctuation, u'['),
- (Token.Literal.Number.Integer, u'1'),
- (Token.Punctuation, u','),
- (Token.Text, u' '),
- (Token.Literal.Number.Integer, u'2'),
- (Token.Punctuation, u','),
- (Token.Text, u' '),
- (Token.Literal.Number.Integer, u'3'),
- (Token.Punctuation, u']'),
- (Token.Punctuation, u'}'),
- (Token.Text, u'\n'),
+ (Token.Punctuation, '{'),
+ (Token.Name.Tag, '"foo"'),
+ (Token.Punctuation, ':'),
+ (Token.Text, ' '),
+ (Token.Literal.String.Double, '"bar"'),
+ (Token.Punctuation, ','),
+ (Token.Text, ' '),
+ (Token.Name.Tag, '"foo2"'),
+ (Token.Punctuation, ':'),
+ (Token.Text, ' '),
+ (Token.Punctuation, '['),
+ (Token.Literal.Number.Integer, '1'),
+ (Token.Punctuation, ','),
+ (Token.Text, ' '),
+ (Token.Literal.Number.Integer, '2'),
+ (Token.Punctuation, ','),
+ (Token.Text, ' '),
+ (Token.Literal.Number.Integer, '3'),
+ (Token.Punctuation, ']'),
+ (Token.Punctuation, '}'),
+ (Token.Text, '\n'),
]
assert list(lexer_json.get_tokens(fragment)) == tokens
@@ -62,7 +62,7 @@ def test_json_escape_backtracking(lexer_json):
# this test will hang and that's how we know it's broken :(
fragment = r'{"\u00D0000\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\63CD'
tokens = (
- [(Token.Punctuation, u'{'),
+ [(Token.Punctuation, '{'),
(Token.Error, r'"'),
(Token.Error, '\\'),
(Token.Error, r'u'),
@@ -87,27 +87,27 @@ def test_json_escape_backtracking(lexer_json):
def test_basic_bare(lexer_bare):
# This is the same as testBasic for JsonLexer above, except the
# enclosing curly braces are removed.
- fragment = u'"foo": "bar", "foo2": [1, 2, 3]\n'
+ fragment = '"foo": "bar", "foo2": [1, 2, 3]\n'
tokens = [
- (Token.Name.Tag, u'"foo"'),
- (Token.Punctuation, u':'),
- (Token.Text, u' '),
- (Token.Literal.String.Double, u'"bar"'),
- (Token.Punctuation, u','),
- (Token.Text, u' '),
- (Token.Name.Tag, u'"foo2"'),
- (Token.Punctuation, u':'),
- (Token.Text, u' '),
- (Token.Punctuation, u'['),
- (Token.Literal.Number.Integer, u'1'),
- (Token.Punctuation, u','),
- (Token.Text, u' '),
- (Token.Literal.Number.Integer, u'2'),
- (Token.Punctuation, u','),
- (Token.Text, u' '),
- (Token.Literal.Number.Integer, u'3'),
- (Token.Punctuation, u']'),
- (Token.Text, u'\n'),
+ (Token.Name.Tag, '"foo"'),
+ (Token.Punctuation, ':'),
+ (Token.Text, ' '),
+ (Token.Literal.String.Double, '"bar"'),
+ (Token.Punctuation, ','),
+ (Token.Text, ' '),
+ (Token.Name.Tag, '"foo2"'),
+ (Token.Punctuation, ':'),
+ (Token.Text, ' '),
+ (Token.Punctuation, '['),
+ (Token.Literal.Number.Integer, '1'),
+ (Token.Punctuation, ','),
+ (Token.Text, ' '),
+ (Token.Literal.Number.Integer, '2'),
+ (Token.Punctuation, ','),
+ (Token.Text, ' '),
+ (Token.Literal.Number.Integer, '3'),
+ (Token.Punctuation, ']'),
+ (Token.Text, '\n'),
]
assert list(lexer_bare.get_tokens(fragment)) == tokens
@@ -139,14 +139,14 @@ def test_closing_curly_in_value(lexer_bare):
def test_yaml(lexer_yaml):
# Bug #1528: This previously parsed 'token # innocent' as a tag
- fragment = u'here: token # innocent: comment\n'
+ fragment = 'here: token # innocent: comment\n'
tokens = [
- (Token.Name.Tag, u'here'),
- (Token.Punctuation, u':'),
- (Token.Text, u' '),
- (Token.Literal.Scalar.Plain, u'token'),
- (Token.Text, u' '),
- (Token.Comment.Single, u'# innocent: comment'),
- (Token.Text, u'\n'),
+ (Token.Name.Tag, 'here'),
+ (Token.Punctuation, ':'),
+ (Token.Text, ' '),
+ (Token.Literal.Scalar.Plain, 'token'),
+ (Token.Text, ' '),
+ (Token.Comment.Single, '# innocent: comment'),
+ (Token.Text, '\n'),
]
assert list(lexer_yaml.get_tokens(fragment)) == tokens
diff --git a/tests/test_examplefiles.py b/tests/test_examplefiles.py
index 22b5ced0..25b355ec 100644
--- a/tests/test_examplefiles.py
+++ b/tests/test_examplefiles.py
@@ -101,8 +101,8 @@ def test_examplefile(filename):
text = text.strip(b'\n') + b'\n'
try:
text = text.decode('utf-8')
- if text.startswith(u'\ufeff'):
- text = text[len(u'\ufeff'):]
+ if text.startswith('\ufeff'):
+ text = text[len('\ufeff'):]
except UnicodeError:
text = text.decode('latin1')
ntext = []
@@ -113,13 +113,13 @@ def test_examplefile(filename):
ntext.append(val)
assert type != Error, \
'lexer %s generated error token for %s: %r at position %d' % \
- (lx, absfn, val, len(u''.join(ntext)))
+ (lx, absfn, val, len(''.join(ntext)))
tokens.append((type, val))
t2 = time.time()
STATS[os.path.basename(absfn)] = (len(text),
1000 * (t2 - t1), 1000 * (t2 - t1) / len(text))
- if u''.join(ntext) != text:
- print('\n'.join(difflib.unified_diff(u''.join(ntext).splitlines(),
+ if ''.join(ntext) != text:
+ print('\n'.join(difflib.unified_diff(''.join(ntext).splitlines(),
text.splitlines())))
raise AssertionError('round trip failed for ' + absfn)
diff --git a/tests/test_ezhil.py b/tests/test_ezhil.py
index 8047a30a..beca4c65 100644
--- a/tests/test_ezhil.py
+++ b/tests/test_ezhil.py
@@ -19,71 +19,71 @@ def lexer():
def test_sum(lexer):
- fragment = u'1+3\n'
+ fragment = '1+3\n'
tokens = [
- (Number.Integer, u'1'),
- (Operator, u'+'),
- (Number.Integer, u'3'),
- (Text, u'\n'),
+ (Number.Integer, '1'),
+ (Operator, '+'),
+ (Number.Integer, '3'),
+ (Text, '\n'),
]
assert list(lexer.get_tokens(fragment)) == tokens
def test_gcd_expr(lexer):
- fragment = u'1^3+(5-5)*gcd(a,b)\n'
+ fragment = '1^3+(5-5)*gcd(a,b)\n'
tokens = [
- (Token.Number.Integer, u'1'),
- (Token.Operator, u'^'),
- (Token.Literal.Number.Integer, u'3'),
- (Token.Operator, u'+'),
- (Token.Punctuation, u'('),
- (Token.Literal.Number.Integer, u'5'),
- (Token.Operator, u'-'),
- (Token.Literal.Number.Integer, u'5'),
- (Token.Punctuation, u')'),
- (Token.Operator, u'*'),
- (Token.Name, u'gcd'),
- (Token.Punctuation, u'('),
- (Token.Name, u'a'),
- (Token.Operator, u','),
- (Token.Name, u'b'),
- (Token.Punctuation, u')'),
- (Token.Text, u'\n')
+ (Token.Number.Integer, '1'),
+ (Token.Operator, '^'),
+ (Token.Literal.Number.Integer, '3'),
+ (Token.Operator, '+'),
+ (Token.Punctuation, '('),
+ (Token.Literal.Number.Integer, '5'),
+ (Token.Operator, '-'),
+ (Token.Literal.Number.Integer, '5'),
+ (Token.Punctuation, ')'),
+ (Token.Operator, '*'),
+ (Token.Name, 'gcd'),
+ (Token.Punctuation, '('),
+ (Token.Name, 'a'),
+ (Token.Operator, ','),
+ (Token.Name, 'b'),
+ (Token.Punctuation, ')'),
+ (Token.Text, '\n')
]
assert list(lexer.get_tokens(fragment)) == tokens
def test_if_statement(lexer):
- fragment = u"""@( 0 > 3 ) ஆனால்
+ fragment = """@( 0 > 3 ) ஆனால்
பதிப்பி "wont print"
முடி"""
tokens = [
- (Token.Operator, u'@'),
- (Token.Punctuation, u'('),
- (Token.Text, u' '),
- (Token.Literal.Number.Integer, u'0'),
- (Token.Text, u' '),
- (Token.Operator, u'>'),
- (Token.Text, u' '),
- (Token.Literal.Number.Integer, u'3'),
- (Token.Text, u' '),
- (Token.Punctuation, u')'),
- (Token.Text, u' '),
- (Token.Keyword, u'ஆனால்'),
- (Token.Text, u'\n'),
- (Token.Text, u' '),
- (Token.Keyword, u'பதிப்பி'),
- (Token.Text, u' '),
- (Token.Literal.String, u'"wont print"'),
- (Token.Text, u'\n'),
- (Token.Keyword, u'முடி'),
- (Token.Text, u'\n')
+ (Token.Operator, '@'),
+ (Token.Punctuation, '('),
+ (Token.Text, ' '),
+ (Token.Literal.Number.Integer, '0'),
+ (Token.Text, ' '),
+ (Token.Operator, '>'),
+ (Token.Text, ' '),
+ (Token.Literal.Number.Integer, '3'),
+ (Token.Text, ' '),
+ (Token.Punctuation, ')'),
+ (Token.Text, ' '),
+ (Token.Keyword, 'ஆனால்'),
+ (Token.Text, '\n'),
+ (Token.Text, ' '),
+ (Token.Keyword, 'பதிப்பி'),
+ (Token.Text, ' '),
+ (Token.Literal.String, '"wont print"'),
+ (Token.Text, '\n'),
+ (Token.Keyword, 'முடி'),
+ (Token.Text, '\n')
]
assert list(lexer.get_tokens(fragment)) == tokens
def test_function(lexer):
- fragment = u"""# (C) முத்தையா அண்ணாமலை 2013, 2015
+ fragment = """# (C) முத்தையா அண்ணாமலை 2013, 2015
நிரல்பாகம் gcd ( x, y )
மு = max(x,y)
q = min(x,y)
@@ -95,83 +95,83 @@ def test_function(lexer):
முடி\n"""
tokens = [
(Token.Comment.Single,
- u'# (C) \u0bae\u0bc1\u0ba4\u0bcd\u0ba4\u0bc8\u0baf\u0bbe \u0b85'
- u'\u0ba3\u0bcd\u0ba3\u0bbe\u0bae\u0bb2\u0bc8 2013, 2015\n'),
- (Token.Keyword, u'நிரல்பாகம்'),
- (Token.Text, u' '),
- (Token.Name, u'gcd'),
- (Token.Text, u' '),
- (Token.Punctuation, u'('),
- (Token.Text, u' '),
- (Token.Name, u'x'),
- (Token.Operator, u','),
- (Token.Text, u' '),
- (Token.Name, u'y'),
- (Token.Text, u' '),
- (Token.Punctuation, u')'),
- (Token.Text, u'\n'),
- (Token.Name, u'\u0bae\u0bc1'),
- (Token.Text, u' '),
- (Token.Operator, u'='),
- (Token.Text, u' '),
- (Token.Name.Builtin, u'max'),
- (Token.Punctuation, u'('),
- (Token.Name, u'x'),
- (Token.Operator, u','),
- (Token.Name, u'y'),
- (Token.Punctuation, u')'),
- (Token.Text, u'\n'),
- (Token.Text, u' '),
- (Token.Name, u'q'),
- (Token.Text, u' '),
- (Token.Operator, u'='),
- (Token.Text, u' '),
- (Token.Name.Builtin, u'min'),
- (Token.Punctuation, u'('),
- (Token.Name, u'x'),
- (Token.Operator, u','),
- (Token.Name, u'y'),
- (Token.Punctuation, u')'),
- (Token.Text, u'\n'),
- (Token.Text, u'\n'),
- (Token.Operator, u'@'),
- (Token.Punctuation, u'('),
- (Token.Text, u' '),
- (Token.Name, u'q'),
- (Token.Text, u' '),
- (Token.Operator, u'=='),
- (Token.Text, u' '),
- (Token.Literal.Number.Integer, u'0'),
- (Token.Text, u' '),
- (Token.Punctuation, u')'),
- (Token.Text, u' '),
- (Token.Keyword, u'ஆனால்'),
- (Token.Text, u'\n'),
- (Token.Text, u' '),
- (Token.Keyword, u'பின்கொடு'),
- (Token.Text, u' '),
- (Token.Name, u'\u0bae\u0bc1'),
- (Token.Text, u'\n'),
- (Token.Keyword, u'முடி'),
- (Token.Text, u'\n'),
- (Token.Keyword, u'\u0baa\u0bbf\u0ba9\u0bcd\u0b95\u0bca\u0b9f\u0bc1'),
- (Token.Text, u' '),
- (Token.Name, u'gcd'),
- (Token.Punctuation, u'('),
- (Token.Text, u' '),
- (Token.Name, u'\u0bae\u0bc1'),
- (Token.Text, u' '),
- (Token.Operator, u'-'),
- (Token.Text, u' '),
- (Token.Name, u'q'),
- (Token.Text, u' '),
- (Token.Operator, u','),
- (Token.Text, u' '),
- (Token.Name, u'q'),
- (Token.Text, u' '),
- (Token.Punctuation, u')'),
- (Token.Text, u'\n'),
- (Token.Keyword, u'முடி'), # u'\u0bae\u0bc1\u0b9f\u0bbf'),
- (Token.Text, u'\n')
+ '# (C) \u0bae\u0bc1\u0ba4\u0bcd\u0ba4\u0bc8\u0baf\u0bbe \u0b85'
+ '\u0ba3\u0bcd\u0ba3\u0bbe\u0bae\u0bb2\u0bc8 2013, 2015\n'),
+ (Token.Keyword, 'நிரல்பாகம்'),
+ (Token.Text, ' '),
+ (Token.Name, 'gcd'),
+ (Token.Text, ' '),
+ (Token.Punctuation, '('),
+ (Token.Text, ' '),
+ (Token.Name, 'x'),
+ (Token.Operator, ','),
+ (Token.Text, ' '),
+ (Token.Name, 'y'),
+ (Token.Text, ' '),
+ (Token.Punctuation, ')'),
+ (Token.Text, '\n'),
+ (Token.Name, '\u0bae\u0bc1'),
+ (Token.Text, ' '),
+ (Token.Operator, '='),
+ (Token.Text, ' '),
+ (Token.Name.Builtin, 'max'),
+ (Token.Punctuation, '('),
+ (Token.Name, 'x'),
+ (Token.Operator, ','),
+ (Token.Name, 'y'),
+ (Token.Punctuation, ')'),
+ (Token.Text, '\n'),
+ (Token.Text, ' '),
+ (Token.Name, 'q'),
+ (Token.Text, ' '),
+ (Token.Operator, '='),
+ (Token.Text, ' '),
+ (Token.Name.Builtin, 'min'),
+ (Token.Punctuation, '('),
+ (Token.Name, 'x'),
+ (Token.Operator, ','),
+ (Token.Name, 'y'),
+ (Token.Punctuation, ')'),
+ (Token.Text, '\n'),
+ (Token.Text, '\n'),
+ (Token.Operator, '@'),
+ (Token.Punctuation, '('),
+ (Token.Text, ' '),
+ (Token.Name, 'q'),
+ (Token.Text, ' '),
+ (Token.Operator, '=='),
+ (Token.Text, ' '),
+ (Token.Literal.Number.Integer, '0'),
+ (Token.Text, ' '),
+ (Token.Punctuation, ')'),
+ (Token.Text, ' '),
+ (Token.Keyword, 'ஆனால்'),
+ (Token.Text, '\n'),
+ (Token.Text, ' '),
+ (Token.Keyword, 'பின்கொடு'),
+ (Token.Text, ' '),
+ (Token.Name, '\u0bae\u0bc1'),
+ (Token.Text, '\n'),
+ (Token.Keyword, 'முடி'),
+ (Token.Text, '\n'),
+ (Token.Keyword, '\u0baa\u0bbf\u0ba9\u0bcd\u0b95\u0bca\u0b9f\u0bc1'),
+ (Token.Text, ' '),
+ (Token.Name, 'gcd'),
+ (Token.Punctuation, '('),
+ (Token.Text, ' '),
+ (Token.Name, '\u0bae\u0bc1'),
+ (Token.Text, ' '),
+ (Token.Operator, '-'),
+ (Token.Text, ' '),
+ (Token.Name, 'q'),
+ (Token.Text, ' '),
+ (Token.Operator, ','),
+ (Token.Text, ' '),
+ (Token.Name, 'q'),
+ (Token.Text, ' '),
+ (Token.Punctuation, ')'),
+ (Token.Text, '\n'),
+ (Token.Keyword, 'முடி'), # '\u0bae\u0bc1\u0b9f\u0bbf'),
+ (Token.Text, '\n')
]
assert list(lexer.get_tokens(fragment)) == tokens
diff --git a/tests/test_grammar_notation.py b/tests/test_grammar_notation.py
index 0d7e6865..9db46e62 100644
--- a/tests/test_grammar_notation.py
+++ b/tests/test_grammar_notation.py
@@ -19,21 +19,21 @@ def lexer_peg():
def test_peg_basic(lexer_peg):
- fragment = u'rule<-("terminal"/nonterminal/[cls])*\n'
+ fragment = 'rule<-("terminal"/nonterminal/[cls])*\n'
tokens = [
- (Token.Name.Class, u'rule'),
- (Token.Operator, u'<-'),
- (Token.Punctuation, u'('),
- (Token.String.Double, u'"terminal"'),
- (Token.Operator, u'/'),
- (Token.Name.Class, u'nonterminal'),
- (Token.Operator, u'/'),
- (Token.Punctuation, u'['),
- (Token.String, u'cls'),
- (Token.Punctuation, u']'),
- (Token.Punctuation, u')'),
- (Token.Operator, u'*'),
- (Token.Text, u'\n'),
+ (Token.Name.Class, 'rule'),
+ (Token.Operator, '<-'),
+ (Token.Punctuation, '('),
+ (Token.String.Double, '"terminal"'),
+ (Token.Operator, '/'),
+ (Token.Name.Class, 'nonterminal'),
+ (Token.Operator, '/'),
+ (Token.Punctuation, '['),
+ (Token.String, 'cls'),
+ (Token.Punctuation, ']'),
+ (Token.Punctuation, ')'),
+ (Token.Operator, '*'),
+ (Token.Text, '\n'),
]
assert list(lexer_peg.get_tokens(fragment)) == tokens
@@ -42,31 +42,31 @@ def test_peg_operators(lexer_peg):
# see for example:
# - https://github.com/gvanrossum/pegen
# - https://nim-lang.org/docs/pegs.html
- fragment = u"rule = 'a' | 'b'\n"
+ fragment = "rule = 'a' | 'b'\n"
tokens = [
- (Token.Name.Class, u'rule'),
- (Token.Text, u' '),
- (Token.Operator, u'='),
- (Token.Text, u' '),
- (Token.String.Single, u"'a'"),
- (Token.Text, u' '),
- (Token.Operator, u'|'),
- (Token.Text, u' '),
- (Token.String.Single, u"'b'"),
- (Token.Text, u'\n'),
+ (Token.Name.Class, 'rule'),
+ (Token.Text, ' '),
+ (Token.Operator, '='),
+ (Token.Text, ' '),
+ (Token.String.Single, "'a'"),
+ (Token.Text, ' '),
+ (Token.Operator, '|'),
+ (Token.Text, ' '),
+ (Token.String.Single, "'b'"),
+ (Token.Text, '\n'),
]
assert list(lexer_peg.get_tokens(fragment)) == tokens
- fragment = u"rule: 'a' ~ 'b'\n"
+ fragment = "rule: 'a' ~ 'b'\n"
tokens = [
- (Token.Name.Class, u'rule'),
- (Token.Operator, u':'),
- (Token.Text, u' '),
- (Token.String.Single, u"'a'"),
- (Token.Text, u' '),
- (Token.Operator, u'~'),
- (Token.Text, u' '),
- (Token.String.Single, u"'b'"),
- (Token.Text, u'\n'),
+ (Token.Name.Class, 'rule'),
+ (Token.Operator, ':'),
+ (Token.Text, ' '),
+ (Token.String.Single, "'a'"),
+ (Token.Text, ' '),
+ (Token.Operator, '~'),
+ (Token.Text, ' '),
+ (Token.String.Single, "'b'"),
+ (Token.Text, '\n'),
]
assert list(lexer_peg.get_tokens(fragment)) == tokens
@@ -76,19 +76,19 @@ def test_peg_modified_strings(lexer_peg):
# - http://textx.github.io/Arpeggio/
# - https://nim-lang.org/docs/pegs.html
# - https://github.com/erikrose/parsimonious
- fragment = u'~"regex" i"insensitive" "multimod"ilx ("not modified")\n'
+ fragment = '~"regex" i"insensitive" "multimod"ilx ("not modified")\n'
tokens = [
# can't handle parsimonious-style regex while ~ is a cut operator
- (Token.Operator, u'~'),
- (Token.String.Double, u'"regex"'),
- (Token.Text, u' '),
- (Token.String.Double, u'i"insensitive"'),
- (Token.Text, u' '),
- (Token.String.Double, u'"multimod"ilx'),
- (Token.Text, u' '),
- (Token.Punctuation, u'('),
- (Token.String.Double, u'"not modified"'),
- (Token.Punctuation, u')'),
- (Token.Text, u'\n'),
+ (Token.Operator, '~'),
+ (Token.String.Double, '"regex"'),
+ (Token.Text, ' '),
+ (Token.String.Double, 'i"insensitive"'),
+ (Token.Text, ' '),
+ (Token.String.Double, '"multimod"ilx'),
+ (Token.Text, ' '),
+ (Token.Punctuation, '('),
+ (Token.String.Double, '"not modified"'),
+ (Token.Punctuation, ')'),
+ (Token.Text, '\n'),
]
assert list(lexer_peg.get_tokens(fragment)) == tokens
diff --git a/tests/test_html_formatter.py b/tests/test_html_formatter.py
index 0a1b7a9a..7a1c563c 100644
--- a/tests/test_html_formatter.py
+++ b/tests/test_html_formatter.py
@@ -214,9 +214,9 @@ def test_get_background_style_defs_uses_multiple_css_prefixes():
def test_unicode_options():
- fmt = HtmlFormatter(title=u'Föö',
- cssclass=u'bär',
- cssstyles=u'div:before { content: \'bäz\' }',
+ fmt = HtmlFormatter(title='Föö',
+ cssclass='bär',
+ cssstyles='div:before { content: \'bäz\' }',
encoding='utf-8')
handle, pathname = tempfile.mkstemp('.html')
with os.fdopen(handle, 'w+b') as tfile:
diff --git a/tests/test_idris.py b/tests/test_idris.py
index 8580bde4..42dcb3cb 100644
--- a/tests/test_idris.py
+++ b/tests/test_idris.py
@@ -18,48 +18,48 @@ def lexer():
yield IdrisLexer()
def test_reserved_word(lexer):
- fragment = u'namespace Foobar\n links : String\n links = "abc"'
+ fragment = 'namespace Foobar\n links : String\n links = "abc"'
tokens = [
- (Keyword.Reserved, u'namespace'),
- (Text, u' '),
- (Keyword.Type, u'Foobar'),
- (Text, u'\n'),
- (Text, u' '),
- (Name.Function, u'links'),
- (Text, u' '),
- (Operator.Word, u':'),
- (Text, u' '),
- (Keyword.Type, u'String'),
- (Text, u'\n'),
- (Text, u' '),
- (Text, u' '),
- (Text, u'links'),
- (Text, u' '),
- (Operator.Word, u'='),
- (Text, u' '),
- (Literal.String, u'"'),
- (Literal.String, u'abc'),
- (Literal.String, u'"'),
- (Text, u'\n')
+ (Keyword.Reserved, 'namespace'),
+ (Text, ' '),
+ (Keyword.Type, 'Foobar'),
+ (Text, '\n'),
+ (Text, ' '),
+ (Name.Function, 'links'),
+ (Text, ' '),
+ (Operator.Word, ':'),
+ (Text, ' '),
+ (Keyword.Type, 'String'),
+ (Text, '\n'),
+ (Text, ' '),
+ (Text, ' '),
+ (Text, 'links'),
+ (Text, ' '),
+ (Operator.Word, '='),
+ (Text, ' '),
+ (Literal.String, '"'),
+ (Literal.String, 'abc'),
+ (Literal.String, '"'),
+ (Text, '\n')
]
assert list(lexer.get_tokens(fragment)) == tokens
def test_compiler_directive(lexer):
- fragment = u'%link C "object.o"\n%name Vect xs'
+ fragment = '%link C "object.o"\n%name Vect xs'
tokens = [
- (Keyword.Reserved, u'%link'),
- (Text, u' '),
- (Keyword.Type, u'C'),
- (Text, u' '),
- (Literal.String, u'"'),
- (Literal.String, u'object.o'),
- (Literal.String, u'"'),
- (Text, u'\n'),
- (Keyword.Reserved, u'%name'),
- (Text, u' '),
- (Keyword.Type, u'Vect'),
- (Text, u' '),
- (Text, u'xs'),
- (Text, u'\n')
+ (Keyword.Reserved, '%link'),
+ (Text, ' '),
+ (Keyword.Type, 'C'),
+ (Text, ' '),
+ (Literal.String, '"'),
+ (Literal.String, 'object.o'),
+ (Literal.String, '"'),
+ (Text, '\n'),
+ (Keyword.Reserved, '%name'),
+ (Text, ' '),
+ (Keyword.Type, 'Vect'),
+ (Text, ' '),
+ (Text, 'xs'),
+ (Text, '\n')
]
assert list(lexer.get_tokens(fragment)) == tokens
diff --git a/tests/test_irc_formatter.py b/tests/test_irc_formatter.py
index 6dc43b7d..f93bbad4 100644
--- a/tests/test_irc_formatter.py
+++ b/tests/test_irc_formatter.py
@@ -20,4 +20,4 @@ def test_correct_output():
houtfile = StringIO()
hfmt.format(tokensource, houtfile)
- assert u'\x0302lambda\x03 x: \x0302123\x03\n' == houtfile.getvalue()
+ assert '\x0302lambda\x03 x: \x0302123\x03\n' == houtfile.getvalue()
diff --git a/tests/test_java.py b/tests/test_java.py
index 467a3b72..3baec0ad 100644
--- a/tests/test_java.py
+++ b/tests/test_java.py
@@ -19,23 +19,23 @@ def lexer():
def test_enhanced_for(lexer):
- fragment = u'label:\nfor(String var2: var1) {}\n'
+ fragment = 'label:\nfor(String var2: var1) {}\n'
tokens = [
- (Name.Label, u'label:'),
- (Text, u'\n'),
- (Keyword, u'for'),
- (Punctuation, u'('),
- (Name, u'String'),
- (Text, u' '),
- (Name, u'var2'),
- (Punctuation, u':'),
- (Text, u' '),
- (Name, u'var1'),
- (Punctuation, u')'),
- (Text, u' '),
- (Punctuation, u'{'),
- (Punctuation, u'}'),
- (Text, u'\n'),
+ (Name.Label, 'label:'),
+ (Text, '\n'),
+ (Keyword, 'for'),
+ (Punctuation, '('),
+ (Name, 'String'),
+ (Text, ' '),
+ (Name, 'var2'),
+ (Punctuation, ':'),
+ (Text, ' '),
+ (Name, 'var1'),
+ (Punctuation, ')'),
+ (Text, ' '),
+ (Punctuation, '{'),
+ (Punctuation, '}'),
+ (Text, '\n'),
]
assert list(lexer.get_tokens(fragment)) == tokens
diff --git a/tests/test_julia.py b/tests/test_julia.py
index e041377b..14bcdee0 100644
--- a/tests/test_julia.py
+++ b/tests/test_julia.py
@@ -22,38 +22,38 @@ def test_unicode(lexer):
"""
Test that unicode character, √, in an expression is recognized
"""
- fragment = u's = \u221a((1/n) * sum(count .^ 2) - mu .^2)\n'
+ fragment = 's = \u221a((1/n) * sum(count .^ 2) - mu .^2)\n'
tokens = [
- (Token.Name, u's'),
- (Token.Text, u' '),
- (Token.Operator, u'='),
- (Token.Text, u' '),
- (Token.Operator, u'\u221a'),
- (Token.Punctuation, u'('),
- (Token.Punctuation, u'('),
- (Token.Literal.Number.Integer, u'1'),
- (Token.Operator, u'/'),
- (Token.Name, u'n'),
- (Token.Punctuation, u')'),
- (Token.Text, u' '),
- (Token.Operator, u'*'),
- (Token.Text, u' '),
- (Token.Name, u'sum'),
- (Token.Punctuation, u'('),
- (Token.Name, u'count'),
- (Token.Text, u' '),
- (Token.Operator, u'.^'),
- (Token.Text, u' '),
- (Token.Literal.Number.Integer, u'2'),
- (Token.Punctuation, u')'),
- (Token.Text, u' '),
- (Token.Operator, u'-'),
- (Token.Text, u' '),
- (Token.Name, u'mu'),
- (Token.Text, u' '),
- (Token.Operator, u'.^'),
- (Token.Literal.Number.Integer, u'2'),
- (Token.Punctuation, u')'),
- (Token.Text, u'\n'),
+ (Token.Name, 's'),
+ (Token.Text, ' '),
+ (Token.Operator, '='),
+ (Token.Text, ' '),
+ (Token.Operator, '\u221a'),
+ (Token.Punctuation, '('),
+ (Token.Punctuation, '('),
+ (Token.Literal.Number.Integer, '1'),
+ (Token.Operator, '/'),
+ (Token.Name, 'n'),
+ (Token.Punctuation, ')'),
+ (Token.Text, ' '),
+ (Token.Operator, '*'),
+ (Token.Text, ' '),
+ (Token.Name, 'sum'),
+ (Token.Punctuation, '('),
+ (Token.Name, 'count'),
+ (Token.Text, ' '),
+ (Token.Operator, '.^'),
+ (Token.Text, ' '),
+ (Token.Literal.Number.Integer, '2'),
+ (Token.Punctuation, ')'),
+ (Token.Text, ' '),
+ (Token.Operator, '-'),
+ (Token.Text, ' '),
+ (Token.Name, 'mu'),
+ (Token.Text, ' '),
+ (Token.Operator, '.^'),
+ (Token.Literal.Number.Integer, '2'),
+ (Token.Punctuation, ')'),
+ (Token.Text, '\n'),
]
assert list(lexer.get_tokens(fragment)) == tokens
diff --git a/tests/test_kotlin.py b/tests/test_kotlin.py
index 2f0eb376..9b9e898d 100644
--- a/tests/test_kotlin.py
+++ b/tests/test_kotlin.py
@@ -19,115 +19,115 @@ def lexer():
def test_can_cope_with_backtick_names_in_functions(lexer):
- fragment = u'fun `wo bble`'
+ fragment = 'fun `wo bble`'
tokens = [
- (Keyword, u'fun'),
- (Text, u' '),
- (Name.Function, u'`wo bble`'),
- (Text, u'\n')
+ (Keyword, 'fun'),
+ (Text, ' '),
+ (Name.Function, '`wo bble`'),
+ (Text, '\n')
]
assert list(lexer.get_tokens(fragment)) == tokens
def test_can_cope_with_commas_and_dashes_in_backtick_Names(lexer):
- fragment = u'fun `wo,-bble`'
+ fragment = 'fun `wo,-bble`'
tokens = [
- (Keyword, u'fun'),
- (Text, u' '),
- (Name.Function, u'`wo,-bble`'),
- (Text, u'\n')
+ (Keyword, 'fun'),
+ (Text, ' '),
+ (Name.Function, '`wo,-bble`'),
+ (Text, '\n')
]
assert list(lexer.get_tokens(fragment)) == tokens
def test_can_cope_with_destructuring(lexer):
- fragment = u'val (a, b) = '
+ fragment = 'val (a, b) = '
tokens = [
- (Keyword, u'val'),
- (Text, u' '),
- (Punctuation, u'('),
- (Name.Property, u'a'),
- (Punctuation, u','),
- (Text, u' '),
- (Name.Property, u'b'),
- (Punctuation, u')'),
- (Text, u' '),
- (Punctuation, u'='),
- (Text, u' '),
- (Text, u'\n')
+ (Keyword, 'val'),
+ (Text, ' '),
+ (Punctuation, '('),
+ (Name.Property, 'a'),
+ (Punctuation, ','),
+ (Text, ' '),
+ (Name.Property, 'b'),
+ (Punctuation, ')'),
+ (Text, ' '),
+ (Punctuation, '='),
+ (Text, ' '),
+ (Text, '\n')
]
assert list(lexer.get_tokens(fragment)) == tokens
def test_can_cope_generics_in_destructuring(lexer):
- fragment = u'val (a: List<Something>, b: Set<Wobble>) ='
+ fragment = 'val (a: List<Something>, b: Set<Wobble>) ='
tokens = [
- (Keyword, u'val'),
- (Text, u' '),
- (Punctuation, u'('),
- (Name.Property, u'a'),
- (Punctuation, u':'),
- (Text, u' '),
- (Name.Property, u'List'),
- (Punctuation, u'<'),
- (Name, u'Something'),
- (Punctuation, u'>'),
- (Punctuation, u','),
- (Text, u' '),
- (Name.Property, u'b'),
- (Punctuation, u':'),
- (Text, u' '),
- (Name.Property, u'Set'),
- (Punctuation, u'<'),
- (Name, u'Wobble'),
- (Punctuation, u'>'),
- (Punctuation, u')'),
- (Text, u' '),
- (Punctuation, u'='),
- (Text, u'\n')
+ (Keyword, 'val'),
+ (Text, ' '),
+ (Punctuation, '('),
+ (Name.Property, 'a'),
+ (Punctuation, ':'),
+ (Text, ' '),
+ (Name.Property, 'List'),
+ (Punctuation, '<'),
+ (Name, 'Something'),
+ (Punctuation, '>'),
+ (Punctuation, ','),
+ (Text, ' '),
+ (Name.Property, 'b'),
+ (Punctuation, ':'),
+ (Text, ' '),
+ (Name.Property, 'Set'),
+ (Punctuation, '<'),
+ (Name, 'Wobble'),
+ (Punctuation, '>'),
+ (Punctuation, ')'),
+ (Text, ' '),
+ (Punctuation, '='),
+ (Text, '\n')
]
assert list(lexer.get_tokens(fragment)) == tokens
def test_can_cope_with_generics(lexer):
- fragment = u'inline fun <reified T : ContractState> VaultService.queryBy(): Vault.Page<T> {'
+ fragment = 'inline fun <reified T : ContractState> VaultService.queryBy(): Vault.Page<T> {'
tokens = [
- (Keyword, u'inline fun'),
- (Text, u' '),
- (Punctuation, u'<'),
- (Keyword, u'reified'),
- (Text, u' '),
- (Name, u'T'),
- (Text, u' '),
- (Punctuation, u':'),
- (Text, u' '),
- (Name, u'ContractState'),
- (Punctuation, u'>'),
- (Text, u' '),
- (Name.Class, u'VaultService'),
- (Punctuation, u'.'),
- (Name.Function, u'queryBy'),
- (Punctuation, u'('),
- (Punctuation, u')'),
- (Punctuation, u':'),
- (Text, u' '),
- (Name, u'Vault'),
- (Punctuation, u'.'),
- (Name, u'Page'),
- (Punctuation, u'<'),
- (Name, u'T'),
- (Punctuation, u'>'),
- (Text, u' '),
- (Punctuation, u'{'),
- (Text, u'\n')
+ (Keyword, 'inline fun'),
+ (Text, ' '),
+ (Punctuation, '<'),
+ (Keyword, 'reified'),
+ (Text, ' '),
+ (Name, 'T'),
+ (Text, ' '),
+ (Punctuation, ':'),
+ (Text, ' '),
+ (Name, 'ContractState'),
+ (Punctuation, '>'),
+ (Text, ' '),
+ (Name.Class, 'VaultService'),
+ (Punctuation, '.'),
+ (Name.Function, 'queryBy'),
+ (Punctuation, '('),
+ (Punctuation, ')'),
+ (Punctuation, ':'),
+ (Text, ' '),
+ (Name, 'Vault'),
+ (Punctuation, '.'),
+ (Name, 'Page'),
+ (Punctuation, '<'),
+ (Name, 'T'),
+ (Punctuation, '>'),
+ (Text, ' '),
+ (Punctuation, '{'),
+ (Text, '\n')
]
assert list(lexer.get_tokens(fragment)) == tokens
def test_should_cope_with_multiline_comments(lexer):
- fragment = u'"""\nthis\nis\na\ncomment"""'
+ fragment = '"""\nthis\nis\na\ncomment"""'
tokens = [
- (String, u'"""\nthis\nis\na\ncomment"""'),
- (Text, u'\n')
+ (String, '"""\nthis\nis\na\ncomment"""'),
+ (Text, '\n')
]
assert list(lexer.get_tokens(fragment)) == tokens
diff --git a/tests/test_objectiveclexer.py b/tests/test_objectiveclexer.py
index 31f833cf..7264bad8 100644
--- a/tests/test_objectiveclexer.py
+++ b/tests/test_objectiveclexer.py
@@ -19,78 +19,78 @@ def lexer():
def test_literal_number_int(lexer):
- fragment = u'@(1);\n'
+ fragment = '@(1);\n'
expected = [
- (Token.Literal, u'@('),
- (Token.Literal.Number.Integer, u'1'),
- (Token.Literal, u')'),
- (Token.Punctuation, u';'),
- (Token.Text, u'\n'),
+ (Token.Literal, '@('),
+ (Token.Literal.Number.Integer, '1'),
+ (Token.Literal, ')'),
+ (Token.Punctuation, ';'),
+ (Token.Text, '\n'),
]
assert list(lexer.get_tokens(fragment)) == expected
def test_literal_number_expression(lexer):
- fragment = u'@(1+2);\n'
+ fragment = '@(1+2);\n'
expected = [
- (Token.Literal, u'@('),
- (Token.Literal.Number.Integer, u'1'),
- (Token.Operator, u'+'),
- (Token.Literal.Number.Integer, u'2'),
- (Token.Literal, u')'),
- (Token.Punctuation, u';'),
- (Token.Text, u'\n'),
+ (Token.Literal, '@('),
+ (Token.Literal.Number.Integer, '1'),
+ (Token.Operator, '+'),
+ (Token.Literal.Number.Integer, '2'),
+ (Token.Literal, ')'),
+ (Token.Punctuation, ';'),
+ (Token.Text, '\n'),
]
assert list(lexer.get_tokens(fragment)) == expected
def test_literal_number_nested_expression(lexer):
- fragment = u'@(1+(2+3));\n'
+ fragment = '@(1+(2+3));\n'
expected = [
- (Token.Literal, u'@('),
- (Token.Literal.Number.Integer, u'1'),
- (Token.Operator, u'+'),
- (Token.Punctuation, u'('),
- (Token.Literal.Number.Integer, u'2'),
- (Token.Operator, u'+'),
- (Token.Literal.Number.Integer, u'3'),
- (Token.Punctuation, u')'),
- (Token.Literal, u')'),
- (Token.Punctuation, u';'),
- (Token.Text, u'\n'),
+ (Token.Literal, '@('),
+ (Token.Literal.Number.Integer, '1'),
+ (Token.Operator, '+'),
+ (Token.Punctuation, '('),
+ (Token.Literal.Number.Integer, '2'),
+ (Token.Operator, '+'),
+ (Token.Literal.Number.Integer, '3'),
+ (Token.Punctuation, ')'),
+ (Token.Literal, ')'),
+ (Token.Punctuation, ';'),
+ (Token.Text, '\n'),
]
assert list(lexer.get_tokens(fragment)) == expected
def test_literal_number_bool(lexer):
- fragment = u'@NO;\n'
+ fragment = '@NO;\n'
expected = [
- (Token.Literal.Number, u'@NO'),
- (Token.Punctuation, u';'),
- (Token.Text, u'\n'),
+ (Token.Literal.Number, '@NO'),
+ (Token.Punctuation, ';'),
+ (Token.Text, '\n'),
]
assert list(lexer.get_tokens(fragment)) == expected
def test_literal_number_bool_expression(lexer):
- fragment = u'@(YES);\n'
+ fragment = '@(YES);\n'
expected = [
- (Token.Literal, u'@('),
- (Token.Name.Builtin, u'YES'),
- (Token.Literal, u')'),
- (Token.Punctuation, u';'),
- (Token.Text, u'\n'),
+ (Token.Literal, '@('),
+ (Token.Name.Builtin, 'YES'),
+ (Token.Literal, ')'),
+ (Token.Punctuation, ';'),
+ (Token.Text, '\n'),
]
assert list(lexer.get_tokens(fragment)) == expected
def test_module_import(lexer):
- fragment = u'@import ModuleA;\n'
+ fragment = '@import ModuleA;\n'
expected = [
- (Token.Keyword, u'@import'),
- (Token.Text, u' '),
- (Token.Name, u'ModuleA'),
- (Token.Punctuation, u';'),
- (Token.Text, u'\n'),
+ (Token.Keyword, '@import'),
+ (Token.Text, ' '),
+ (Token.Name, 'ModuleA'),
+ (Token.Punctuation, ';'),
+ (Token.Text, '\n'),
]
assert list(lexer.get_tokens(fragment)) == expected
diff --git a/tests/test_praat.py b/tests/test_praat.py
index e3997671..cced8983 100644
--- a/tests/test_praat.py
+++ b/tests/test_praat.py
@@ -19,187 +19,195 @@ def lexer():
def test_numeric_assignment(lexer):
- fragment = u'var = -15e4\n'
+ fragment = 'var = -15e4\n'
tokens = [
- (Token.Text, u'var'),
- (Token.Text, u' '),
- (Token.Operator, u'='),
- (Token.Text, u' '),
- (Token.Operator, u'-'),
- (Token.Literal.Number, u'15e4'),
- (Token.Text, u'\n'),
+ (Token.Text, 'var'),
+ (Token.Text, ' '),
+ (Token.Operator, '='),
+ (Token.Text, ' '),
+ (Token.Operator, '-'),
+ (Token.Literal.Number, '15e4'),
+ (Token.Text, '\n'),
]
assert list(lexer.get_tokens(fragment)) == tokens
def testStringAssignment(lexer):
- fragment = u'var$ = "foo"\n'
+ fragment = 'var$ = "foo"\n'
tokens = [
- (Token.Text, u'var$'),
- (Token.Text, u' '),
- (Token.Operator, u'='),
- (Token.Text, u' '),
- (Token.Literal.String, u'"'),
- (Token.Literal.String, u'foo'),
- (Token.Literal.String, u'"'),
- (Token.Text, u'\n'),
+ (Token.Text, 'var$'),
+ (Token.Text, ' '),
+ (Token.Operator, '='),
+ (Token.Text, ' '),
+ (Token.Literal.String, '"'),
+ (Token.Literal.String, 'foo'),
+ (Token.Literal.String, '"'),
+ (Token.Text, '\n'),
]
assert list(lexer.get_tokens(fragment)) == tokens
def test_string_escaped_quotes(lexer):
- fragment = u'"it said ""foo"""\n'
+ fragment = '"it said ""foo"""\n'
tokens = [
- (Token.Literal.String, u'"'),
- (Token.Literal.String, u'it said '),
- (Token.Literal.String, u'"'),
- (Token.Literal.String, u'"'),
- (Token.Literal.String, u'foo'),
- (Token.Literal.String, u'"'),
- (Token.Literal.String, u'"'),
- (Token.Literal.String, u'"'),
- (Token.Text, u'\n'),
+ (Token.Literal.String, '"'),
+ (Token.Literal.String, 'it said '),
+ (Token.Literal.String, '"'),
+ (Token.Literal.String, '"'),
+ (Token.Literal.String, 'foo'),
+ (Token.Literal.String, '"'),
+ (Token.Literal.String, '"'),
+ (Token.Literal.String, '"'),
+ (Token.Text, '\n'),
]
assert list(lexer.get_tokens(fragment)) == tokens
def test_function_call(lexer):
- fragment = u'selected("Sound", i+(a*b))\n'
+ fragment = 'selected("Sound", i+(a*b))\n'
tokens = [
- (Token.Name.Function, u'selected'),
- (Token.Punctuation, u'('),
- (Token.Literal.String, u'"'),
- (Token.Literal.String, u'Sound'),
- (Token.Literal.String, u'"'),
- (Token.Punctuation, u','),
- (Token.Text, u' '),
- (Token.Text, u'i'),
- (Token.Operator, u'+'),
- (Token.Text, u'('),
- (Token.Text, u'a'),
- (Token.Operator, u'*'),
- (Token.Text, u'b'),
- (Token.Text, u')'),
- (Token.Punctuation, u')'),
- (Token.Text, u'\n'),
+ (Token.Name.Function, 'selected'),
+ (Token.Punctuation, '('),
+ (Token.Literal.String, '"'),
+ (Token.Literal.String, 'Sound'),
+ (Token.Literal.String, '"'),
+ (Token.Punctuation, ','),
+ (Token.Text, ' '),
+ (Token.Text, 'i'),
+ (Token.Operator, '+'),
+ (Token.Text, '('),
+ (Token.Text, 'a'),
+ (Token.Operator, '*'),
+ (Token.Text, 'b'),
+ (Token.Text, ')'),
+ (Token.Punctuation, ')'),
+ (Token.Text, '\n'),
]
assert list(lexer.get_tokens(fragment)) == tokens
def test_broken_unquoted_string(lexer):
- fragment = u'printline string\n... \'interpolated\' string\n'
+ fragment = 'printline string\n... \'interpolated\' string\n'
tokens = [
- (Token.Keyword, u'printline'),
- (Token.Text, u' '),
- (Token.Literal.String, u'string'),
- (Token.Text, u'\n'),
- (Token.Punctuation, u'...'),
- (Token.Text, u' '),
- (Token.Literal.String.Interpol, u"'interpolated'"),
- (Token.Text, u' '),
- (Token.Literal.String, u'string'),
- (Token.Text, u'\n'),
+ (Token.Keyword, 'printline'),
+ (Token.Text, ' '),
+ (Token.Literal.String, 'string'),
+ (Token.Text, '\n'),
+ (Token.Punctuation, '...'),
+ (Token.Text, ' '),
+ (Token.Literal.String.Interpol, "'interpolated'"),
+ (Token.Text, ' '),
+ (Token.Literal.String, 'string'),
+ (Token.Text, '\n'),
]
assert list(lexer.get_tokens(fragment)) == tokens
def test_inline_if(lexer):
- fragment = u'var = if true == 1 then -1 else 0 fi'
+ fragment = 'var = if true == 1 then -1 else 0 fi'
tokens = [
- (Token.Text, u'var'),
- (Token.Text, u' '),
- (Token.Operator, u'='),
- (Token.Text, u' '),
- (Token.Keyword, u'if'),
- (Token.Text, u' '),
- (Token.Text, u'true'),
- (Token.Text, u' '),
- (Token.Operator, u'=='),
- (Token.Text, u' '),
- (Token.Literal.Number, u'1'),
- (Token.Text, u' '),
- (Token.Keyword, u'then'),
- (Token.Text, u' '),
- (Token.Operator, u'-'),
- (Token.Literal.Number, u'1'),
- (Token.Text, u' '),
- (Token.Keyword, u'else'),
- (Token.Text, u' '),
- (Token.Literal.Number, u'0'),
- (Token.Text, u' '),
- (Token.Keyword, u'fi'),
- (Token.Text, u'\n'),
+ (Token.Text, 'var'),
+ (Token.Text, ' '),
+ (Token.Operator, '='),
+ (Token.Text, ' '),
+ (Token.Keyword, 'if'),
+ (Token.Text, ' '),
+ (Token.Text, 'true'),
+ (Token.Text, ' '),
+ (Token.Operator, '=='),
+ (Token.Text, ' '),
+ (Token.Literal.Number, '1'),
+ (Token.Text, ' '),
+ (Token.Keyword, 'then'),
+ (Token.Text, ' '),
+ (Token.Operator, '-'),
+ (Token.Literal.Number, '1'),
+ (Token.Text, ' '),
+ (Token.Keyword, 'else'),
+ (Token.Text, ' '),
+ (Token.Literal.Number, '0'),
+ (Token.Text, ' '),
+ (Token.Keyword, 'fi'),
+ (Token.Text, '\n'),
]
assert list(lexer.get_tokens(fragment)) == tokens
+
def test_interpolation_boundary(lexer):
- fragment = u'"\'" + "\'"'
+ fragment = '"\'" + "\'"'
tokens = [
- (Token.Literal.String, u'"'),
- (Token.Literal.String, u"'"),
- (Token.Literal.String, u'"'),
- (Token.Text, u' '),
- (Token.Operator, u'+'),
- (Token.Text, u' '),
- (Token.Literal.String, u'"'),
- (Token.Literal.String, u"'"),
- (Token.Literal.String, u'"'),
- (Token.Text, u'\n'),
+ (Token.Literal.String, '"'),
+ (Token.Literal.String, "'"),
+ (Token.Literal.String, '"'),
+ (Token.Text, ' '),
+ (Token.Operator, '+'),
+ (Token.Text, ' '),
+ (Token.Literal.String, '"'),
+ (Token.Literal.String, "'"),
+ (Token.Literal.String, '"'),
+ (Token.Text, '\n'),
]
assert list(lexer.get_tokens(fragment)) == tokens
+
def test_interpolated_numeric_indexed(lexer):
- fragment = u"'a[3]'"
+ fragment = "'a[3]'"
tokens = [
- (Token.Literal.String.Interpol, u"'a[3]'"),
- (Token.Text, u'\n'),
+ (Token.Literal.String.Interpol, "'a[3]'"),
+ (Token.Text, '\n'),
]
assert list(lexer.get_tokens(fragment)) == tokens
+
def test_interpolated_numeric_hash(lexer):
- fragment = u"'a[\"b\"]'"
+ fragment = "'a[\"b\"]'"
tokens = [
- (Token.Literal.String.Interpol, u"'a[\"b\"]'"),
- (Token.Text, u'\n'),
+ (Token.Literal.String.Interpol, "'a[\"b\"]'"),
+ (Token.Text, '\n'),
]
assert list(lexer.get_tokens(fragment)) == tokens
+
def test_interpolated_string_indexed(lexer):
- fragment = u"'a$[3]'"
+ fragment = "'a$[3]'"
tokens = [
- (Token.Literal.String.Interpol, u"'a$[3]'"),
- (Token.Text, u'\n'),
+ (Token.Literal.String.Interpol, "'a$[3]'"),
+ (Token.Text, '\n'),
]
assert list(lexer.get_tokens(fragment)) == tokens
+
def test_interpolated_string_hash(lexer):
- fragment = u"'a$[\"b\"]'"
+ fragment = "'a$[\"b\"]'"
tokens = [
- (Token.Literal.String.Interpol, u"'a$[\"b\"]'"),
- (Token.Text, u'\n'),
+ (Token.Literal.String.Interpol, "'a$[\"b\"]'"),
+ (Token.Text, '\n'),
]
assert list(lexer.get_tokens(fragment)) == tokens
+
def test_interpolated_numeric_with_precision(lexer):
- fragment = u"'a:3'"
+ fragment = "'a:3'"
tokens = [
- (Token.Literal.String.Interpol, u"'a:3'"),
- (Token.Text, u'\n'),
+ (Token.Literal.String.Interpol, "'a:3'"),
+ (Token.Text, '\n'),
]
assert list(lexer.get_tokens(fragment)) == tokens
+
def test_interpolated_indexed_numeric_with_precision(lexer):
- fragment = u"'a[3]:3'"
+ fragment = "'a[3]:3'"
tokens = [
- (Token.Literal.String.Interpol, u"'a[3]:3'"),
- (Token.Text, u'\n'),
+ (Token.Literal.String.Interpol, "'a[3]:3'"),
+ (Token.Text, '\n'),
]
assert list(lexer.get_tokens(fragment)) == tokens
+
def test_interpolated_local_numeric_with_precision(lexer):
- fragment = u"'a.a:3'"
+ fragment = "'a.a:3'"
tokens = [
- (Token.Literal.String.Interpol, u"'a.a:3'"),
- (Token.Text, u'\n'),
+ (Token.Literal.String.Interpol, "'a.a:3'"),
+ (Token.Text, '\n'),
]
assert list(lexer.get_tokens(fragment)) == tokens
diff --git a/tests/test_promql.py b/tests/test_promql.py
index cd02a57a..3b3dce91 100644
--- a/tests/test_promql.py
+++ b/tests/test_promql.py
@@ -19,7 +19,7 @@ def lexer():
def test_metric(lexer):
- fragment = u"go_gc_duration_seconds"
+ fragment = "go_gc_duration_seconds"
tokens = [
(Token.Name.Variable, "go_gc_duration_seconds"),
(Token.Text.Whitespace, "\n"),
@@ -28,7 +28,7 @@ def test_metric(lexer):
def test_metric_one_label(lexer):
- fragment = u'go_gc_duration_seconds{instance="localhost:9090"}'
+ fragment = 'go_gc_duration_seconds{instance="localhost:9090"}'
tokens = [
(Token.Name.Variable, "go_gc_duration_seconds"),
(Token.Punctuation, "{"),
@@ -44,7 +44,7 @@ def test_metric_one_label(lexer):
def test_metric_multiple_labels(lexer):
- fragment = u'go_gc_duration_seconds{instance="localhost:9090",job="alertmanager"}'
+ fragment = 'go_gc_duration_seconds{instance="localhost:9090",job="alertmanager"}'
tokens = [
(Token.Name.Variable, "go_gc_duration_seconds"),
(Token.Punctuation, "{"),
@@ -66,7 +66,7 @@ def test_metric_multiple_labels(lexer):
def test_metric_multiple_labels_with_spaces(lexer):
- fragment = u'go_gc_duration_seconds{ instance="localhost:9090", job="alertmanager" }'
+ fragment = 'go_gc_duration_seconds{ instance="localhost:9090", job="alertmanager" }'
tokens = [
(Token.Name.Variable, "go_gc_duration_seconds"),
(Token.Punctuation, "{"),
@@ -91,7 +91,7 @@ def test_metric_multiple_labels_with_spaces(lexer):
def test_expression_and_comment(lexer):
- fragment = u'go_gc_duration_seconds{instance="localhost:9090"} # single comment\n'
+ fragment = 'go_gc_duration_seconds{instance="localhost:9090"} # single comment\n'
tokens = [
(Token.Name.Variable, "go_gc_duration_seconds"),
(Token.Punctuation, "{"),
@@ -109,7 +109,7 @@ def test_expression_and_comment(lexer):
def test_function_delta(lexer):
- fragment = u'delta(cpu_temp_celsius{host="zeus"}[2h])'
+ fragment = 'delta(cpu_temp_celsius{host="zeus"}[2h])'
tokens = [
(Token.Keyword.Reserved, "delta"),
(Token.Operator, "("),
@@ -131,7 +131,7 @@ def test_function_delta(lexer):
def test_function_sum_with_args(lexer):
- fragment = u"sum by (app, proc) (instance_memory_usage_bytes)\n"
+ fragment = 'sum by (app, proc) (instance_memory_usage_bytes)\n'
tokens = [
(Token.Keyword, "sum"),
(Token.Text.Whitespace, " "),
@@ -153,7 +153,7 @@ def test_function_sum_with_args(lexer):
def test_function_multi_line(lexer):
- fragment = u"""label_replace(
+ fragment = """label_replace(
sum by (instance) (
irate(node_disk_read_bytes_total[2m])
) / 1024 / 1024,
@@ -229,7 +229,7 @@ def test_function_multi_line(lexer):
def test_function_multi_line_with_offset(lexer):
- fragment = u"""label_replace(
+ fragment = """label_replace(
avg by(instance)
(irate(node_cpu_seconds_total{mode = "idle"}[5m] offset 3s)
) * 100,
diff --git a/tests/test_python.py b/tests/test_python.py
index 8e53677b..73993936 100644
--- a/tests/test_python.py
+++ b/tests/test_python.py
@@ -61,57 +61,57 @@ def test_needs_name(lexer3):
"""
Tests that '@' is recognized as an Operator
"""
- fragment = u'S = (H @ beta - r).T @ inv(H @ V @ H.T) @ (H @ beta - r)\n'
+ fragment = 'S = (H @ beta - r).T @ inv(H @ V @ H.T) @ (H @ beta - r)\n'
tokens = [
- (Token.Name, u'S'),
- (Token.Text, u' '),
- (Token.Operator, u'='),
- (Token.Text, u' '),
- (Token.Punctuation, u'('),
- (Token.Name, u'H'),
- (Token.Text, u' '),
- (Token.Operator, u'@'),
- (Token.Text, u' '),
- (Token.Name, u'beta'),
- (Token.Text, u' '),
- (Token.Operator, u'-'),
- (Token.Text, u' '),
- (Token.Name, u'r'),
- (Token.Punctuation, u')'),
- (Token.Operator, u'.'),
- (Token.Name, u'T'),
- (Token.Text, u' '),
- (Token.Operator, u'@'),
- (Token.Text, u' '),
- (Token.Name, u'inv'),
- (Token.Punctuation, u'('),
- (Token.Name, u'H'),
- (Token.Text, u' '),
- (Token.Operator, u'@'),
- (Token.Text, u' '),
- (Token.Name, u'V'),
- (Token.Text, u' '),
- (Token.Operator, u'@'),
- (Token.Text, u' '),
- (Token.Name, u'H'),
- (Token.Operator, u'.'),
- (Token.Name, u'T'),
- (Token.Punctuation, u')'),
- (Token.Text, u' '),
- (Token.Operator, u'@'),
- (Token.Text, u' '),
- (Token.Punctuation, u'('),
- (Token.Name, u'H'),
- (Token.Text, u' '),
- (Token.Operator, u'@'),
- (Token.Text, u' '),
- (Token.Name, u'beta'),
- (Token.Text, u' '),
- (Token.Operator, u'-'),
- (Token.Text, u' '),
- (Token.Name, u'r'),
- (Token.Punctuation, u')'),
- (Token.Text, u'\n'),
+ (Token.Name, 'S'),
+ (Token.Text, ' '),
+ (Token.Operator, '='),
+ (Token.Text, ' '),
+ (Token.Punctuation, '('),
+ (Token.Name, 'H'),
+ (Token.Text, ' '),
+ (Token.Operator, '@'),
+ (Token.Text, ' '),
+ (Token.Name, 'beta'),
+ (Token.Text, ' '),
+ (Token.Operator, '-'),
+ (Token.Text, ' '),
+ (Token.Name, 'r'),
+ (Token.Punctuation, ')'),
+ (Token.Operator, '.'),
+ (Token.Name, 'T'),
+ (Token.Text, ' '),
+ (Token.Operator, '@'),
+ (Token.Text, ' '),
+ (Token.Name, 'inv'),
+ (Token.Punctuation, '('),
+ (Token.Name, 'H'),
+ (Token.Text, ' '),
+ (Token.Operator, '@'),
+ (Token.Text, ' '),
+ (Token.Name, 'V'),
+ (Token.Text, ' '),
+ (Token.Operator, '@'),
+ (Token.Text, ' '),
+ (Token.Name, 'H'),
+ (Token.Operator, '.'),
+ (Token.Name, 'T'),
+ (Token.Punctuation, ')'),
+ (Token.Text, ' '),
+ (Token.Operator, '@'),
+ (Token.Text, ' '),
+ (Token.Punctuation, '('),
+ (Token.Name, 'H'),
+ (Token.Text, ' '),
+ (Token.Operator, '@'),
+ (Token.Text, ' '),
+ (Token.Name, 'beta'),
+ (Token.Text, ' '),
+ (Token.Operator, '-'),
+ (Token.Text, ' '),
+ (Token.Name, 'r'),
+ (Token.Punctuation, ')'),
+ (Token.Text, '\n'),
]
assert list(lexer3.get_tokens(fragment)) == tokens
@@ -121,18 +121,18 @@ def test_pep_515(lexer3):
Tests that the lexer can parse numeric literals with underscores
"""
fragments = (
- (Token.Literal.Number.Integer, u'1_000_000'),
- (Token.Literal.Number.Float, u'1_000.000_001'),
- (Token.Literal.Number.Float, u'1_000e1_000j'),
- (Token.Literal.Number.Hex, u'0xCAFE_F00D'),
- (Token.Literal.Number.Bin, u'0b_0011_1111_0100_1110'),
- (Token.Literal.Number.Oct, u'0o_777_123'),
+ (Token.Literal.Number.Integer, '1_000_000'),
+ (Token.Literal.Number.Float, '1_000.000_001'),
+ (Token.Literal.Number.Float, '1_000e1_000j'),
+ (Token.Literal.Number.Hex, '0xCAFE_F00D'),
+ (Token.Literal.Number.Bin, '0b_0011_1111_0100_1110'),
+ (Token.Literal.Number.Oct, '0o_777_123'),
)
for token, fragment in fragments:
tokens = [
(token, fragment),
- (Token.Text, u'\n'),
+ (Token.Text, '\n'),
]
assert list(lexer3.get_tokens(fragment)) == tokens
@@ -141,7 +141,7 @@ def test_walrus_operator(lexer3):
"""
Tests that ':=' is recognized as an Operator
"""
- fragment = u'if (a := 2) > 4:'
+ fragment = 'if (a := 2) > 4:'
tokens = [
(Token.Keyword, 'if'),
(Token.Text, ' '),
@@ -191,7 +191,7 @@ def test_fstring(lexer3):
(Token.Literal.String.Interpol, '}'),
(Token.Literal.String.Single, '.'),
(Token.Literal.String.Single, "'"),
- (Token.Text, u'\n')
+ (Token.Text, '\n')
]
), (
"f'He said his name is {name!r}.'\n",
diff --git a/tests/test_qbasiclexer.py b/tests/test_qbasiclexer.py
index fb721437..83077e7e 100644
--- a/tests/test_qbasiclexer.py
+++ b/tests/test_qbasiclexer.py
@@ -19,23 +19,23 @@ def lexer():
def test_keywords_with_dollar(lexer):
- fragment = u'DIM x\nx = RIGHT$("abc", 1)\n'
+ fragment = 'DIM x\nx = RIGHT$("abc", 1)\n'
expected = [
- (Token.Keyword.Declaration, u'DIM'),
- (Token.Text.Whitespace, u' '),
- (Token.Name.Variable.Global, u'x'),
- (Token.Text, u'\n'),
- (Token.Name.Variable.Global, u'x'),
- (Token.Text.Whitespace, u' '),
- (Token.Operator, u'='),
- (Token.Text.Whitespace, u' '),
- (Token.Keyword.Reserved, u'RIGHT$'),
- (Token.Punctuation, u'('),
- (Token.Literal.String.Double, u'"abc"'),
- (Token.Punctuation, u','),
- (Token.Text.Whitespace, u' '),
- (Token.Literal.Number.Integer.Long, u'1'),
- (Token.Punctuation, u')'),
- (Token.Text, u'\n'),
+ (Token.Keyword.Declaration, 'DIM'),
+ (Token.Text.Whitespace, ' '),
+ (Token.Name.Variable.Global, 'x'),
+ (Token.Text, '\n'),
+ (Token.Name.Variable.Global, 'x'),
+ (Token.Text.Whitespace, ' '),
+ (Token.Operator, '='),
+ (Token.Text.Whitespace, ' '),
+ (Token.Keyword.Reserved, 'RIGHT$'),
+ (Token.Punctuation, '('),
+ (Token.Literal.String.Double, '"abc"'),
+ (Token.Punctuation, ','),
+ (Token.Text.Whitespace, ' '),
+ (Token.Literal.Number.Integer.Long, '1'),
+ (Token.Punctuation, ')'),
+ (Token.Text, '\n'),
]
assert list(lexer.get_tokens(fragment)) == expected
diff --git a/tests/test_r.py b/tests/test_r.py
index 2814acd7..c243652b 100644
--- a/tests/test_r.py
+++ b/tests/test_r.py
@@ -19,76 +19,76 @@ def lexer():
def test_call(lexer):
- fragment = u'f(1, a)\n'
+ fragment = 'f(1, a)\n'
tokens = [
- (Name.Function, u'f'),
- (Punctuation, u'('),
- (Token.Literal.Number, u'1'),
- (Punctuation, u','),
- (Token.Text, u' '),
- (Token.Name, u'a'),
- (Punctuation, u')'),
- (Token.Text, u'\n'),
+ (Name.Function, 'f'),
+ (Punctuation, '('),
+ (Token.Literal.Number, '1'),
+ (Punctuation, ','),
+ (Token.Text, ' '),
+ (Token.Name, 'a'),
+ (Punctuation, ')'),
+ (Token.Text, '\n'),
]
assert list(lexer.get_tokens(fragment)) == tokens
def test_name1(lexer):
- fragment = u'._a_2.c'
+ fragment = '._a_2.c'
tokens = [
- (Name, u'._a_2.c'),
- (Token.Text, u'\n'),
+ (Name, '._a_2.c'),
+ (Token.Text, '\n'),
]
assert list(lexer.get_tokens(fragment)) == tokens
def test_name2(lexer):
# Invalid names are valid if backticks are used
- fragment = u'`.1 blah`'
+ fragment = '`.1 blah`'
tokens = [
- (Name, u'`.1 blah`'),
- (Token.Text, u'\n'),
+ (Name, '`.1 blah`'),
+ (Token.Text, '\n'),
]
assert list(lexer.get_tokens(fragment)) == tokens
def test_name3(lexer):
# Internal backticks can be escaped
- fragment = u'`.1 \\` blah`'
+ fragment = '`.1 \\` blah`'
tokens = [
- (Name, u'`.1 \\` blah`'),
- (Token.Text, u'\n'),
+ (Name, '`.1 \\` blah`'),
+ (Token.Text, '\n'),
]
assert list(lexer.get_tokens(fragment)) == tokens
def test_custom_operator(lexer):
- fragment = u'7 % and % 8'
+ fragment = '7 % and % 8'
tokens = [
- (Token.Literal.Number, u'7'),
- (Token.Text, u' '),
- (Token.Operator, u'% and %'),
- (Token.Text, u' '),
- (Token.Literal.Number, u'8'),
- (Token.Text, u'\n'),
+ (Token.Literal.Number, '7'),
+ (Token.Text, ' '),
+ (Token.Operator, '% and %'),
+ (Token.Text, ' '),
+ (Token.Literal.Number, '8'),
+ (Token.Text, '\n'),
]
assert list(lexer.get_tokens(fragment)) == tokens
def test_indexing(lexer):
- fragment = u'a[1]'
+ fragment = 'a[1]'
tokens = [
- (Token.Name, u'a'),
- (Token.Punctuation, u'['),
- (Token.Literal.Number, u'1'),
- (Token.Punctuation, u']'),
- (Token.Text, u'\n'),
+ (Token.Name, 'a'),
+ (Token.Punctuation, '['),
+ (Token.Literal.Number, '1'),
+ (Token.Punctuation, ']'),
+ (Token.Text, '\n'),
]
assert list(lexer.get_tokens(fragment)) == tokens
def test_dot_name(lexer):
- fragment = u'. <- 1'
+ fragment = '. <- 1'
tokens = [
(Token.Name, '.'),
(Token.Text, ' '),
@@ -101,12 +101,12 @@ def test_dot_name(lexer):
def test_dot_indexing(lexer):
- fragment = u'.[1]'
+ fragment = '.[1]'
tokens = [
- (Token.Name, u'.'),
- (Token.Punctuation, u'['),
- (Token.Literal.Number, u'1'),
- (Token.Punctuation, u']'),
- (Token.Text, u'\n'),
+ (Token.Name, '.'),
+ (Token.Punctuation, '['),
+ (Token.Literal.Number, '1'),
+ (Token.Punctuation, ']'),
+ (Token.Text, '\n'),
]
assert list(lexer.get_tokens(fragment)) == tokens
diff --git a/tests/test_regexlexer.py b/tests/test_regexlexer.py
index 8e55696c..4029db1d 100644
--- a/tests/test_regexlexer.py
+++ b/tests/test_regexlexer.py
@@ -48,7 +48,7 @@ def test_tuple(lexer):
def test_multiline(lexer):
toks = list(lexer.get_tokens_unprocessed('a\ne'))
assert toks == [
- (0, Text.Root, 'a'), (1, Text, u'\n'), (2, Text.Root, 'e')]
+ (0, Text.Root, 'a'), (1, Text, '\n'), (2, Text.Root, 'e')]
def test_default(lexer):
diff --git a/tests/test_rtf_formatter.py b/tests/test_rtf_formatter.py
index 6f60d06e..dc4fffb4 100644
--- a/tests/test_rtf_formatter.py
+++ b/tests/test_rtf_formatter.py
@@ -27,10 +27,10 @@ def _build_message(*args, **kwargs):
result = _escape(kwargs.get('result', ''))
if string is None:
- string = (u"The expected output of '{t}'\n"
- u"\t\tShould be '{expected}'\n"
- u"\t\tActually outputs '{result}'\n"
- u"\t(WARNING: Partial Output of Result!)")
+ string = ("The expected output of '{t}'\n"
+ "\t\tShould be '{expected}'\n"
+ "\t\tActually outputs '{result}'\n"
+ "\t(WARNING: Partial Output of Result!)")
end = -len(_escape(foot))
start = end - len(expected)
@@ -51,31 +51,31 @@ def format_rtf(t):
def test_rtf_header():
- t = u''
+ t = ''
result = format_rtf(t)
expected = r'{\rtf1\ansi\uc0'
- msg = (u"RTF documents are expected to start with '{expected}'\n"
- u"\t\tStarts intead with '{result}'\n"
- u"\t(WARNING: Partial Output of Result!)".format(
+ msg = ("RTF documents are expected to start with '{expected}'\n"
+ "\t\tStarts intead with '{result}'\n"
+ "\t(WARNING: Partial Output of Result!)".format(
expected=expected,
result=result[:len(expected)]))
assert result.startswith(expected), msg
def test_rtf_footer():
- t = u''
+ t = ''
result = format_rtf(t)
expected = ''
- msg = (u"RTF documents are expected to end with '{expected}'\n"
- u"\t\tEnds intead with '{result}'\n"
- u"\t(WARNING: Partial Output of Result!)".format(
+ msg = ("RTF documents are expected to end with '{expected}'\n"
+ "\t\tEnds intead with '{result}'\n"
+ "\t(WARNING: Partial Output of Result!)".format(
expected=_escape(expected),
result=_escape(result[-len(expected):])))
assert result.endswith(expected+foot), msg
def test_ascii_characters():
- t = u'a b c d ~'
+ t = 'a b c d ~'
result = format_rtf(t)
expected = (r'a b c d ~')
msg = _build_message(t=t, result=result, expected=expected)
@@ -83,7 +83,7 @@ def test_ascii_characters():
def test_escape_characters():
- t = u'\\ {{'
+ t = '\\ {{'
result = format_rtf(t)
expected = r'\\ \{\{'
msg = _build_message(t=t, result=result, expected=expected)
@@ -91,7 +91,7 @@ def test_escape_characters():
def test_single_characters():
- t = u'â € ¤ каждой'
+ t = 'â € ¤ каждой'
result = format_rtf(t)
expected = (r'{\u226} {\u8364} {\u164} '
r'{\u1082}{\u1072}{\u1078}{\u1076}{\u1086}{\u1081}')
@@ -100,7 +100,7 @@ def test_single_characters():
def test_double_characters():
- t = u'က 힣 ↕ ↕︎ 鼖'
+ t = 'က 힣 ↕ ↕︎ 鼖'
result = format_rtf(t)
expected = (r'{\u4096} {\u55203} {\u8597} '
r'{\u8597}{\u65038} {\u55422}{\u56859}')
diff --git a/tests/test_ruby.py b/tests/test_ruby.py
index 86a9ee77..24e3bef1 100644
--- a/tests/test_ruby.py
+++ b/tests/test_ruby.py
@@ -19,131 +19,131 @@ def lexer():
def test_range_syntax1(lexer):
- fragment = u'1..3\n'
+ fragment = '1..3\n'
tokens = [
- (Number.Integer, u'1'),
- (Operator, u'..'),
- (Number.Integer, u'3'),
- (Text, u'\n'),
+ (Number.Integer, '1'),
+ (Operator, '..'),
+ (Number.Integer, '3'),
+ (Text, '\n'),
]
assert list(lexer.get_tokens(fragment)) == tokens
def test_range_syntax2(lexer):
- fragment = u'1...3\n'
+ fragment = '1...3\n'
tokens = [
- (Number.Integer, u'1'),
- (Operator, u'...'),
- (Number.Integer, u'3'),
- (Text, u'\n'),
+ (Number.Integer, '1'),
+ (Operator, '...'),
+ (Number.Integer, '3'),
+ (Text, '\n'),
]
assert list(lexer.get_tokens(fragment)) == tokens
def test_range_syntax3(lexer):
- fragment = u'1 .. 3\n'
+ fragment = '1 .. 3\n'
tokens = [
- (Number.Integer, u'1'),
- (Text, u' '),
- (Operator, u'..'),
- (Text, u' '),
- (Number.Integer, u'3'),
- (Text, u'\n'),
+ (Number.Integer, '1'),
+ (Text, ' '),
+ (Operator, '..'),
+ (Text, ' '),
+ (Number.Integer, '3'),
+ (Text, '\n'),
]
assert list(lexer.get_tokens(fragment)) == tokens
def test_interpolation_nested_curly(lexer):
fragment = (
- u'"A#{ (3..5).group_by { |x| x/2}.map '
- u'do |k,v| "#{k}" end.join }" + "Z"\n')
+ '"A#{ (3..5).group_by { |x| x/2}.map '
+ 'do |k,v| "#{k}" end.join }" + "Z"\n')
tokens = [
- (Token.Literal.String.Double, u'"'),
- (Token.Literal.String.Double, u'A'),
- (Token.Literal.String.Interpol, u'#{'),
- (Token.Text, u' '),
- (Token.Punctuation, u'('),
- (Token.Literal.Number.Integer, u'3'),
- (Token.Operator, u'..'),
- (Token.Literal.Number.Integer, u'5'),
- (Token.Punctuation, u')'),
- (Token.Operator, u'.'),
- (Token.Name, u'group_by'),
- (Token.Text, u' '),
- (Token.Literal.String.Interpol, u'{'),
- (Token.Text, u' '),
- (Token.Operator, u'|'),
- (Token.Name, u'x'),
- (Token.Operator, u'|'),
- (Token.Text, u' '),
- (Token.Name, u'x'),
- (Token.Operator, u'/'),
- (Token.Literal.Number.Integer, u'2'),
- (Token.Literal.String.Interpol, u'}'),
- (Token.Operator, u'.'),
- (Token.Name, u'map'),
- (Token.Text, u' '),
- (Token.Keyword, u'do'),
- (Token.Text, u' '),
- (Token.Operator, u'|'),
- (Token.Name, u'k'),
- (Token.Punctuation, u','),
- (Token.Name, u'v'),
- (Token.Operator, u'|'),
- (Token.Text, u' '),
- (Token.Literal.String.Double, u'"'),
- (Token.Literal.String.Interpol, u'#{'),
- (Token.Name, u'k'),
- (Token.Literal.String.Interpol, u'}'),
- (Token.Literal.String.Double, u'"'),
- (Token.Text, u' '),
- (Token.Keyword, u'end'),
- (Token.Operator, u'.'),
- (Token.Name, u'join'),
- (Token.Text, u' '),
- (Token.Literal.String.Interpol, u'}'),
- (Token.Literal.String.Double, u'"'),
- (Token.Text, u' '),
- (Token.Operator, u'+'),
- (Token.Text, u' '),
- (Token.Literal.String.Double, u'"'),
- (Token.Literal.String.Double, u'Z'),
- (Token.Literal.String.Double, u'"'),
- (Token.Text, u'\n'),
+ (Token.Literal.String.Double, '"'),
+ (Token.Literal.String.Double, 'A'),
+ (Token.Literal.String.Interpol, '#{'),
+ (Token.Text, ' '),
+ (Token.Punctuation, '('),
+ (Token.Literal.Number.Integer, '3'),
+ (Token.Operator, '..'),
+ (Token.Literal.Number.Integer, '5'),
+ (Token.Punctuation, ')'),
+ (Token.Operator, '.'),
+ (Token.Name, 'group_by'),
+ (Token.Text, ' '),
+ (Token.Literal.String.Interpol, '{'),
+ (Token.Text, ' '),
+ (Token.Operator, '|'),
+ (Token.Name, 'x'),
+ (Token.Operator, '|'),
+ (Token.Text, ' '),
+ (Token.Name, 'x'),
+ (Token.Operator, '/'),
+ (Token.Literal.Number.Integer, '2'),
+ (Token.Literal.String.Interpol, '}'),
+ (Token.Operator, '.'),
+ (Token.Name, 'map'),
+ (Token.Text, ' '),
+ (Token.Keyword, 'do'),
+ (Token.Text, ' '),
+ (Token.Operator, '|'),
+ (Token.Name, 'k'),
+ (Token.Punctuation, ','),
+ (Token.Name, 'v'),
+ (Token.Operator, '|'),
+ (Token.Text, ' '),
+ (Token.Literal.String.Double, '"'),
+ (Token.Literal.String.Interpol, '#{'),
+ (Token.Name, 'k'),
+ (Token.Literal.String.Interpol, '}'),
+ (Token.Literal.String.Double, '"'),
+ (Token.Text, ' '),
+ (Token.Keyword, 'end'),
+ (Token.Operator, '.'),
+ (Token.Name, 'join'),
+ (Token.Text, ' '),
+ (Token.Literal.String.Interpol, '}'),
+ (Token.Literal.String.Double, '"'),
+ (Token.Text, ' '),
+ (Token.Operator, '+'),
+ (Token.Text, ' '),
+ (Token.Literal.String.Double, '"'),
+ (Token.Literal.String.Double, 'Z'),
+ (Token.Literal.String.Double, '"'),
+ (Token.Text, '\n'),
]
assert list(lexer.get_tokens(fragment)) == tokens
def test_operator_methods(lexer):
- fragment = u'x.==4\n'
+ fragment = 'x.==4\n'
tokens = [
- (Token.Name, u'x'),
- (Token.Operator, u'.'),
- (Token.Name.Operator, u'=='),
- (Token.Literal.Number.Integer, u'4'),
- (Token.Text, u'\n'),
+ (Token.Name, 'x'),
+ (Token.Operator, '.'),
+ (Token.Name.Operator, '=='),
+ (Token.Literal.Number.Integer, '4'),
+ (Token.Text, '\n'),
]
assert list(lexer.get_tokens(fragment)) == tokens
def test_escaped_bracestring(lexer):
- fragment = u'str.gsub(%r{\\\\\\\\}, "/")\n'
+ fragment = 'str.gsub(%r{\\\\\\\\}, "/")\n'
tokens = [
- (Token.Name, u'str'),
- (Token.Operator, u'.'),
- (Token.Name, u'gsub'),
- (Token.Punctuation, u'('),
- (Token.Literal.String.Regex, u'%r{'),
- (Token.Literal.String.Regex, u'\\\\'),
- (Token.Literal.String.Regex, u'\\\\'),
- (Token.Literal.String.Regex, u'}'),
- (Token.Punctuation, u','),
- (Token.Text, u' '),
- (Token.Literal.String.Double, u'"'),
- (Token.Literal.String.Double, u'/'),
- (Token.Literal.String.Double, u'"'),
- (Token.Punctuation, u')'),
- (Token.Text, u'\n'),
+ (Token.Name, 'str'),
+ (Token.Operator, '.'),
+ (Token.Name, 'gsub'),
+ (Token.Punctuation, '('),
+ (Token.Literal.String.Regex, '%r{'),
+ (Token.Literal.String.Regex, '\\\\'),
+ (Token.Literal.String.Regex, '\\\\'),
+ (Token.Literal.String.Regex, '}'),
+ (Token.Punctuation, ','),
+ (Token.Text, ' '),
+ (Token.Literal.String.Double, '"'),
+ (Token.Literal.String.Double, '/'),
+ (Token.Literal.String.Double, '"'),
+ (Token.Punctuation, ')'),
+ (Token.Text, '\n'),
]
assert list(lexer.get_tokens(fragment)) == tokens
diff --git a/tests/test_shell.py b/tests/test_shell.py
index 79f78b3a..b3600a4e 100644
--- a/tests/test_shell.py
+++ b/tests/test_shell.py
@@ -34,194 +34,194 @@ def lexer_powershell_session():
def test_curly_no_escape_and_quotes(lexer_bash):
- fragment = u'echo "${a//["b"]/}"\n'
+ fragment = 'echo "${a//["b"]/}"\n'
tokens = [
- (Token.Name.Builtin, u'echo'),
- (Token.Text, u' '),
- (Token.Literal.String.Double, u'"'),
- (Token.String.Interpol, u'${'),
- (Token.Name.Variable, u'a'),
- (Token.Punctuation, u'//['),
- (Token.Literal.String.Double, u'"b"'),
- (Token.Punctuation, u']/'),
- (Token.String.Interpol, u'}'),
- (Token.Literal.String.Double, u'"'),
- (Token.Text, u'\n'),
+ (Token.Name.Builtin, 'echo'),
+ (Token.Text, ' '),
+ (Token.Literal.String.Double, '"'),
+ (Token.String.Interpol, '${'),
+ (Token.Name.Variable, 'a'),
+ (Token.Punctuation, '//['),
+ (Token.Literal.String.Double, '"b"'),
+ (Token.Punctuation, ']/'),
+ (Token.String.Interpol, '}'),
+ (Token.Literal.String.Double, '"'),
+ (Token.Text, '\n'),
]
assert list(lexer_bash.get_tokens(fragment)) == tokens
def test_curly_with_escape(lexer_bash):
- fragment = u'echo ${a//[\\"]/}\n'
+ fragment = 'echo ${a//[\\"]/}\n'
tokens = [
- (Token.Name.Builtin, u'echo'),
- (Token.Text, u' '),
- (Token.String.Interpol, u'${'),
- (Token.Name.Variable, u'a'),
- (Token.Punctuation, u'//['),
- (Token.Literal.String.Escape, u'\\"'),
- (Token.Punctuation, u']/'),
- (Token.String.Interpol, u'}'),
- (Token.Text, u'\n'),
+ (Token.Name.Builtin, 'echo'),
+ (Token.Text, ' '),
+ (Token.String.Interpol, '${'),
+ (Token.Name.Variable, 'a'),
+ (Token.Punctuation, '//['),
+ (Token.Literal.String.Escape, '\\"'),
+ (Token.Punctuation, ']/'),
+ (Token.String.Interpol, '}'),
+ (Token.Text, '\n'),
]
assert list(lexer_bash.get_tokens(fragment)) == tokens
def test_parsed_single(lexer_bash):
- fragment = u"a=$'abc\\''\n"
+ fragment = "a=$'abc\\''\n"
tokens = [
- (Token.Name.Variable, u'a'),
- (Token.Operator, u'='),
- (Token.Literal.String.Single, u"$'abc\\''"),
- (Token.Text, u'\n'),
+ (Token.Name.Variable, 'a'),
+ (Token.Operator, '='),
+ (Token.Literal.String.Single, "$'abc\\''"),
+ (Token.Text, '\n'),
]
assert list(lexer_bash.get_tokens(fragment)) == tokens
def test_short_variable_names(lexer_bash):
- fragment = u'x="$"\ny="$_"\nz="$abc"\n'
+ fragment = 'x="$"\ny="$_"\nz="$abc"\n'
tokens = [
# single lone $
- (Token.Name.Variable, u'x'),
- (Token.Operator, u'='),
- (Token.Literal.String.Double, u'"'),
- (Token.Text, u'$'),
- (Token.Literal.String.Double, u'"'),
- (Token.Text, u'\n'),
+ (Token.Name.Variable, 'x'),
+ (Token.Operator, '='),
+ (Token.Literal.String.Double, '"'),
+ (Token.Text, '$'),
+ (Token.Literal.String.Double, '"'),
+ (Token.Text, '\n'),
# single letter shell var
- (Token.Name.Variable, u'y'),
- (Token.Operator, u'='),
- (Token.Literal.String.Double, u'"'),
- (Token.Name.Variable, u'$_'),
- (Token.Literal.String.Double, u'"'),
- (Token.Text, u'\n'),
+ (Token.Name.Variable, 'y'),
+ (Token.Operator, '='),
+ (Token.Literal.String.Double, '"'),
+ (Token.Name.Variable, '$_'),
+ (Token.Literal.String.Double, '"'),
+ (Token.Text, '\n'),
# multi-letter user var
- (Token.Name.Variable, u'z'),
- (Token.Operator, u'='),
- (Token.Literal.String.Double, u'"'),
- (Token.Name.Variable, u'$abc'),
- (Token.Literal.String.Double, u'"'),
- (Token.Text, u'\n'),
+ (Token.Name.Variable, 'z'),
+ (Token.Operator, '='),
+ (Token.Literal.String.Double, '"'),
+ (Token.Name.Variable, '$abc'),
+ (Token.Literal.String.Double, '"'),
+ (Token.Text, '\n'),
]
assert list(lexer_bash.get_tokens(fragment)) == tokens
def test_array_nums(lexer_bash):
- fragment = u'a=(1 2 3)\n'
+ fragment = 'a=(1 2 3)\n'
tokens = [
- (Token.Name.Variable, u'a'),
- (Token.Operator, u'='),
- (Token.Operator, u'('),
- (Token.Literal.Number, u'1'),
- (Token.Text, u' '),
- (Token.Literal.Number, u'2'),
- (Token.Text, u' '),
- (Token.Literal.Number, u'3'),
- (Token.Operator, u')'),
- (Token.Text, u'\n'),
+ (Token.Name.Variable, 'a'),
+ (Token.Operator, '='),
+ (Token.Operator, '('),
+ (Token.Literal.Number, '1'),
+ (Token.Text, ' '),
+ (Token.Literal.Number, '2'),
+ (Token.Text, ' '),
+ (Token.Literal.Number, '3'),
+ (Token.Operator, ')'),
+ (Token.Text, '\n'),
]
assert list(lexer_bash.get_tokens(fragment)) == tokens
def test_end_of_line_nums(lexer_bash):
- fragment = u'a=1\nb=2 # comment\n'
+ fragment = 'a=1\nb=2 # comment\n'
tokens = [
- (Token.Name.Variable, u'a'),
- (Token.Operator, u'='),
- (Token.Literal.Number, u'1'),
- (Token.Text, u'\n'),
- (Token.Name.Variable, u'b'),
- (Token.Operator, u'='),
- (Token.Literal.Number, u'2'),
- (Token.Text, u' '),
- (Token.Comment.Single, u'# comment\n'),
+ (Token.Name.Variable, 'a'),
+ (Token.Operator, '='),
+ (Token.Literal.Number, '1'),
+ (Token.Text, '\n'),
+ (Token.Name.Variable, 'b'),
+ (Token.Operator, '='),
+ (Token.Literal.Number, '2'),
+ (Token.Text, ' '),
+ (Token.Comment.Single, '# comment\n'),
]
assert list(lexer_bash.get_tokens(fragment)) == tokens
def test_newline_in_echo(lexer_session):
- fragment = u'$ echo \\\nhi\nhi\n'
+ fragment = '$ echo \\\nhi\nhi\n'
tokens = [
- (Token.Text, u''),
- (Token.Generic.Prompt, u'$'),
- (Token.Text, u' '),
- (Token.Name.Builtin, u'echo'),
- (Token.Text, u' '),
- (Token.Literal.String.Escape, u'\\\n'),
- (Token.Text, u'hi'),
- (Token.Text, u'\n'),
- (Token.Generic.Output, u'hi\n'),
+ (Token.Text, ''),
+ (Token.Generic.Prompt, '$'),
+ (Token.Text, ' '),
+ (Token.Name.Builtin, 'echo'),
+ (Token.Text, ' '),
+ (Token.Literal.String.Escape, '\\\n'),
+ (Token.Text, 'hi'),
+ (Token.Text, '\n'),
+ (Token.Generic.Output, 'hi\n'),
]
assert list(lexer_session.get_tokens(fragment)) == tokens
def test_msdos_gt_only(lexer_msdos):
- fragment = u'> py\nhi\n'
+ fragment = '> py\nhi\n'
tokens = [
- (Token.Text, u''),
- (Token.Generic.Prompt, u'>'),
- (Token.Text, u' '),
- (Token.Text, u'py'),
- (Token.Text, u''),
- (Token.Text, u'\n'),
- (Token.Generic.Output, u'hi\n'),
+ (Token.Text, ''),
+ (Token.Generic.Prompt, '>'),
+ (Token.Text, ' '),
+ (Token.Text, 'py'),
+ (Token.Text, ''),
+ (Token.Text, '\n'),
+ (Token.Generic.Output, 'hi\n'),
]
assert list(lexer_msdos.get_tokens(fragment)) == tokens
def test_powershell_session(lexer_powershell_session):
- fragment = u'PS C:\\> Get-ChildItem\n'
+ fragment = 'PS C:\\> Get-ChildItem\n'
tokens = [
- (Token.Name.Builtin, u''),
- (Token.Generic.Prompt, u'PS C:\\> '),
- (Token.Name.Builtin, u'Get-ChildItem'),
- (Token.Text, u'\n')
+ (Token.Name.Builtin, ''),
+ (Token.Generic.Prompt, 'PS C:\\> '),
+ (Token.Name.Builtin, 'Get-ChildItem'),
+ (Token.Text, '\n')
]
assert list(lexer_powershell_session.get_tokens(fragment)) == tokens
- fragment = u'PS> Get-ChildItem\n'
+ fragment = 'PS> Get-ChildItem\n'
tokens = [
- (Token.Name.Builtin, u''),
- (Token.Generic.Prompt, u'PS> '),
- (Token.Name.Builtin, u'Get-ChildItem'),
- (Token.Text, u'\n')
+ (Token.Name.Builtin, ''),
+ (Token.Generic.Prompt, 'PS> '),
+ (Token.Name.Builtin, 'Get-ChildItem'),
+ (Token.Text, '\n')
]
assert list(lexer_powershell_session.get_tokens(fragment)) == tokens
- fragment = u'PS > Get-ChildItem\n'
+ fragment = 'PS > Get-ChildItem\n'
tokens = [
- (Token.Name.Builtin, u''),
- (Token.Generic.Prompt, u'PS > '),
- (Token.Name.Builtin, u'Get-ChildItem'),
- (Token.Text, u'\n')
+ (Token.Name.Builtin, ''),
+ (Token.Generic.Prompt, 'PS > '),
+ (Token.Name.Builtin, 'Get-ChildItem'),
+ (Token.Text, '\n')
]
assert list(lexer_powershell_session.get_tokens(fragment)) == tokens
def test_powershell_remoting_session(lexer_powershell_session):
- fragment = u'[Long-NetBIOS-Hostname]: PS C:\\> Get-ChildItem\n'
+ fragment = '[Long-NetBIOS-Hostname]: PS C:\\> Get-ChildItem\n'
tokens = [
- (Token.Name.Builtin, u''),
- (Token.Generic.Prompt, u'[Long-NetBIOS-Hostname]: PS C:\\> '),
- (Token.Name.Builtin, u'Get-ChildItem'),
- (Token.Text, u'\n')
+ (Token.Name.Builtin, ''),
+ (Token.Generic.Prompt, '[Long-NetBIOS-Hostname]: PS C:\\> '),
+ (Token.Name.Builtin, 'Get-ChildItem'),
+ (Token.Text, '\n')
]
assert list(lexer_powershell_session.get_tokens(fragment)) == tokens
def test_virtualenv(lexer_session):
- fragment = u'(env) [~/project]$ foo -h\n'
+ fragment = '(env) [~/project]$ foo -h\n'
tokens = [
- (Token.Text, u''),
- (Token.Generic.Prompt.VirtualEnv, u'(env)'),
- (Token.Text, u''),
- (Token.Text, u' '),
- (Token.Text, u''),
- (Token.Generic.Prompt, u'[~/project]$'),
- (Token.Text, u' '),
- (Token.Text, u'foo'),
- (Token.Text, u' '),
- (Token.Text, u'-h'),
- (Token.Text, u'\n'),
+ (Token.Text, ''),
+ (Token.Generic.Prompt.VirtualEnv, '(env)'),
+ (Token.Text, ''),
+ (Token.Text, ' '),
+ (Token.Text, ''),
+ (Token.Generic.Prompt, '[~/project]$'),
+ (Token.Text, ' '),
+ (Token.Text, 'foo'),
+ (Token.Text, ' '),
+ (Token.Text, '-h'),
+ (Token.Text, '\n'),
]
assert list(lexer_session.get_tokens(fragment)) == tokens
diff --git a/tests/test_smarty.py b/tests/test_smarty.py
index 2b45abee..caf23622 100644
--- a/tests/test_smarty.py
+++ b/tests/test_smarty.py
@@ -19,21 +19,21 @@ def lexer():
def test_nested_curly(lexer):
- fragment = u'{templateFunction param={anotherFunction} param2=$something}\n'
+ fragment = '{templateFunction param={anotherFunction} param2=$something}\n'
tokens = [
- (Token.Comment.Preproc, u'{'),
- (Token.Name.Function, u'templateFunction'),
- (Token.Text, u' '),
- (Token.Name.Attribute, u'param'),
- (Token.Operator, u'='),
- (Token.Comment.Preproc, u'{'),
- (Token.Name.Attribute, u'anotherFunction'),
- (Token.Comment.Preproc, u'}'),
- (Token.Text, u' '),
- (Token.Name.Attribute, u'param2'),
- (Token.Operator, u'='),
- (Token.Name.Variable, u'$something'),
- (Token.Comment.Preproc, u'}'),
- (Token.Other, u'\n'),
+ (Token.Comment.Preproc, '{'),
+ (Token.Name.Function, 'templateFunction'),
+ (Token.Text, ' '),
+ (Token.Name.Attribute, 'param'),
+ (Token.Operator, '='),
+ (Token.Comment.Preproc, '{'),
+ (Token.Name.Attribute, 'anotherFunction'),
+ (Token.Comment.Preproc, '}'),
+ (Token.Text, ' '),
+ (Token.Name.Attribute, 'param2'),
+ (Token.Operator, '='),
+ (Token.Name.Variable, '$something'),
+ (Token.Comment.Preproc, '}'),
+ (Token.Other, '\n'),
]
assert list(lexer.get_tokens(fragment)) == tokens
diff --git a/tests/test_sql.py b/tests/test_sql.py
index ead06de7..bd71d1d0 100644
--- a/tests/test_sql.py
+++ b/tests/test_sql.py
@@ -62,7 +62,7 @@ def test_can_lex_integer(lexer):
def test_can_lex_names(lexer):
_assert_are_tokens_of_type(lexer,
- u'thingy thingy123 _thingy _ _123 Ähnliches Müll #temp1 ##temp2',
+ 'thingy thingy123 _thingy _ _123 Ähnliches Müll #temp1 ##temp2',
Name)
diff --git a/tests/test_textfmts.py b/tests/test_textfmts.py
index f4ce9b33..b8e25b51 100644
--- a/tests/test_textfmts.py
+++ b/tests/test_textfmts.py
@@ -19,62 +19,62 @@ def lexer():
def test_http_status_line(lexer):
- fragment = u'HTTP/1.1 200 OK\n'
+ fragment = 'HTTP/1.1 200 OK\n'
tokens = [
- (Token.Keyword.Reserved, u'HTTP'),
- (Token.Operator, u'/'),
- (Token.Number, u'1.1'),
- (Token.Text, u' '),
- (Token.Number, u'200'),
- (Token.Text, u' '),
- (Token.Name.Exception, u'OK'),
- (Token.Text, u'\n'),
+ (Token.Keyword.Reserved, 'HTTP'),
+ (Token.Operator, '/'),
+ (Token.Number, '1.1'),
+ (Token.Text, ' '),
+ (Token.Number, '200'),
+ (Token.Text, ' '),
+ (Token.Name.Exception, 'OK'),
+ (Token.Text, '\n'),
]
assert list(lexer.get_tokens(fragment)) == tokens
def test_http_status_line_without_reason_phrase(lexer):
- fragment = u'HTTP/1.1 200\n'
+ fragment = 'HTTP/1.1 200\n'
tokens = [
- (Token.Keyword.Reserved, u'HTTP'),
- (Token.Operator, u'/'),
- (Token.Number, u'1.1'),
- (Token.Text, u' '),
- (Token.Number, u'200'),
- (Token.Text, u'\n'),
+ (Token.Keyword.Reserved, 'HTTP'),
+ (Token.Operator, '/'),
+ (Token.Number, '1.1'),
+ (Token.Text, ' '),
+ (Token.Number, '200'),
+ (Token.Text, '\n'),
]
assert list(lexer.get_tokens(fragment)) == tokens
def test_http_status_line_without_reason_phrase_rfc_7230(lexer):
- fragment = u'HTTP/1.1 200 \n'
+ fragment = 'HTTP/1.1 200 \n'
tokens = [
- (Token.Keyword.Reserved, u'HTTP'),
- (Token.Operator, u'/'),
- (Token.Number, u'1.1'),
- (Token.Text, u' '),
- (Token.Number, u'200'),
- (Token.Text, u' '),
- (Token.Text, u'\n'),
+ (Token.Keyword.Reserved, 'HTTP'),
+ (Token.Operator, '/'),
+ (Token.Number, '1.1'),
+ (Token.Text, ' '),
+ (Token.Number, '200'),
+ (Token.Text, ' '),
+ (Token.Text, '\n'),
]
assert list(lexer.get_tokens(fragment)) == tokens
def test_application_xml(lexer):
- fragment = u'GET / HTTP/1.0\nContent-Type: application/xml\n\n<foo>\n'
+ fragment = 'GET / HTTP/1.0\nContent-Type: application/xml\n\n<foo>\n'
tokens = [
- (Token.Name.Tag, u'<foo'),
- (Token.Name.Tag, u'>'),
- (Token.Text, u'\n'),
+ (Token.Name.Tag, '<foo'),
+ (Token.Name.Tag, '>'),
+ (Token.Text, '\n'),
]
assert list(lexer.get_tokens(fragment))[-len(tokens):] == tokens
def test_application_calendar_xml(lexer):
- fragment = u'GET / HTTP/1.0\nContent-Type: application/calendar+xml\n\n<foo>\n'
+ fragment = 'GET / HTTP/1.0\nContent-Type: application/calendar+xml\n\n<foo>\n'
tokens = [
- (Token.Name.Tag, u'<foo'),
- (Token.Name.Tag, u'>'),
- (Token.Text, u'\n'),
+ (Token.Name.Tag, '<foo'),
+ (Token.Name.Tag, '>'),
+ (Token.Text, '\n'),
]
assert list(lexer.get_tokens(fragment))[-len(tokens):] == tokens
diff --git a/tests/test_usd.py b/tests/test_usd.py
index 954820b5..8edebeab 100644..100755
--- a/tests/test_usd.py
+++ b/tests/test_usd.py
@@ -217,66 +217,66 @@ class Features(_Common):
self.assertEqual(
[
- (Keyword.Token, u"custom"),
- (Whitespace, u" "),
- (Keyword.Type, u"int[]"),
- (Whitespace, u" "),
- (Name.Attribute, u"foo"),
- (Whitespace, u" "),
- (Operator, u"="),
- (Whitespace, u" "),
- (Punctuation, u"["),
- (Number, u"8"),
- (Punctuation, u","),
- (Whitespace, u" "),
- (Number, u"10"),
- (Punctuation, u","),
- (Whitespace, u" "),
- (Number, u"14"),
- (Punctuation, u"]"),
- (Whitespace, u"\n"),
- (Keyword.Token, u"custom"),
- (Whitespace, u" "),
- (Keyword.Type, u"int[]"),
- (Whitespace, u" "),
- (Name.Attribute, u"foo"),
- (Text, u"."),
- (Name.Keyword.Tokens, u"timeSamples"),
- (Whitespace, u" "),
- (Operator, u"="),
- (Whitespace, u" "),
- (Punctuation, u"{"),
- (Whitespace, u"\n "),
- (Number, u"1"),
- (Punctuation, u":"),
- (Whitespace, u" "),
- (Punctuation, u"["),
- (Number, u"8"),
- (Punctuation, u","),
- (Whitespace, u" "),
- (Number, u"0"),
- (Punctuation, u","),
- (Whitespace, u" "),
- (Number, u"14"),
- (Punctuation, u"]"),
- (Punctuation, u","),
- (Whitespace, u"\n "),
- (Number, u"2"),
- (Punctuation, u":"),
- (Whitespace, u" "),
- (Punctuation, u"["),
- (Number, u"-8"),
- (Punctuation, u","),
- (Whitespace, u" "),
- (Number, u"0"),
- (Punctuation, u","),
- (Whitespace, u" "),
- (Number, u"14"),
- (Punctuation, u"]"),
- (Punctuation, u","),
- (Whitespace, u"\n"),
- (Punctuation, u"}"),
- (Whitespace, u"\n"),
+ (Keyword.Token, "custom"),
+ (Whitespace, " "),
+ (Keyword.Type, "int[]"),
+ (Whitespace, " "),
+ (Name.Attribute, "foo"),
+ (Whitespace, " "),
+ (Operator, "="),
+ (Whitespace, " "),
+ (Punctuation, "["),
+ (Number, "8"),
+ (Punctuation, ","),
+ (Whitespace, " "),
+ (Number, "10"),
+ (Punctuation, ","),
+ (Whitespace, " "),
+ (Number, "14"),
+ (Punctuation, "]"),
+ (Whitespace, "\n"),
+ (Keyword.Token, "custom"),
+ (Whitespace, " "),
+ (Keyword.Type, "int[]"),
+ (Whitespace, " "),
+ (Name.Attribute, "foo"),
+ (Text, "."),
+ (Name.Keyword.Tokens, "timeSamples"),
+ (Whitespace, " "),
+ (Operator, "="),
+ (Whitespace, " "),
+ (Punctuation, "{"),
+ (Whitespace, "\n "),
+ (Number, "1"),
+ (Punctuation, ":"),
+ (Whitespace, " "),
+ (Punctuation, "["),
+ (Number, "8"),
+ (Punctuation, ","),
+ (Whitespace, " "),
+ (Number, "0"),
+ (Punctuation, ","),
+ (Whitespace, " "),
+ (Number, "14"),
+ (Punctuation, "]"),
+ (Punctuation, ","),
+ (Whitespace, "\n "),
+ (Number, "2"),
+ (Punctuation, ":"),
+ (Whitespace, " "),
+ (Punctuation, "["),
+ (Number, "-8"),
+ (Punctuation, ","),
+ (Whitespace, " "),
+ (Number, "0"),
+ (Punctuation, ","),
+ (Whitespace, " "),
+ (Number, "14"),
+ (Punctuation, "]"),
+ (Punctuation, ","),
+ (Whitespace, "\n"),
+ (Punctuation, "}"),
+ (Whitespace, "\n"),
],
self._get(timesamples),
)
@@ -292,8 +292,8 @@ class Features(_Common):
self.assertEqual(
[
- (String, u'"""\ncustom int[] foo = [8, 10, 14]\n"""'),
- (Whitespace, u"\n"),
+ (String, '"""\ncustom int[] foo = [8, 10, 14]\n"""'),
+ (Whitespace, "\n"),
],
self._get(code),
)
@@ -304,23 +304,23 @@ class Features(_Common):
self.assertEqual(
[
- (Number, u"8"),
- (Whitespace, u" "),
- (Number, u"8.0123312132"),
- (Punctuation, u","),
- (Whitespace, u" "),
- (Number, u"-4"),
- (Whitespace, u" "),
- (Number, u"-14.123"),
- (Whitespace, u" "),
- (Number, u"1e10"),
- (Whitespace, u" "),
- (Number, u"0.1e10"),
- (Whitespace, u" "),
- (Number, u"10.123e+10"),
- (Whitespace, u" "),
- (Number, u"0.123e-14"),
- (Whitespace, u"\n"),
+ (Number, "8"),
+ (Whitespace, " "),
+ (Number, "8.0123312132"),
+ (Punctuation, ","),
+ (Whitespace, " "),
+ (Number, "-4"),
+ (Whitespace, " "),
+ (Number, "-14.123"),
+ (Whitespace, " "),
+ (Number, "1e10"),
+ (Whitespace, " "),
+ (Number, "0.1e10"),
+ (Whitespace, " "),
+ (Number, "10.123e+10"),
+ (Whitespace, " "),
+ (Number, "0.123e-14"),
+ (Whitespace, "\n"),
],
self._get(code),
)
@@ -349,86 +349,86 @@ class Features(_Common):
self.assertEqual(
[
- (Keyword.Tokens, u"def"),
- (Whitespace, u" "),
- (Text, u"Xform"),
- (Whitespace, u" "),
- (String, u'"BottleMedical"'),
- (Whitespace, u" "),
- (Punctuation, u"("),
- (Whitespace, u"\n "),
- (Name.Builtins, u"kind"),
- (Whitespace, u" "),
- (Operator, u"="),
- (Whitespace, u" "),
- (String, u'"prop"'),
- (Whitespace, u"\n "),
- (Keyword.Tokens, u"payload"),
- (Whitespace, u" "),
- (Operator, u"="),
- (Whitespace, u" "),
- (String.Interpol, u"@./BottleMedical_payload.usd@"),
- (Name.Namespace, u"</BottleMedical>"),
- (Whitespace, u"\n "),
- (Keyword.Tokens, u"variants"),
- (Whitespace, u" "),
- (Operator, u"="),
- (Whitespace, u" "),
- (Punctuation, u"{"),
- (Whitespace, u"\n "),
- (Keyword.Type, u"string"),
- (Whitespace, u" "),
- (Name.Attribute, u"modelingVariant"),
- (Whitespace, u" "),
- (Operator, u"="),
- (Whitespace, u" "),
- (String, u'"LiquidBottleLg"'),
- (Whitespace, u"\n "),
- (Keyword.Type, u"string"),
- (Whitespace, u" "),
- (Name.Attribute, u"shadingComplexity"),
- (Whitespace, u" "),
- (Operator, u"="),
- (Whitespace, u" "),
- (String, u'"full"'),
- (Whitespace, u"\n "),
- (Punctuation, u"}"),
- (Whitespace, u"\n "),
- (Keyword.Type, u"add"),
- (Text.Whitespace, u" "),
- (Name.Attribute, u"variantSets"),
- (Text.Whitespace, u" "),
- (Operator, u"="),
- (Whitespace, u" "),
- (Punctuation, u"["),
- (String, u'"modelingVariant"'),
- (Punctuation, u","),
- (Whitespace, u" "),
- (String, u'"shadingComplexity"'),
- (Punctuation, u"]"),
- (Whitespace, u"\n"),
- (Punctuation, u")"),
- (Whitespace, u"\n"),
- (Punctuation, u"{"),
- (Whitespace, u"\n "),
- (Keyword.Tokens, u"variantSet"),
- (Whitespace, u" "),
- (String, u'"modelingVariant"'),
- (Whitespace, u" "),
- (Operator, u"="),
- (Whitespace, u" "),
- (Punctuation, u"{"),
- (Whitespace, u"\n "),
- (String, u'"ALL_VARIANTS"'),
- (Whitespace, u" "),
- (Punctuation, u"{"),
- (Whitespace, u"\n "),
- (Punctuation, u"}"),
- (Whitespace, u"\n "),
- (Punctuation, u"}"),
- (Whitespace, u"\n"),
- (Punctuation, u"}"),
- (Whitespace, u"\n"),
+ (Keyword.Tokens, "def"),
+ (Whitespace, " "),
+ (Text, "Xform"),
+ (Whitespace, " "),
+ (String, '"BottleMedical"'),
+ (Whitespace, " "),
+ (Punctuation, "("),
+ (Whitespace, "\n "),
+ (Name.Builtins, "kind"),
+ (Whitespace, " "),
+ (Operator, "="),
+ (Whitespace, " "),
+ (String, '"prop"'),
+ (Whitespace, "\n "),
+ (Keyword.Tokens, "payload"),
+ (Whitespace, " "),
+ (Operator, "="),
+ (Whitespace, " "),
+ (String.Interpol, "@./BottleMedical_payload.usd@"),
+ (Name.Namespace, "</BottleMedical>"),
+ (Whitespace, "\n "),
+ (Keyword.Tokens, "variants"),
+ (Whitespace, " "),
+ (Operator, "="),
+ (Whitespace, " "),
+ (Punctuation, "{"),
+ (Whitespace, "\n "),
+ (Keyword.Type, "string"),
+ (Whitespace, " "),
+ (Name.Attribute, "modelingVariant"),
+ (Whitespace, " "),
+ (Operator, "="),
+ (Whitespace, " "),
+ (String, '"LiquidBottleLg"'),
+ (Whitespace, "\n "),
+ (Keyword.Type, "string"),
+ (Whitespace, " "),
+ (Name.Attribute, "shadingComplexity"),
+ (Whitespace, " "),
+ (Operator, "="),
+ (Whitespace, " "),
+ (String, '"full"'),
+ (Whitespace, "\n "),
+ (Punctuation, "}"),
+ (Whitespace, "\n "),
+ (Keyword.Type, "add"),
+ (Text.Whitespace, " "),
+ (Name.Attribute, "variantSets"),
+ (Text.Whitespace, " "),
+ (Operator, "="),
+ (Whitespace, " "),
+ (Punctuation, "["),
+ (String, '"modelingVariant"'),
+ (Punctuation, ","),
+ (Whitespace, " "),
+ (String, '"shadingComplexity"'),
+ (Punctuation, "]"),
+ (Whitespace, "\n"),
+ (Punctuation, ")"),
+ (Whitespace, "\n"),
+ (Punctuation, "{"),
+ (Whitespace, "\n "),
+ (Keyword.Tokens, "variantSet"),
+ (Whitespace, " "),
+ (String, '"modelingVariant"'),
+ (Whitespace, " "),
+ (Operator, "="),
+ (Whitespace, " "),
+ (Punctuation, "{"),
+ (Whitespace, "\n "),
+ (String, '"ALL_VARIANTS"'),
+ (Whitespace, " "),
+ (Punctuation, "{"),
+ (Whitespace, "\n "),
+ (Punctuation, "}"),
+ (Whitespace, "\n "),
+ (Punctuation, "}"),
+ (Whitespace, "\n"),
+ (Punctuation, "}"),
+ (Whitespace, "\n"),
],
self._get(code),
)
@@ -438,13 +438,13 @@ class Features(_Common):
code = '"Some \'text"'
self.assertEqual(
- [(String, code), (Whitespace, u"\n")], self._get(code),
+ [(String, code), (Whitespace, "\n")], self._get(code),
)
def test_string_multiple_line(self):
"""Check that different multi-line strings work correctly."""
code1 = textwrap.dedent(
- u'''\
+ '''\
"""
Some text multiline
"""'''
@@ -455,7 +455,7 @@ class Features(_Common):
)
code2 = textwrap.dedent(
- u'''\
+ '''\
"""Some text multiline
"""'''
)
@@ -465,7 +465,7 @@ class Features(_Common):
)
code3 = textwrap.dedent(
- u'''\
+ '''\
"""
Some text multiline"""'''
)
@@ -491,32 +491,32 @@ class EdgeCases(_Common):
self.assertEqual(
[
- (Keyword.Type, u"float[]"),
- (Whitespace, u" "),
- (Name.Attribute, u"primvars:skel:jointWeights"),
- (Whitespace, u" "),
- (Operator, u"="),
- (Whitespace, u" "),
- (Punctuation, u"["),
- (Number, u"1"),
- (Punctuation, u"]"),
- (Whitespace, u" "),
- (Punctuation, u"("),
- (Whitespace, u"\n "),
- (Name.Builtins, u"elementSize"),
- (Whitespace, u" "),
- (Operator, u"="),
- (Whitespace, u" "),
- (Number, u"1"),
- (Whitespace, u"\n "),
- (Name.Builtins, u"interpolation"),
- (Whitespace, u" "),
- (Operator, u"="),
- (Whitespace, u" "),
- (String, u'"constant"'),
- (Whitespace, u"\n"),
- (Punctuation, u")"),
- (Whitespace, u"\n"),
+ (Keyword.Type, "float[]"),
+ (Whitespace, " "),
+ (Name.Attribute, "primvars:skel:jointWeights"),
+ (Whitespace, " "),
+ (Operator, "="),
+ (Whitespace, " "),
+ (Punctuation, "["),
+ (Number, "1"),
+ (Punctuation, "]"),
+ (Whitespace, " "),
+ (Punctuation, "("),
+ (Whitespace, "\n "),
+ (Name.Builtins, "elementSize"),
+ (Whitespace, " "),
+ (Operator, "="),
+ (Whitespace, " "),
+ (Number, "1"),
+ (Whitespace, "\n "),
+ (Name.Builtins, "interpolation"),
+ (Whitespace, " "),
+ (Operator, "="),
+ (Whitespace, " "),
+ (String, '"constant"'),
+ (Whitespace, "\n"),
+ (Punctuation, ")"),
+ (Whitespace, "\n"),
],
self._get(code),
)
@@ -527,14 +527,14 @@ class EdgeCases(_Common):
self.assertEqual(
[
- (String.Interpol, u"@firststring@"),
- (Whitespace, u" "),
- (Text, u"something"),
- (Whitespace, u" "),
- (Text, u"else"),
- (Whitespace, u" "),
- (String.Interpol, u"@secondstring@"),
- (Whitespace, u"\n"),
+ (String.Interpol, "@firststring@"),
+ (Whitespace, " "),
+ (Text, "something"),
+ (Whitespace, " "),
+ (Text, "else"),
+ (Whitespace, " "),
+ (String.Interpol, "@secondstring@"),
+ (Whitespace, "\n"),
],
self._get(at_sign),
)
@@ -543,14 +543,14 @@ class EdgeCases(_Common):
self.assertEqual(
[
- (String, u"'firststring'"),
- (Whitespace, u" "),
- (Text, u"something"),
- (Whitespace, u" "),
- (Text, u"else"),
- (Whitespace, u" "),
- (String, u"'secondstring'"),
- (Whitespace, u"\n"),
+ (String, "'firststring'"),
+ (Whitespace, " "),
+ (Text, "something"),
+ (Whitespace, " "),
+ (Text, "else"),
+ (Whitespace, " "),
+ (String, "'secondstring'"),
+ (Whitespace, "\n"),
],
self._get(single),
)
@@ -559,14 +559,14 @@ class EdgeCases(_Common):
self.assertEqual(
[
- (String, u"'firststring'"),
- (Whitespace, u" "),
- (Text, u"something"),
- (Whitespace, u" "),
- (Text, u"else"),
- (Whitespace, u" "),
- (String, u"'secondstring'"),
- (Whitespace, u"\n"),
+ (String, "'firststring'"),
+ (Whitespace, " "),
+ (Text, "something"),
+ (Whitespace, " "),
+ (Text, "else"),
+ (Whitespace, " "),
+ (String, "'secondstring'"),
+ (Whitespace, "\n"),
],
self._get(double),
)
diff --git a/tests/test_util.py b/tests/test_util.py
index 81b3b054..b90397ea 100644
--- a/tests/test_util.py
+++ b/tests/test_util.py
@@ -127,23 +127,6 @@ def test_xml():
assert not util.looks_like_xml('<html>')
-def test_unirange():
- first_non_bmp = u'\U00010000'
- r = re.compile(util.unirange(0x10000, 0x20000))
- m = r.match(first_non_bmp)
- assert m
- assert m.end() == len(first_non_bmp)
- assert not r.match(u'\uffff')
- assert not r.match(u'xxx')
- # Tests that end is inclusive
- r = re.compile(util.unirange(0x10000, 0x10000) + '+')
- # Tests that the plus works for the entire unicode point, if narrow
- # build
- m = r.match(first_non_bmp * 2)
- assert m
- assert m.end() == len(first_non_bmp) * 2
-
-
def test_format_lines():
lst = ['cat', 'dog']
output = util.format_lines('var', lst)
@@ -173,8 +156,8 @@ def test_duplicates_removed_nonconsecutive():
def test_guess_decode():
# UTF-8 should be decoded as UTF-8
- s = util.guess_decode(u'\xff'.encode('utf-8'))
- assert s == (u'\xff', 'utf-8')
+ s = util.guess_decode('\xff'.encode('utf-8'))
+ assert s == ('\xff', 'utf-8')
# otherwise, it could be latin1 or the locale encoding...
import locale
@@ -186,11 +169,11 @@ def test_guess_decode_from_terminal():
class Term:
encoding = 'utf-7'
- s = util.guess_decode_from_terminal(u'\xff'.encode('utf-7'), Term)
- assert s == (u'\xff', 'utf-7')
+ s = util.guess_decode_from_terminal('\xff'.encode('utf-7'), Term)
+ assert s == ('\xff', 'utf-7')
- s = util.guess_decode_from_terminal(u'\xff'.encode('utf-8'), Term)
- assert s == (u'\xff', 'utf-8')
+ s = util.guess_decode_from_terminal('\xff'.encode('utf-8'), Term)
+ assert s == ('\xff', 'utf-8')
def test_console_ansiformat():
diff --git a/tests/test_whiley.py b/tests/test_whiley.py
index e844dafb..c895e17f 100644
--- a/tests/test_whiley.py
+++ b/tests/test_whiley.py
@@ -19,13 +19,13 @@ def lexer():
def test_whiley_operator(lexer):
- fragment = u'123 \u2200 x\n'
+ fragment = '123 \u2200 x\n'
tokens = [
- (Token.Literal.Number.Integer, u'123'),
- (Token.Text, u' '),
- (Token.Operator, u'\u2200'),
- (Token.Text, u' '),
- (Token.Name, u'x'),
- (Token.Text, u'\n'),
+ (Token.Literal.Number.Integer, '123'),
+ (Token.Text, ' '),
+ (Token.Operator, '\u2200'),
+ (Token.Text, ' '),
+ (Token.Name, 'x'),
+ (Token.Text, '\n'),
]
assert list(lexer.get_tokens(fragment)) == tokens
diff --git a/tests/test_yang.py b/tests/test_yang.py
index 1de57d05..e2449b59 100644
--- a/tests/test_yang.py
+++ b/tests/test_yang.py
@@ -20,13 +20,13 @@ def test_namespace_1(lexer):
"""
Namespace `urn:test:std:yang` should not be explicitly highlighted
"""
- fragment = u'namespace urn:test:std:yang;\n'
+ fragment = 'namespace urn:test:std:yang;\n'
tokens = [
- (Token.Keyword, u'namespace'),
- (Token.Text.Whitespace, u' '),
- (Token.Name.Variable, u'urn:test:std:yang'),
- (Token.Punctuation, u';'),
- (Token.Text.Whitespace, u'\n'),
+ (Token.Keyword, 'namespace'),
+ (Token.Text.Whitespace, ' '),
+ (Token.Name.Variable, 'urn:test:std:yang'),
+ (Token.Punctuation, ';'),
+ (Token.Text.Whitespace, '\n'),
]
assert list(lexer.get_tokens(fragment)) == tokens
@@ -34,15 +34,15 @@ def test_namespace_2(lexer):
"""
namespace-prefix `yang` should be explicitly highlighted
"""
- fragment = u'type yang:counter64;\n'
+ fragment = 'type yang:counter64;\n'
tokens = [
- (Token.Keyword, u'type'),
- (Token.Text.Whitespace, u' '),
- (Token.Name.Namespace, u'yang'),
- (Token.Punctuation, u':'),
- (Token.Name.Variable, u'counter64'),
- (Token.Punctuation, u';'),
- (Token.Text.Whitespace, u'\n'),
+ (Token.Keyword, 'type'),
+ (Token.Text.Whitespace, ' '),
+ (Token.Name.Namespace, 'yang'),
+ (Token.Punctuation, ':'),
+ (Token.Name.Variable, 'counter64'),
+ (Token.Punctuation, ';'),
+ (Token.Text.Whitespace, '\n'),
]
assert list(lexer.get_tokens(fragment)) == tokens
@@ -50,13 +50,13 @@ def test_revision_date(lexer):
"""
Revision-date `2020-08-03` should be explicitly highlighted
"""
- fragment = u'revision 2020-03-08{\n'
+ fragment = 'revision 2020-03-08{\n'
tokens = [
- (Token.Keyword, u'revision'),
- (Token.Text.Whitespace, u' '),
- (Token.Name.Label, u'2020-03-08'),
- (Token.Punctuation, u'{'),
- (Token.Text.Whitespace, u'\n'),
+ (Token.Keyword, 'revision'),
+ (Token.Text.Whitespace, ' '),
+ (Token.Name.Label, '2020-03-08'),
+ (Token.Punctuation, '{'),
+ (Token.Text.Whitespace, '\n'),
]
assert list(lexer.get_tokens(fragment)) == tokens
@@ -64,13 +64,13 @@ def test_integer_value(lexer):
"""
Integer value `5` should be explicitly highlighted
"""
- fragment = u'value 5;\n'
+ fragment = 'value 5;\n'
tokens = [
- (Token.Keyword, u'value'),
- (Token.Text.Whitespace, u' '),
- (Token.Number.Integer, u'5'),
- (Token.Punctuation, u';'),
- (Token.Text.Whitespace, u'\n'),
+ (Token.Keyword, 'value'),
+ (Token.Text.Whitespace, ' '),
+ (Token.Number.Integer, '5'),
+ (Token.Punctuation, ';'),
+ (Token.Text.Whitespace, '\n'),
]
assert list(lexer.get_tokens(fragment)) == tokens
@@ -78,13 +78,13 @@ def test_string_value(lexer):
"""
String value `"5"` should be not explicitly highlighted
"""
- fragment = u'value "5";\n'
+ fragment = 'value "5";\n'
tokens = [
- (Token.Keyword, u'value'),
- (Token.Text.Whitespace, u' '),
- (Token.String.Double, u'"5"'),
- (Token.Punctuation, u';'),
- (Token.Text.Whitespace, u'\n'),
+ (Token.Keyword, 'value'),
+ (Token.Text.Whitespace, ' '),
+ (Token.String.Double, '"5"'),
+ (Token.Punctuation, ';'),
+ (Token.Text.Whitespace, '\n'),
]
assert list(lexer.get_tokens(fragment)) == tokens
@@ -92,12 +92,12 @@ def test_float_value(lexer):
"""
Float value `1.1` should be explicitly highlighted
"""
- fragment = u'yang-version 1.1;\n'
+ fragment = 'yang-version 1.1;\n'
tokens = [
- (Token.Keyword, u'yang-version'),
- (Token.Text.Whitespace, u' '),
- (Token.Number.Float, u'1.1'),
- (Token.Punctuation, u';'),
- (Token.Text.Whitespace, u'\n'),
+ (Token.Keyword, 'yang-version'),
+ (Token.Text.Whitespace, ' '),
+ (Token.Number.Float, '1.1'),
+ (Token.Punctuation, ';'),
+ (Token.Text.Whitespace, '\n'),
]
assert list(lexer.get_tokens(fragment)) == tokens