pygments.rb 0.2.4 → 0.2.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (120) hide show
  1. data/lib/pygments/version.rb +1 -1
  2. data/vendor/pygments-main/AUTHORS +14 -0
  3. data/vendor/pygments-main/CHANGES +34 -3
  4. data/vendor/pygments-main/Makefile +1 -1
  5. data/vendor/pygments-main/docs/generate.py +1 -1
  6. data/vendor/pygments-main/external/markdown-processor.py +1 -1
  7. data/vendor/pygments-main/external/moin-parser.py +1 -1
  8. data/vendor/pygments-main/external/rst-directive-old.py +1 -1
  9. data/vendor/pygments-main/external/rst-directive.py +1 -1
  10. data/vendor/pygments-main/pygments/__init__.py +1 -1
  11. data/vendor/pygments-main/pygments/cmdline.py +4 -1
  12. data/vendor/pygments-main/pygments/console.py +1 -1
  13. data/vendor/pygments-main/pygments/filter.py +1 -1
  14. data/vendor/pygments-main/pygments/filters/__init__.py +1 -1
  15. data/vendor/pygments-main/pygments/formatter.py +1 -1
  16. data/vendor/pygments-main/pygments/formatters/__init__.py +1 -1
  17. data/vendor/pygments-main/pygments/formatters/_mapping.py +1 -1
  18. data/vendor/pygments-main/pygments/formatters/bbcode.py +1 -1
  19. data/vendor/pygments-main/pygments/formatters/html.py +2 -2
  20. data/vendor/pygments-main/pygments/formatters/img.py +1 -1
  21. data/vendor/pygments-main/pygments/formatters/latex.py +3 -2
  22. data/vendor/pygments-main/pygments/formatters/other.py +1 -1
  23. data/vendor/pygments-main/pygments/formatters/rtf.py +1 -1
  24. data/vendor/pygments-main/pygments/formatters/svg.py +1 -1
  25. data/vendor/pygments-main/pygments/formatters/terminal.py +5 -2
  26. data/vendor/pygments-main/pygments/formatters/terminal256.py +5 -2
  27. data/vendor/pygments-main/pygments/lexer.py +29 -10
  28. data/vendor/pygments-main/pygments/lexers/__init__.py +14 -11
  29. data/vendor/pygments-main/pygments/lexers/_asybuiltins.py +1 -1
  30. data/vendor/pygments-main/pygments/lexers/_clbuiltins.py +1 -1
  31. data/vendor/pygments-main/pygments/lexers/_luabuiltins.py +1 -1
  32. data/vendor/pygments-main/pygments/lexers/_mapping.py +41 -23
  33. data/vendor/pygments-main/pygments/lexers/_phpbuiltins.py +1 -1
  34. data/vendor/pygments-main/pygments/lexers/_postgres_builtins.py +1 -1
  35. data/vendor/pygments-main/pygments/lexers/_scilab_builtins.py +29 -0
  36. data/vendor/pygments-main/pygments/lexers/_vimbuiltins.py +3 -3
  37. data/vendor/pygments-main/pygments/lexers/agile.py +148 -443
  38. data/vendor/pygments-main/pygments/lexers/asm.py +5 -3
  39. data/vendor/pygments-main/pygments/lexers/compiled.py +298 -294
  40. data/vendor/pygments-main/pygments/lexers/dotnet.py +40 -34
  41. data/vendor/pygments-main/pygments/lexers/functional.py +723 -4
  42. data/vendor/pygments-main/pygments/lexers/hdl.py +228 -6
  43. data/vendor/pygments-main/pygments/lexers/jvm.py +678 -0
  44. data/vendor/pygments-main/pygments/lexers/math.py +65 -2
  45. data/vendor/pygments-main/pygments/lexers/other.py +875 -481
  46. data/vendor/pygments-main/pygments/lexers/parsers.py +1 -1
  47. data/vendor/pygments-main/pygments/lexers/shell.py +360 -0
  48. data/vendor/pygments-main/pygments/lexers/special.py +1 -1
  49. data/vendor/pygments-main/pygments/lexers/sql.py +565 -0
  50. data/vendor/pygments-main/pygments/lexers/templates.py +1 -1
  51. data/vendor/pygments-main/pygments/lexers/text.py +237 -100
  52. data/vendor/pygments-main/pygments/lexers/web.py +146 -10
  53. data/vendor/pygments-main/pygments/plugin.py +1 -1
  54. data/vendor/pygments-main/pygments/scanner.py +1 -1
  55. data/vendor/pygments-main/pygments/style.py +1 -1
  56. data/vendor/pygments-main/pygments/styles/__init__.py +2 -1
  57. data/vendor/pygments-main/pygments/styles/autumn.py +1 -1
  58. data/vendor/pygments-main/pygments/styles/borland.py +1 -1
  59. data/vendor/pygments-main/pygments/styles/bw.py +1 -1
  60. data/vendor/pygments-main/pygments/styles/colorful.py +1 -1
  61. data/vendor/pygments-main/pygments/styles/default.py +1 -1
  62. data/vendor/pygments-main/pygments/styles/emacs.py +1 -1
  63. data/vendor/pygments-main/pygments/styles/friendly.py +1 -1
  64. data/vendor/pygments-main/pygments/styles/fruity.py +1 -2
  65. data/vendor/pygments-main/pygments/styles/manni.py +1 -1
  66. data/vendor/pygments-main/pygments/styles/monokai.py +1 -1
  67. data/vendor/pygments-main/pygments/styles/murphy.py +1 -1
  68. data/vendor/pygments-main/pygments/styles/native.py +1 -1
  69. data/vendor/pygments-main/pygments/styles/pastie.py +1 -1
  70. data/vendor/pygments-main/pygments/styles/perldoc.py +1 -1
  71. data/vendor/pygments-main/pygments/styles/rrt.py +33 -0
  72. data/vendor/pygments-main/pygments/styles/tango.py +1 -1
  73. data/vendor/pygments-main/pygments/styles/trac.py +1 -1
  74. data/vendor/pygments-main/pygments/styles/vim.py +1 -1
  75. data/vendor/pygments-main/pygments/styles/vs.py +1 -1
  76. data/vendor/pygments-main/pygments/token.py +1 -1
  77. data/vendor/pygments-main/pygments/unistring.py +1 -1
  78. data/vendor/pygments-main/pygments/util.py +2 -2
  79. data/vendor/pygments-main/scripts/check_sources.py +2 -2
  80. data/vendor/pygments-main/scripts/find_codetags.py +1 -1
  81. data/vendor/pygments-main/scripts/find_error.py +5 -2
  82. data/vendor/pygments-main/scripts/get_vimkw.py +9 -4
  83. data/vendor/pygments-main/setup.py +1 -1
  84. data/vendor/pygments-main/tests/examplefiles/classes.dylan +16 -0
  85. data/vendor/pygments-main/tests/examplefiles/coq_RelationClasses +447 -0
  86. data/vendor/pygments-main/tests/examplefiles/example.cls +15 -0
  87. data/vendor/pygments-main/tests/examplefiles/example.moon +629 -0
  88. data/vendor/pygments-main/tests/examplefiles/example.p +34 -0
  89. data/vendor/pygments-main/tests/examplefiles/example.snobol +15 -0
  90. data/vendor/pygments-main/tests/examplefiles/example.u +548 -0
  91. data/vendor/pygments-main/tests/examplefiles/example_elixir.ex +363 -0
  92. data/vendor/pygments-main/tests/examplefiles/foo.sce +6 -0
  93. data/vendor/pygments-main/tests/examplefiles/http_request_example +14 -0
  94. data/vendor/pygments-main/tests/examplefiles/http_response_example +27 -0
  95. data/vendor/pygments-main/tests/examplefiles/irc.lsp +214 -0
  96. data/vendor/pygments-main/tests/examplefiles/markdown.lsp +679 -0
  97. data/vendor/pygments-main/tests/examplefiles/nemerle_sample.n +4 -2
  98. data/vendor/pygments-main/tests/examplefiles/reversi.lsp +427 -0
  99. data/vendor/pygments-main/tests/examplefiles/scilab.sci +30 -0
  100. data/vendor/pygments-main/tests/examplefiles/test.bro +250 -0
  101. data/vendor/pygments-main/tests/examplefiles/test.cs +23 -0
  102. data/vendor/pygments-main/tests/examplefiles/test.dart +23 -0
  103. data/vendor/pygments-main/tests/examplefiles/test.ecl +58 -0
  104. data/vendor/pygments-main/tests/examplefiles/test.fan +818 -0
  105. data/vendor/pygments-main/tests/examplefiles/test.ps1 +108 -0
  106. data/vendor/pygments-main/tests/examplefiles/test.vhdl +161 -0
  107. data/vendor/pygments-main/tests/old_run.py +1 -1
  108. data/vendor/pygments-main/tests/run.py +1 -1
  109. data/vendor/pygments-main/tests/test_basic_api.py +4 -3
  110. data/vendor/pygments-main/tests/test_clexer.py +1 -1
  111. data/vendor/pygments-main/tests/test_cmdline.py +1 -1
  112. data/vendor/pygments-main/tests/test_examplefiles.py +4 -3
  113. data/vendor/pygments-main/tests/test_html_formatter.py +33 -1
  114. data/vendor/pygments-main/tests/test_latex_formatter.py +1 -1
  115. data/vendor/pygments-main/tests/test_perllexer.py +137 -0
  116. data/vendor/pygments-main/tests/test_regexlexer.py +1 -1
  117. data/vendor/pygments-main/tests/test_token.py +1 -1
  118. data/vendor/pygments-main/tests/test_using_api.py +1 -1
  119. data/vendor/pygments-main/tests/test_util.py +35 -5
  120. metadata +30 -4
