pygments.rb 0.2.4 → 0.2.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
+ }