@@ -5,7 +5,7 @@
5
5
 
6
6
  Lexers for assembly languages.
7
7
 
8
- :copyright: Copyright 2006-2011 by the Pygments team, see AUTHORS.
8
+ :copyright: Copyright 2006-2012 by the Pygments team, see AUTHORS.
9
9
  :license: BSD, see LICENSE for details.
10
10
  """
11
11
 
@@ -13,7 +13,8 @@ import re
13
13
 
14
14
  from pygments.lexer import RegexLexer, include, bygroups, using, DelegatingLexer
15
15
  from pygments.lexers.compiled import DLexer, CppLexer, CLexer
16
- from pygments.token import *
16
+ from pygments.token import Text, Name, Number, String, Comment, Punctuation, \
17
+ Other, Keyword, Operator
17
18
 
18
19
  __all__ = ['GasLexer', 'ObjdumpLexer','DObjdumpLexer', 'CppObjdumpLexer',
19
20
  'CObjdumpLexer', 'LlvmLexer', 'NasmLexer']
@@ -72,6 +73,7 @@ class GasLexer(RegexLexer):
72
73
  ('%' + identifier, Name.Variable),
73
74
  # Numeric constants
74
75
  ('$'+number, Number.Integer),
76
+ (r"$'(.|\\')'", String.Char),
75
77
  (r'[\r\n]+', Text, '#pop'),
76
78
  (r'#.*?$', Comment, '#pop'),
77
79
  include('punctuation'),
@@ -300,7 +302,7 @@ class NasmLexer(RegexLexer):
300
302
  binn = r'[01]+b'
301
303
  decn = r'[0-9]+'
302
304
  floatn = decn + r'\.e?' + decn
303
- string = r'"(\\"|[^"])*"|' + r"'(\\'|[^'])*'"
305
+ string = r'"(\\"|[^"\n])*"|' + r"'(\\'|[^'\n])*'|" + r"`(\\`|[^`\n])*`"
304
306
  declkw = r'(?:res|d)[bwdqt]|times'
305
307
  register = (r'[a-d][lh]|e?[a-d]x|e?[sb]p|e?[sd]i|[c-gs]s|st[0-7]|'
306
308
  r'mm[0-7]|cr[0-4]|dr[0-367]|tr[3-7]')
@@ -5,29 +5,29 @@
5
5
 
6
6
  Lexers for compiled languages.
7
7
 
8
- :copyright: Copyright 2006-2011 by the Pygments team, see AUTHORS.
8
+ :copyright: Copyright 2006-2012 by the Pygments team, see AUTHORS.
9
9
  :license: BSD, see LICENSE for details.
10
10
  """
11
11
 
12
12
  import re
13
+ from string import Template
13
14
 
14
- from pygments.scanner import Scanner
15
15
  from pygments.lexer import Lexer, RegexLexer, include, bygroups, using, \
16
- this, combined
16
+ this, combined
17
17
  from pygments.util import get_bool_opt, get_list_opt
18
- from pygments.token import \
19
- Text, Comment, Operator, Keyword, Name, String, Number, Punctuation, \
20
- Error
18
+ from pygments.token import Text, Comment, Operator, Keyword, Name, String, \
19
+ Number, Punctuation, Error, Literal
20
+ from pygments.scanner import Scanner
21
21
 
22
22
  # backwards compatibility
23
23
  from pygments.lexers.functional import OcamlLexer
24
+ from pygments.lexers.jvm import JavaLexer, ScalaLexer
24
25
 
25
- __all__ = ['CLexer', 'CppLexer', 'DLexer', 'DelphiLexer', 'ECLexer', 'JavaLexer',
26
- 'ScalaLexer', 'DylanLexer', 'OcamlLexer', 'ObjectiveCLexer',
27
- 'FortranLexer', 'GLShaderLexer', 'PrologLexer', 'CythonLexer',
28
- 'ValaLexer', 'OocLexer', 'GoLexer', 'FelixLexer', 'AdaLexer',
29
- 'Modula2Lexer', 'BlitzMaxLexer', 'NimrodLexer', 'GosuLexer',
30
- 'GosuTemplateLexer']
26
+ __all__ = ['CLexer', 'CppLexer', 'DLexer', 'DelphiLexer', 'ECLexer',
27
+ 'DylanLexer', 'ObjectiveCLexer', 'FortranLexer', 'GLShaderLexer',
28
+ 'PrologLexer', 'CythonLexer', 'ValaLexer', 'OocLexer', 'GoLexer',
29
+ 'FelixLexer', 'AdaLexer', 'Modula2Lexer', 'BlitzMaxLexer',
30
+ 'NimrodLexer', 'FantomLexer']
31
31
 
32
32
 
33
33
  class CLexer(RegexLexer):
@@ -48,9 +48,12 @@ class CLexer(RegexLexer):
48
48
  ('^#if\s+0', Comment.Preproc, 'if0'),
49
49
  ('^#', Comment.Preproc, 'macro'),
50
50
  # or with whitespace
51
- ('^' + _ws + r'#if\s+0', Comment.Preproc, 'if0'),
52
- ('^' + _ws + '#', Comment.Preproc, 'macro'),
53
- (r'^(\s*)([a-zA-Z_][a-zA-Z0-9_]*:(?!:))', bygroups(Text, Name.Label)),
51
+ ('^(' + _ws + r')(#if\s+0)',
52
+ bygroups(using(this), Comment.Preproc), 'if0'),
53
+ ('^(' + _ws + ')(#)',
54
+ bygroups(using(this), Comment.Preproc), 'macro'),
55
+ (r'^(\s*)([a-zA-Z_][a-zA-Z0-9_]*:(?!:))',
56
+ bygroups(Text, Name.Label)),
54
57
  (r'\n', Text),
55
58
  (r'\s+', Text),
56
59
  (r'\\\n', Text), # line continuation
@@ -170,7 +173,8 @@ class CppLexer(RegexLexer):
170
173
  """
171
174
  name = 'C++'
172
175
  aliases = ['cpp', 'c++']
173
- filenames = ['*.cpp', '*.hpp', '*.c++', '*.h++', '*.cc', '*.hh', '*.cxx', '*.hxx']
176
+ filenames = ['*.cpp', '*.hpp', '*.c++', '*.h++',
177
+ '*.cc', '*.hh', '*.cxx', '*.hxx']
174
178
  mimetypes = ['text/x-c++hdr', 'text/x-c++src']
175
179
 
176
180
  #: optional Comment or Whitespace
@@ -182,8 +186,10 @@ class CppLexer(RegexLexer):
182
186
  ('^#if\s+0', Comment.Preproc, 'if0'),
183
187
  ('^#', Comment.Preproc, 'macro'),
184
188
  # or with whitespace
185
- ('^' + _ws + r'#if\s+0', Comment.Preproc, 'if0'),
186
- ('^' + _ws + '#', Comment.Preproc, 'macro'),
189
+ ('^(' + _ws + r')(#if\s+0)',
190
+ bygroups(using(this), Comment.Preproc), 'if0'),
191
+ ('^(' + _ws + ')(#)',
192
+ bygroups(using(this), Comment.Preproc), 'macro'),
187
193
  (r'\n', Text),
188
194
  (r'\s+', Text),
189
195
  (r'\\\n', Text), # line continuation
@@ -217,7 +223,7 @@ class CppLexer(RegexLexer):
217
223
  r'multiple_inheritance|m128i|m128d|m128|m64|interface|'
218
224
  r'identifier|forceinline|event|assume)\b', Keyword.Reserved),
219
225
  # Offload C++ extensions, http://offload.codeplay.com/
220
- (r'(__offload|__blockingoffload|__outer)\b', Keyword.Psuedo),
226
+ (r'(__offload|__blockingoffload|__outer)\b', Keyword.Pseudo),
221
227
  (r'(true|false)\b', Keyword.Constant),
222
228
  (r'NULL\b', Name.Builtin),
223
229
  ('[a-zA-Z_][a-zA-Z0-9_]*:(?!:)', Name.Label),
@@ -1035,164 +1041,6 @@ class DelphiLexer(Lexer):
1035
1041
  yield scanner.start_pos, token, scanner.match or ''
1036
1042
 
1037
1043
 
1038
- class JavaLexer(RegexLexer):
1039
- """
1040
- For `Java <http://www.sun.com/java/>`_ source code.
1041
- """
1042
-
1043
- name = 'Java'
1044
- aliases = ['java']
1045
- filenames = ['*.java']
1046
- mimetypes = ['text/x-java']
1047
-
1048
- flags = re.MULTILINE | re.DOTALL
1049
-
1050
- #: optional Comment or Whitespace
1051
- _ws = r'(?:\s|//.*?\n|/[*].*?[*]/)+'
1052
-
1053
- tokens = {
1054
- 'root': [
1055
- # method names
1056
- (r'^(\s*(?:[a-zA-Z_][a-zA-Z0-9_\.\[\]]*\s+)+?)' # return arguments
1057
- r'([a-zA-Z_][a-zA-Z0-9_]*)' # method name
1058
- r'(\s*)(\()', # signature start
1059
- bygroups(using(this), Name.Function, Text, Operator)),
1060
- (r'[^\S\n]+', Text),
1061
- (r'//.*?\n', Comment.Single),
1062
- (r'/\*.*?\*/', Comment.Multiline),
1063
- (r'@[a-zA-Z_][a-zA-Z0-9_\.]*', Name.Decorator),
1064
- (r'(assert|break|case|catch|continue|default|do|else|finally|for|'
1065
- r'if|goto|instanceof|new|return|switch|this|throw|try|while)\b',
1066
- Keyword),
1067
- (r'(abstract|const|enum|extends|final|implements|native|private|'
1068
- r'protected|public|static|strictfp|super|synchronized|throws|'
1069
- r'transient|volatile)\b', Keyword.Declaration),
1070
- (r'(boolean|byte|char|double|float|int|long|short|void)\b',
1071
- Keyword.Type),
1072
- (r'(package)(\s+)', bygroups(Keyword.Namespace, Text)),
1073
- (r'(true|false|null)\b', Keyword.Constant),
1074
- (r'(class|interface)(\s+)', bygroups(Keyword.Declaration, Text), 'class'),
1075
- (r'(import)(\s+)', bygroups(Keyword.Namespace, Text), 'import'),
1076
- (r'"(\\\\|\\"|[^"])*"', String),
1077
- (r"'\\.'|'[^\\]'|'\\u[0-9a-f]{4}'", String.Char),
1078
- (r'(\.)([a-zA-Z_][a-zA-Z0-9_]*)', bygroups(Operator, Name.Attribute)),
1079
- (r'[a-zA-Z_][a-zA-Z0-9_]*:', Name.Label),
1080
- (r'[a-zA-Z_\$][a-zA-Z0-9_]*', Name),
1081
- (r'[~\^\*!%&\[\]\(\)\{\}<>\|+=:;,./?-]', Operator),
1082
- (r'[0-9][0-9]*\.[0-9]+([eE][0-9]+)?[fd]?', Number.Float),
1083
- (r'0x[0-9a-f]+', Number.Hex),
1084
- (r'[0-9]+L?', Number.Integer),
1085
- (r'\n', Text)
1086
- ],
1087
- 'class': [
1088
- (r'[a-zA-Z_][a-zA-Z0-9_]*', Name.Class, '#pop')
1089
- ],
1090
- 'import': [
1091
- (r'[a-zA-Z0-9_.]+\*?', Name.Namespace, '#pop')
1092
- ],
1093
- }
1094
-
1095
-
1096
- class ScalaLexer(RegexLexer):
1097
- """
1098
- For `Scala <http://www.scala-lang.org>`_ source code.
1099
- """
1100
-
1101
- name = 'Scala'
1102
- aliases = ['scala']
1103
- filenames = ['*.scala']
1104
- mimetypes = ['text/x-scala']
1105
-
1106
- flags = re.MULTILINE | re.DOTALL
1107
-
1108
- #: optional Comment or Whitespace
1109
- _ws = r'(?:\s|//.*?\n|/[*].*?[*]/)+'
1110
-
1111
- # don't use raw unicode strings!
1112
- op = u'[-~\\^\\*!%&\\\\<>\\|+=:/?@\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]+'
1113
-
1114
- letter = u'[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]'
1115
-
1116
- upper = u'[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]'
1117
-
1118
- idrest = ur'%s(?:%s|[0-9])*(?:(?<=_)%s)?' % (letter, letter, op)
1119
-
1120
- tokens = {
1121
- 'root': [
1122
- # method names
1123
- (r'(class|trait|object)(\s+)', bygroups(Keyword, Text), 'class'),
1124
- (ur"'%s" % idrest, Text.Symbol),
1125
- (r'[^\S\n]+', Text),
1126
- (r'//.*?\n', Comment.Single),
1127
- (r'/\*', Comment.Multiline, 'comment'),
1128
- (ur'@%s' % idrest, Name.Decorator),
1129
- (ur'(abstract|ca(?:se|tch)|d(?:ef|o)|e(?:lse|xtends)|'
1130
- ur'f(?:inal(?:ly)?|or(?:Some)?)|i(?:f|mplicit)|'
1131
- ur'lazy|match|new|override|pr(?:ivate|otected)'
1132
- ur'|re(?:quires|turn)|s(?:ealed|uper)|'
1133
- ur't(?:h(?:is|row)|ry)|va[lr]|w(?:hile|ith)|yield)\b|'
1134
- u'(<[%:-]|=>|>:|[#=@_\u21D2\u2190])(\b|(?=\\s)|$)', Keyword),
1135
- (ur':(?!%s)' % op, Keyword, 'type'),
1136
- (ur'%s%s\b' % (upper, idrest), Name.Class),
1137
- (r'(true|false|null)\b', Keyword.Constant),
1138
- (r'(import|package)(\s+)', bygroups(Keyword, Text), 'import'),
1139
- (r'(type)(\s+)', bygroups(Keyword, Text), 'type'),
1140
- (r'""".*?"""', String),
1141
- (r'"(\\\\|\\"|[^"])*"', String),
1142
- (ur"'\\.'|'[^\\]'|'\\u[0-9a-f]{4}'", String.Char),
1143
- # (ur'(\.)(%s|%s|`[^`]+`)' % (idrest, op), bygroups(Operator,
1144
- # Name.Attribute)),
1145
- (idrest, Name),
1146
- (r'`[^`]+`', Name),
1147
- (r'\[', Operator, 'typeparam'),
1148
- (r'[\(\)\{\};,.#]', Operator),
1149
- (op, Operator),
1150
- (ur'([0-9][0-9]*\.[0-9]*|\.[0-9]+)([eE][+-]?[0-9]+)?[fFdD]?',
1151
- Number.Float),
1152
- (r'0x[0-9a-f]+', Number.Hex),
1153
- (r'[0-9]+L?', Number.Integer),
1154
- (r'\n', Text)
1155
- ],
1156
- 'class': [
1157
- (ur'(%s|%s|`[^`]+`)(\s*)(\[)' % (idrest, op),
1158
- bygroups(Name.Class, Text, Operator), 'typeparam'),
1159
- (r'[\s\n]+', Text),
1160
- (r'{', Operator, '#pop'),
1161
- (r'\(', Operator, '#pop'),
1162
- (ur'%s|%s|`[^`]+`' % (idrest, op), Name.Class, '#pop'),
1163
- ],
1164
- 'type': [
1165
- (r'\s+', Text),
1166
- (u'<[%:]|>:|[#_\u21D2]|forSome|type', Keyword),
1167
- (r'([,\);}]|=>|=)([\s\n]*)', bygroups(Operator, Text), '#pop'),
1168
- (r'[\(\{]', Operator, '#push'),
1169
- (ur'((?:%s|%s|`[^`]+`)(?:\.(?:%s|%s|`[^`]+`))*)(\s*)(\[)' %
1170
- (idrest, op, idrest, op),
1171
- bygroups(Keyword.Type, Text, Operator), ('#pop', 'typeparam')),
1172
- (ur'((?:%s|%s|`[^`]+`)(?:\.(?:%s|%s|`[^`]+`))*)(\s*)$' %
1173
- (idrest, op, idrest, op),
1174
- bygroups(Keyword.Type, Text), '#pop'),
1175
- (ur'\.|%s|%s|`[^`]+`' % (idrest, op), Keyword.Type)
1176
- ],
1177
- 'typeparam': [
1178
- (r'[\s\n,]+', Text),
1179
- (u'<[%:]|=>|>:|[#_\u21D2]|forSome|type', Keyword),
1180
- (r'([\]\)\}])', Operator, '#pop'),
1181
- (r'[\(\[\{]', Operator, '#push'),
1182
- (ur'\.|%s|%s|`[^`]+`' % (idrest, op), Keyword.Type)
1183
- ],
1184
- 'comment': [
1185
- (r'[^/\*]+', Comment.Multiline),
1186
- (r'/\*', Comment.Multiline, '#push'),
1187
- (r'\*/', Comment.Multiline, '#pop'),
1188
- (r'[*/]', Comment.Multiline)
1189
- ],
1190
- 'import': [
1191
- (ur'(%s|\.)+' % idrest, Name.Namespace, '#pop')
1192
- ],
1193
- }
1194
-
1195
-
1196
1044
  class DylanLexer(RegexLexer):
1197
1045
  """
1198
1046
  For the `Dylan <http://www.opendylan.org/>`_ language.
@@ -1232,8 +1080,10 @@ class DylanLexer(RegexLexer):
1232
1080
  (r'\$[a-zA-Z0-9-]+', Name.Constant),
1233
1081
  (r'[!$%&*/:<>=?~^.+\[\]{}-]+', Operator),
1234
1082
  (r'\s+', Text),
1083
+ (r'#"[a-zA-Z0-9-]+"', Keyword),
1235
1084
  (r'#[a-zA-Z0-9-]+', Keyword),
1236
- (r'[a-zA-Z0-9-]+', Name.Variable),
1085
+ (r'#(\(|\[)', Punctuation),
1086
+ (r'[a-zA-Z0-9-_]+', Name.Variable),
1237
1087
  ],
1238
1088
  'string': [
1239
1089
  (r'"', String, '#pop'),
@@ -1392,18 +1242,22 @@ class ObjectiveCLexer(RegexLexer):
1392
1242
  }
1393
1243
 
1394
1244
  def analyse_text(text):
1395
- if '@"' in text: # strings
1245
+ if '@import' in text or '@interface' in text or \
1246
+ '@implementation' in text:
1247
+ return True
1248
+ elif '@"' in text: # strings
1396
1249
  return True
1397
- if re.match(r'\[[a-zA-Z0-9.]:', text): # message
1250
+ elif re.match(r'\[[a-zA-Z0-9.]:', text): # message
1398
1251
  return True
1399
1252
  return False
1400
1253
 
1254
+
1401
1255
  class FortranLexer(RegexLexer):
1402
- '''
1256
+ """
1403
1257
  Lexer for FORTRAN 90 code.
1404
1258
 
1405
1259
  *New in Pygments 0.10.*
1406
- '''
1260
+ """
1407
1261
  name = 'Fortran'
1408
1262
  aliases = ['fortran']
1409
1263
  filenames = ['*.f', '*.f90', '*.F', '*.F90']
@@ -1428,20 +1282,28 @@ class FortranLexer(RegexLexer):
1428
1282
  ],
1429
1283
  'core': [
1430
1284
  # Statements
1431
- (r'\b(ACCEPT|ALLOCATABLE|ALLOCATE|ARRAY|ASSIGN|BACKSPACE|BLOCK DATA|'
1432
- r'BYTE|CALL|CASE|CLOSE|COMMON|CONTAINS|CONTINUE|CYCLE|DATA|'
1433
- r'DEALLOCATE|DECODE|DIMENSION|DO|ENCODE|END FILE|ENDIF|END|ENTRY|'
1434
- r'EQUIVALENCE|EXIT|EXTERNAL|EXTRINSIC|FORALL|FORMAT|FUNCTION|GOTO|'
1435
- r'IF|IMPLICIT|INCLUDE|INQUIRE|INTENT|INTERFACE|INTRINSIC|MODULE|'
1436
- r'NAMELIST|NULLIFY|NONE|OPEN|OPTIONAL|OPTIONS|PARAMETER|PAUSE|'
1437
- r'POINTER|PRINT|PRIVATE|PROGRAM|PUBLIC|PURE|READ|RECURSIVE|RETURN|'
1438
- r'REWIND|SAVE|SELECT|SEQUENCE|STOP|SUBROUTINE|TARGET|TYPE|USE|'
1439
- r'VOLATILE|WHERE|WRITE|WHILE|THEN|ELSE|ENDIF)\s*\b',
1285
+ (r'\b(ACCEPT|ALLOCATABLE|ALLOCATE|ARRAY|ASSIGN|ASYNCHRONOUS|'
1286
+ r'BACKSPACE|BIND|BLOCK DATA|BYTE|CALL|CASE|CLOSE|COMMON|CONTAINS|'
1287
+ r'CONTINUE|CYCLE|DATA|DEALLOCATE|DECODE|DEFERRED|DIMENSION|DO|'
1288
+ r'ELSE|ENCODE|END FILE|ENDIF|END|ENTRY|ENUMERATOR|EQUIVALENCE|'
1289
+ r'EXIT|EXTERNAL|EXTRINSIC|FINAL|FORALL|FORMAT|FUNCTION|GENERIC|'
1290
+ r'GOTO|IF|IMPLICIT|IMPORT|INCLUDE|INQUIRE|INTENT|INTERFACE|'
1291
+ r'INTRINSIC|MODULE|NAMELIST|NULLIFY|NONE|NON_INTRINSIC|'
1292
+ r'NON_OVERRIDABLE|NOPASS|OPEN|OPTIONAL|OPTIONS|PARAMETER|PASS|'
1293
+ r'PAUSE|POINTER|PRINT|PRIVATE|PROGRAM|PROTECTED|PUBLIC|PURE|READ|'
1294
+ r'RECURSIVE|RETURN|REWIND|SAVE|SELECT|SEQUENCE|STOP|SUBROUTINE|'
1295
+ r'TARGET|THEN|TYPE|USE|VALUE|VOLATILE|WHERE|WRITE|WHILE)\s*\b',
1440
1296
  Keyword),
1441
1297
 
1442
1298
  # Data Types
1443
1299
  (r'\b(CHARACTER|COMPLEX|DOUBLE PRECISION|DOUBLE COMPLEX|INTEGER|'
1444
- r'LOGICAL|REAL)\s*\b',
1300
+ r'LOGICAL|REAL|C_INT|C_SHORT|C_LONG|C_LONG_LONG|C_SIGNED_CHAR|'
1301
+ r'C_SIZE_T|C_INT8_T|C_INT16_T|C_INT32_T|C_INT64_T|C_INT_LEAST8_T|'
1302
+ r'C_INT_LEAST16_T|C_INT_LEAST32_T|C_INT_LEAST64_T|C_INT_FAST8_T|'
1303
+ r'C_INT_FAST16_T|C_INT_FAST32_T|C_INT_FAST64_T|C_INTMAX_T|'
1304
+ r'C_INTPTR_T|C_FLOAT|C_DOUBLE|C_LONG_DOUBLE|C_FLOAT_COMPLEX|'
1305
+ r'C_DOUBLE_COMPLEX|C_LONG_DOUBLE_COMPLEX|C_BOOL|C_CHAR|C_PTR|'
1306
+ r'C_FUNPTR)\s*\b',
1445
1307
  Keyword.Type),
1446
1308
 
1447
1309
  # Operators
@@ -1453,31 +1315,37 @@ class FortranLexer(RegexLexer):
1453
1315
 
1454
1316
  # Intrinsics
1455
1317
  (r'\b(Abort|Abs|Access|AChar|ACos|AdjustL|AdjustR|AImag|AInt|Alarm|'
1456
- r'All|Allocated|ALog|AMax|AMin|AMod|And|ANInt|Any|'
1457
- r'ASin|Associated|ATan|BesJ|BesJN|BesY|BesYN|'
1458
- r'Bit_Size|BTest|CAbs|CCos|Ceiling|CExp|Char|ChDir|ChMod|CLog|'
1459
- r'Cmplx|Complex|Conjg|Cos|CosH|Count|CPU_Time|CShift|CSin|CSqRt|'
1460
- r'CTime|DAbs|DACos|DASin|DATan|Date_and_Time|DbesJ|'
1318
+ r'All|Allocated|ALog|AMax|AMin|AMod|And|ANInt|Any|ASin|Associated|'
1319
+ r'ATan|BesJ|BesJN|BesY|BesYN|Bit_Size|BTest|CAbs|CCos|Ceiling|'
1320
+ r'CExp|Char|ChDir|ChMod|CLog|Cmplx|Command_Argument_Count|Complex|'
1321
+ r'Conjg|Cos|CosH|Count|CPU_Time|CShift|CSin|CSqRt|CTime|C_Funloc|'
1322
+ r'C_Loc|C_Associated|C_Null_Ptr|C_Null_Funptr|C_F_Pointer|'
1323
+ r'C_Null_Char|C_Alert|C_Backspace|C_Form_Feed|C_New_Line|'
1324
+ r'C_Carriage_Return|C_Horizontal_Tab|C_Vertical_Tab|'
1325
+ r'DAbs|DACos|DASin|DATan|Date_and_Time|DbesJ|'
1461
1326
  r'DbesJ|DbesJN|DbesY|DbesY|DbesYN|Dble|DCos|DCosH|DDiM|DErF|DErFC|'
1462
1327
  r'DExp|Digits|DiM|DInt|DLog|DLog|DMax|DMin|DMod|DNInt|Dot_Product|'
1463
1328
  r'DProd|DSign|DSinH|DSin|DSqRt|DTanH|DTan|DTime|EOShift|Epsilon|'
1464
- r'ErF|ErFC|ETime|Exit|Exp|Exponent|FDate|FGet|FGetC|Float|'
1465
- r'Floor|Flush|FNum|FPutC|FPut|Fraction|FSeek|FStat|FTell|'
1466
- r'GError|GetArg|GetCWD|GetEnv|GetGId|GetLog|GetPId|GetUId|'
1467
- r'GMTime|HostNm|Huge|IAbs|IAChar|IAnd|IArgC|IBClr|IBits|'
1329
+ r'ErF|ErFC|ETime|Exit|Exp|Exponent|Extends_Type_Of|FDate|FGet|'
1330
+ r'FGetC|Float|Floor|Flush|FNum|FPutC|FPut|Fraction|FSeek|FStat|'
1331
+ r'FTell|GError|GetArg|Get_Command|Get_Command_Argument|'
1332
+ r'Get_Environment_Variable|GetCWD|GetEnv|GetGId|GetLog|GetPId|'
1333
+ r'GetUId|GMTime|HostNm|Huge|IAbs|IAChar|IAnd|IArgC|IBClr|IBits|'
1468
1334
  r'IBSet|IChar|IDate|IDiM|IDInt|IDNInt|IEOr|IErrNo|IFix|Imag|'
1469
1335
  r'ImagPart|Index|Int|IOr|IRand|IsaTty|IShft|IShftC|ISign|'
1470
- r'ITime|Kill|Kind|LBound|Len|Len_Trim|LGe|LGt|Link|LLe|LLt|LnBlnk|'
1471
- r'Loc|Log|Log|Logical|Long|LShift|LStat|LTime|MatMul|Max|'
1472
- r'MaxExponent|MaxLoc|MaxVal|MClock|Merge|Min|MinExponent|MinLoc|'
1473
- r'MinVal|Mod|Modulo|MvBits|Nearest|NInt|Not|Or|Pack|PError|'
1336
+ r'Iso_C_Binding|Is_Iostat_End|Is_Iostat_Eor|ITime|Kill|Kind|'
1337
+ r'LBound|Len|Len_Trim|LGe|LGt|Link|LLe|LLt|LnBlnk|Loc|Log|'
1338
+ r'Logical|Long|LShift|LStat|LTime|MatMul|Max|MaxExponent|MaxLoc|'
1339
+ r'MaxVal|MClock|Merge|Move_Alloc|Min|MinExponent|MinLoc|MinVal|'
1340
+ r'Mod|Modulo|MvBits|Nearest|New_Line|NInt|Not|Or|Pack|PError|'
1474
1341
  r'Precision|Present|Product|Radix|Rand|Random_Number|Random_Seed|'
1475
- r'Range|Real|RealPart|Rename|Repeat|Reshape|RRSpacing|RShift|Scale|'
1476
- r'Scan|Second|Selected_Int_Kind|Selected_Real_Kind|Set_Exponent|'
1477
- r'Shape|Short|Sign|Signal|SinH|Sin|Sleep|Sngl|Spacing|Spread|SqRt|'
1478
- r'SRand|Stat|Sum|SymLnk|System|System_Clock|Tan|TanH|Time|'
1479
- r'Tiny|Transfer|Transpose|Trim|TtyNam|UBound|UMask|Unlink|Unpack|'
1480
- r'Verify|XOr|ZAbs|ZCos|ZExp|ZLog|ZSin|ZSqRt)\s*\b',
1342
+ r'Range|Real|RealPart|Rename|Repeat|Reshape|RRSpacing|RShift|'
1343
+ r'Same_Type_As|Scale|Scan|Second|Selected_Int_Kind|'
1344
+ r'Selected_Real_Kind|Set_Exponent|Shape|Short|Sign|Signal|SinH|'
1345
+ r'Sin|Sleep|Sngl|Spacing|Spread|SqRt|SRand|Stat|Sum|SymLnk|'
1346
+ r'System|System_Clock|Tan|TanH|Time|Tiny|Transfer|Transpose|Trim|'
1347
+ r'TtyNam|UBound|UMask|Unlink|Unpack|Verify|XOr|ZAbs|ZCos|ZExp|'
1348
+ r'ZLog|ZSin|ZSqRt)\s*\b',
1481
1349
  Name.Builtin),
1482
1350
 
1483
1351
  # Booleans
@@ -2296,7 +2164,7 @@ class AdaLexer(RegexLexer):
2296
2164
  include('numbers'),
2297
2165
  (r"'[^']'", String.Character),
2298
2166
  (r'([a-z0-9_]+)(\s*|[(,])', bygroups(Name, using(this))),
2299
- (r"(<>|=>|:=|[\(\)\|:;,.'])", Punctuation),
2167
+ (r"(<>|=>|:=|[()|:;,.'])", Punctuation),
2300
2168
  (r'[*<>+=/&-]', Operator),
2301
2169
  (r'\n+', Text),
2302
2170
  ],
@@ -2317,7 +2185,7 @@ class AdaLexer(RegexLexer):
2317
2185
  ],
2318
2186
  'end' : [
2319
2187
  ('(if|case|record|loop|select)', Keyword.Reserved),
2320
- ('"[^"]+"|[a-zA-Z0-9_]+', Name.Function),
2188
+ ('"[^"]+"|[a-zA-Z0-9_.]+', Name.Function),
2321
2189
  ('[\n\s]+', Text),
2322
2190
  (';', Punctuation, '#pop'),
2323
2191
  ],
@@ -2337,11 +2205,12 @@ class AdaLexer(RegexLexer):
2337
2205
  ],
2338
2206
  'import': [
2339
2207
  (r'[a-z0-9_.]+', Name.Namespace, '#pop'),
2208
+ (r'', Text, '#pop'),
2340
2209
  ],
2341
2210
  'formal_part' : [
2342
2211
  (r'\)', Punctuation, '#pop'),
2343
- (r'([a-z0-9_]+)(\s*)(,|:[^=])', bygroups(Name.Variable,
2344
- Text, Punctuation)),
2212
+ (r'[a-z0-9_]+', Name.Variable),
2213
+ (r',|:[^=]', Punctuation),
2345
2214
  (r'(in|not|null|out|access)\b', Keyword.Reserved),
2346
2215
  include('root'),
2347
2216
  ],
@@ -2790,98 +2659,233 @@ class NimrodLexer(RegexLexer):
2790
2659
  }
2791
2660
 
2792
2661
 
2793
- class GosuLexer(RegexLexer):
2662
+ class FantomLexer(RegexLexer):
2794
2663
  """
2795
- For Gosu source code.
2664
+ For Fantom source code.
2796
2665
 
2797
2666
  *New in Pygments 1.5.*
2798
2667
  """
2668
+ name = 'Fantom'
2669
+ aliases = ['fan']
2670
+ filenames = ['*.fan']
2671
+ mimetypes = ['application/x-fantom']
2672
+
2673
+ # often used regexes
2674
+ def s(str):
2675
+ return Template(str).substitute(
2676
+ dict (
2677
+ pod = r'[\"\w\.]+',
2678
+ eos = r'\n|;',
2679
+ id = r'[a-zA-Z_][a-zA-Z0-9_]*',
2680
+ # all chars which can be part of type definition. Starts with
2681
+ # either letter, or [ (maps), or | (funcs)
2682
+ type = r'(?:\[|[a-zA-Z_]|\|)[:\w_\[\]\|\->\?]*?',
2683
+ )
2684
+ )
2799
2685
 
2800
- name = 'Gosu'
2801
- aliases = ['gosu']
2802
- filenames = ['*.gs', '*.gsx', '*.gsp', '*.vark']
2803
- mimetypes = ['text/x-gosu']
2804
-
2805
- flags = re.MULTILINE | re.DOTALL
2806
-
2807
- #: optional Comment or Whitespace
2808
- _ws = r'(?:\s|//.*?\n|/[*].*?[*]/)+'
2809
2686
 
2810
2687
  tokens = {
2811
- 'root': [
2812
- # method names
2813
- (r'^(\s*(?:[a-zA-Z_][a-zA-Z0-9_\.\[\]]*\s+)+?)' # modifiers etc.
2814
- r'([a-zA-Z_][a-zA-Z0-9_]*)' # method name
2815
- r'(\s*)(\()', # signature start
2816
- bygroups(using(this), Name.Function, Text, Operator)),
2817
- (r'[^\S\n]+', Text),
2818
- (r'//.*?\n', Comment.Single),
2819
- (r'/\*.*?\*/', Comment.Multiline),
2820
- (r'@[a-zA-Z_][a-zA-Z0-9_\.]*', Name.Decorator),
2821
- (r'(in|as|typeof|statictypeof|typeis|typeas|if|else|foreach|'
2822
- r'for|index|while|do|continue|break|return|try|catch|finally|this|throw|'
2823
- r'new|switch|case|default|eval|super|outer|classpath|using)\b',
2688
+ 'comments': [
2689
+ (r'(?s)/\*.*?\*/', Comment.Multiline), #Multiline
2690
+ (r'//.*?\n', Comment.Single), #Single line
2691
+ #todo: highlight references in fandocs
2692
+ (r'\*\*.*?\n', Comment.Special), #Fandoc
2693
+ (r'#.*\n', Comment.Single) #Shell-style
2694
+ ],
2695
+ 'literals': [
2696
+ (r'\b-?[\d_]+(ns|ms|sec|min|hr|day)', Number), #Duration
2697
+ (r'\b-?[\d_]*\.[\d_]+(ns|ms|sec|min|hr|day)', Number),
2698
+ #Duration with dot
2699
+ (r'\b-?(\d+)?\.\d+(f|F|d|D)?', Number.Float), #Float/Decimal
2700
+ (r'\b-?0x[0-9a-fA-F_]+', Number.Hex), #Hex
2701
+ (r'\b-?[\d_]+', Number.Integer), #Int
2702
+ (r"'\\.'|'[^\\]'|'\\u[0-9a-f]{4}'", String.Char), #Char
2703
+ (r'"', Punctuation, 'insideStr'), #Opening quote
2704
+ (r'`', Punctuation, 'insideUri'), #Opening accent
2705
+ (r'\b(true|false|null)\b', Keyword.Constant), #Bool & null
2706
+ (r'(?:(\w+)(::))?(\w+)(<\|)(.*?)(\|>)', #DSL
2707
+ bygroups(Name.Namespace, Punctuation, Name.Class,
2708
+ Punctuation, String, Punctuation)),
2709
+ (r'(?:(\w+)(::))?(\w+)?(#)(\w+)?', #Type/slot literal
2710
+ bygroups(Name.Namespace, Punctuation, Name.Class,
2711
+ Punctuation, Name.Function)),
2712
+ (r'\[,\]', Literal), # Empty list
2713
+ (s(r'($type)(\[,\])'), # Typed empty list
2714
+ bygroups(using(this, state = 'inType'), Literal)),
2715
+ (r'\[:\]', Literal), # Empty Map
2716
+ (s(r'($type)(\[:\])'),
2717
+ bygroups(using(this, state = 'inType'), Literal)),
2718
+ ],
2719
+ 'insideStr': [
2720
+ (r'\\\\', String.Escape), #Escaped backslash
2721
+ (r'\\"', String.Escape), #Escaped "
2722
+ (r'\\`', String.Escape), #Escaped `
2723
+ (r'\$\w+', String.Interpol), #Subst var
2724
+ (r'\${.*?}', String.Interpol), #Subst expr
2725
+ (r'"', Punctuation, '#pop'), #Closing quot
2726
+ (r'.', String) #String content
2727
+ ],
2728
+ 'insideUri': [ #TODO: remove copy/paste str/uri
2729
+ (r'\\\\', String.Escape), #Escaped backslash
2730
+ (r'\\"', String.Escape), #Escaped "
2731
+ (r'\\`', String.Escape), #Escaped `
2732
+ (r'\$\w+', String.Interpol), #Subst var
2733
+ (r'\${.*?}', String.Interpol), #Subst expr
2734
+ (r'`', Punctuation, '#pop'), #Closing tick
2735
+ (r'.', String.Backtick) #URI content
2736
+ ],
2737
+ 'protectionKeywords': [
2738
+ (r'\b(public|protected|private|internal)\b', Keyword),
2739
+ ],
2740
+ 'typeKeywords': [
2741
+ (r'\b(abstract|final|const|native|facet|enum)\b', Keyword),
2742
+ ],
2743
+ 'methodKeywords': [
2744
+ (r'\b(abstract|native|once|override|static|virtual|final)\b',
2824
2745
  Keyword),
2825
- (r'(var|delegate|construct|function|private|internal|protected|public|'
2826
- r'abstract|override|final|static|extends|transient|implements|represents|'
2827
- r'readonly)\b', Keyword.Declaration),
2828
- (r'(property\s+)(get|set|)', Keyword.Declaration),
2829
- (r'(boolean|byte|char|double|float|int|long|short|void|block)\b',
2830
- Keyword.Type),
2831
- (r'(package)(\s+)', bygroups(Keyword.Namespace, Text)),
2832
- (r'(true|false|null|NaN|Infinity)\b', Keyword.Constant),
2833
- (r'(class|interface|enhancement|enum)(\s+)([a-zA-Z_][a-zA-Z0-9_]*)', bygroups(Keyword.Declaration, Text, Name.Class)),
2834
- (r'(uses)(\s+)([a-zA-Z0-9_.]+\*?)', bygroups(Keyword.Namespace, Text, Name.Namespace)),
2835
- (r'"', String, 'string'),
2836
- (r'(\??[\.#])([a-zA-Z_][a-zA-Z0-9_]*)', bygroups(Operator, Name.Attribute)),
2837
- (r'(:)([a-zA-Z_][a-zA-Z0-9_]*)', bygroups(Operator, Name.Attribute)),
2838
- (r'[a-zA-Z_\$][a-zA-Z0-9_]*', Name),
2839
- (r'and|or|not|[\\~\^\*!%&\[\]\(\)\{\}<>\|+=:;,./?-]', Operator),
2840
- (r'[0-9][0-9]*\.[0-9]+([eE][0-9]+)?[fd]?', Number.Float),
2841
- (r'[0-9]+', Number.Integer),
2842
- (r'\n', Text)
2843
2746
  ],
2844
- 'templateText': [
2845
- (r'(\\<)|(\\\$)', String),
2846
- (r'(<%@\s+)(extends|params)', bygroups(Operator, Name.Decorator), 'stringTemplate'),
2847
- (r'<%!--.*?--%>', Comment.Multiline),
2848
- (r'(<%)|(<%=)', Operator, 'stringTemplate'),
2849
- (r'\$\{', Operator, 'stringTemplateShorthand'),
2850
- (r'.', String)
2851
- ],
2852
- 'string': [
2853
- (r'"', String, '#pop'),
2854
- include('templateText')
2747
+ 'fieldKeywords': [
2748
+ (r'\b(abstract|const|final|native|override|static|virtual|'
2749
+ r'readonly)\b', Keyword)
2855
2750
  ],
2856
- 'stringTemplate': [
2857
- (r'"', String, 'string'),
2858
- (r'%>', Operator, '#pop'),
2859
- include('root')
2751
+ 'otherKeywords': [
2752
+ (r'\b(try|catch|throw|finally|for|if|else|while|as|is|isnot|'
2753
+ r'switch|case|default|continue|break|do|return|get|set)\b',
2754
+ Keyword),
2755
+ (r'\b(it|this|super)\b', Name.Builtin.Pseudo),
2860
2756
  ],
2861
- 'stringTemplateShorthand': [
2862
- (r'"', String, 'string'),
2863
- (r'\{', Operator, 'stringTemplateShorthand'),
2864
- (r'\}', Operator, '#pop'),
2865
- include('root')
2757
+ 'operators': [
2758
+ (r'\+\+|\-\-|\+|\-|\*|/|\|\||&&|<=>|<=|<|>=|>|=|!|\[|\]', Operator)
2866
2759
  ],
2867
- }
2868
-
2869
-
2870
- class GosuTemplateLexer(Lexer):
2871
- """
2872
- For Gosu templates.
2760
+ 'inType': [
2761
+ (r'[\[\]\|\->:\?]', Punctuation),
2762
+ (s(r'$id'), Name.Class),
2763
+ (r'', Text, '#pop'),
2873
2764
 
2874
- *New in Pygments 1.5.*
2875
- """
2765
+ ],
2766
+ 'root': [
2767
+ include('comments'),
2768
+ include('protectionKeywords'),
2769
+ include('typeKeywords'),
2770
+ include('methodKeywords'),
2771
+ include('fieldKeywords'),
2772
+ include('literals'),
2773
+ include('otherKeywords'),
2774
+ include('operators'),
2775
+ (r'using\b', Keyword.Namespace, 'using'), # Using stmt
2776
+ (r'@\w+', Name.Decorator, 'facet'), # Symbol
2777
+ (r'(class|mixin)(\s+)(\w+)', bygroups(Keyword, Text, Name.Class),
2778
+ 'inheritance'), # Inheritance list
2779
+
2780
+
2781
+ ### Type var := val
2782
+ (s(r'($type)([ \t]+)($id)(\s*)(:=)'),
2783
+ bygroups(using(this, state = 'inType'), Text,
2784
+ Name.Variable, Text, Operator)),
2785
+
2786
+ ### var := val
2787
+ (s(r'($id)(\s*)(:=)'),
2788
+ bygroups(Name.Variable, Text, Operator)),
2789
+
2790
+ ### .someId( or ->someId( ###
2791
+ (s(r'(\.|(?:\->))($id)(\s*)(\()'),
2792
+ bygroups(Operator, Name.Function, Text, Punctuation),
2793
+ 'insideParen'),
2794
+
2795
+ ### .someId or ->someId
2796
+ (s(r'(\.|(?:\->))($id)'),
2797
+ bygroups(Operator, Name.Function)),
2798
+
2799
+ ### new makeXXX ( ####
2800
+ (r'(new)(\s+)(make\w*)(\s*)(\()',
2801
+ bygroups(Keyword, Text, Name.Function, Text, Punctuation),
2802
+ 'insideMethodDeclArgs'),
2803
+
2804
+ ### Type name ( ####
2805
+ (s(r'($type)([ \t]+)' #Return type and whitespace
2806
+ r'($id)(\s*)(\()'), #method name + open brace
2807
+ bygroups(using(this, state = 'inType'), Text,
2808
+ Name.Function, Text, Punctuation),
2809
+ 'insideMethodDeclArgs'),
2810
+
2811
+ ### ArgType argName, #####
2812
+ (s(r'($type)(\s+)($id)(\s*)(,)'),
2813
+ bygroups(using(this, state= 'inType'), Text, Name.Variable,
2814
+ Text, Punctuation)),
2815
+
2816
+ #### ArgType argName) ####
2817
+ ## Covered in 'insideParen' state
2818
+
2819
+ ### ArgType argName -> ArgType| ###
2820
+ (s(r'($type)(\s+)($id)(\s*)(\->)(\s*)($type)(\|)'),
2821
+ bygroups(using(this, state= 'inType'), Text, Name.Variable,
2822
+ Text, Punctuation, Text, using(this, state = 'inType'),
2823
+ Punctuation)),
2876
2824
 
2877
- name = 'Gosu Template'
2878
- aliases = ['gst']
2879
- filenames = ['*.gst']
2880
- mimetypes = ['text/x-gosu-template']
2881
- lexer = GosuLexer()
2825
+ ### ArgType argName| ###
2826
+ (s(r'($type)(\s+)($id)(\s*)(\|)'),
2827
+ bygroups(using(this, state= 'inType'), Text, Name.Variable,
2828
+ Text, Punctuation)),
2882
2829
 
2883
- def get_tokens_unprocessed(self, text):
2884
- stack = ['templateText']
2885
- for item in self.lexer.get_tokens_unprocessed(text, stack):
2886
- yield item
2830
+ ### Type var
2831
+ (s(r'($type)([ \t]+)($id)'),
2832
+ bygroups(using(this, state='inType'), Text,
2833
+ Name.Variable)),
2887
2834
 
2835
+ (r'\(', Punctuation, 'insideParen'),
2836
+ (r'\{', Punctuation, 'insideBrace'),
2837
+ (r'.', Text)
2838
+ ],
2839
+ 'insideParen': [
2840
+ (r'\)', Punctuation, '#pop'),
2841
+ include('root'),
2842
+ ],
2843
+ 'insideMethodDeclArgs': [
2844
+ (r'\)', Punctuation, '#pop'),
2845
+ (s(r'($type)(\s+)($id)(\s*)(\))'),
2846
+ bygroups(using(this, state= 'inType'), Text, Name.Variable,
2847
+ Text, Punctuation), '#pop'),
2848
+ include('root'),
2849
+ ],
2850
+ 'insideBrace': [
2851
+ (r'\}', Punctuation, '#pop'),
2852
+ include('root'),
2853
+ ],
2854
+ 'inheritance': [
2855
+ (r'\s+', Text), #Whitespace
2856
+ (r':|,', Punctuation),
2857
+ (r'(?:(\w+)(::))?(\w+)',
2858
+ bygroups(Name.Namespace, Punctuation, Name.Class)),
2859
+ (r'{', Punctuation, '#pop')
2860
+ ],
2861
+ 'using': [
2862
+ (r'[ \t]+', Text), # consume whitespaces
2863
+ (r'(\[)(\w+)(\])',
2864
+ bygroups(Punctuation, Comment.Special, Punctuation)), #ffi
2865
+ (r'(\")?([\w\.]+)(\")?',
2866
+ bygroups(Punctuation, Name.Namespace, Punctuation)), #podname
2867
+ (r'::', Punctuation, 'usingClass'),
2868
+ (r'', Text, '#pop')
2869
+ ],
2870
+ 'usingClass': [
2871
+ (r'[ \t]+', Text), # consume whitespaces
2872
+ (r'(as)(\s+)(\w+)',
2873
+ bygroups(Keyword.Declaration, Text, Name.Class), '#pop:2'),
2874
+ (r'[\w\$]+', Name.Class),
2875
+ (r'', Text, '#pop:2') # jump out to root state
2876
+ ],
2877
+ 'facet': [
2878
+ (r'\s+', Text),
2879
+ (r'{', Punctuation, 'facetFields'),
2880
+ (r'', Text, '#pop')
2881
+ ],
2882
+ 'facetFields': [
2883
+ include('comments'),
2884
+ include('literals'),
2885
+ include('operators'),
2886
+ (r'\s+', Text),
2887
+ (r'(\s*)(\w+)(\s*)(=)', bygroups(Text, Name, Text, Operator)),
2888
+ (r'}', Punctuation, '#pop'),
2889
+ (r'.', Text)
2890
+ ],
2891
+ }