gitlab-pygments.rb 0.3.2 → 0.5.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (199) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +1 -0
  3. data/CHANGELOG.md +71 -0
  4. data/Gemfile +1 -1
  5. data/LICENSE +17 -0
  6. data/README.md +28 -1
  7. data/Rakefile +2 -5
  8. data/lexers +0 -0
  9. data/lib/pygments/mentos.py +19 -12
  10. data/lib/pygments/popen.rb +21 -4
  11. data/lib/pygments/version.rb +1 -1
  12. data/pygments.rb.gemspec +2 -0
  13. data/test/test_pygments.rb +13 -2
  14. data/vendor/custom_lexers/github.py +206 -3
  15. data/vendor/pygments-main/AUTHORS +41 -3
  16. data/vendor/pygments-main/CHANGES +132 -5
  17. data/vendor/pygments-main/LICENSE +1 -1
  18. data/vendor/pygments-main/Makefile +1 -1
  19. data/vendor/pygments-main/REVISION +1 -1
  20. data/vendor/pygments-main/docs/generate.py +1 -1
  21. data/vendor/pygments-main/docs/src/api.txt +1 -1
  22. data/vendor/pygments-main/docs/src/index.txt +1 -1
  23. data/vendor/pygments-main/docs/src/integrate.txt +5 -0
  24. data/vendor/pygments-main/docs/src/java.txt +70 -0
  25. data/vendor/pygments-main/docs/src/lexerdevelopment.txt +52 -0
  26. data/vendor/pygments-main/external/autopygmentize +64 -0
  27. data/vendor/pygments-main/external/lasso-builtins-generator-9.lasso +144 -0
  28. data/vendor/pygments-main/external/markdown-processor.py +2 -2
  29. data/vendor/pygments-main/external/moin-parser.py +1 -1
  30. data/vendor/pygments-main/external/rst-directive-old.py +1 -1
  31. data/vendor/pygments-main/external/rst-directive.py +1 -1
  32. data/vendor/pygments-main/pygmentize +1 -1
  33. data/vendor/pygments-main/pygments/__init__.py +2 -2
  34. data/vendor/pygments-main/pygments/cmdline.py +14 -6
  35. data/vendor/pygments-main/pygments/console.py +1 -1
  36. data/vendor/pygments-main/pygments/filter.py +1 -1
  37. data/vendor/pygments-main/pygments/filters/__init__.py +3 -4
  38. data/vendor/pygments-main/pygments/formatter.py +4 -1
  39. data/vendor/pygments-main/pygments/formatters/__init__.py +1 -1
  40. data/vendor/pygments-main/pygments/formatters/_mapping.py +3 -3
  41. data/vendor/pygments-main/pygments/formatters/bbcode.py +1 -1
  42. data/vendor/pygments-main/pygments/formatters/html.py +73 -2
  43. data/vendor/pygments-main/pygments/formatters/img.py +2 -2
  44. data/vendor/pygments-main/pygments/formatters/latex.py +9 -9
  45. data/vendor/pygments-main/pygments/formatters/other.py +1 -3
  46. data/vendor/pygments-main/pygments/formatters/rtf.py +1 -1
  47. data/vendor/pygments-main/pygments/formatters/svg.py +1 -1
  48. data/vendor/pygments-main/pygments/formatters/terminal.py +1 -1
  49. data/vendor/pygments-main/pygments/formatters/terminal256.py +1 -1
  50. data/vendor/pygments-main/pygments/lexer.py +78 -10
  51. data/vendor/pygments-main/pygments/lexers/__init__.py +13 -2
  52. data/vendor/pygments-main/pygments/lexers/_asybuiltins.py +1 -1
  53. data/vendor/pygments-main/pygments/lexers/_clbuiltins.py +1 -1
  54. data/vendor/pygments-main/pygments/lexers/_lassobuiltins.py +5172 -0
  55. data/vendor/pygments-main/pygments/lexers/_luabuiltins.py +1 -1
  56. data/vendor/pygments-main/pygments/lexers/_mapping.py +92 -36
  57. data/vendor/pygments-main/pygments/lexers/_openedgebuiltins.py +562 -0
  58. data/vendor/pygments-main/pygments/lexers/_phpbuiltins.py +2 -2
  59. data/vendor/pygments-main/pygments/lexers/_postgres_builtins.py +4 -3
  60. data/vendor/pygments-main/pygments/lexers/_robotframeworklexer.py +557 -0
  61. data/vendor/pygments-main/pygments/lexers/_scilab_builtins.py +11 -0
  62. data/vendor/pygments-main/pygments/lexers/_sourcemodbuiltins.py +1072 -0
  63. data/vendor/pygments-main/pygments/lexers/_stan_builtins.py +360 -0
  64. data/vendor/pygments-main/pygments/lexers/_vimbuiltins.py +13 -3
  65. data/vendor/pygments-main/pygments/lexers/agile.py +525 -38
  66. data/vendor/pygments-main/pygments/lexers/asm.py +45 -7
  67. data/vendor/pygments-main/pygments/lexers/compiled.py +1257 -425
  68. data/vendor/pygments-main/pygments/lexers/dalvik.py +104 -0
  69. data/vendor/pygments-main/pygments/lexers/dotnet.py +97 -62
  70. data/vendor/pygments-main/pygments/lexers/foxpro.py +428 -0
  71. data/vendor/pygments-main/pygments/lexers/functional.py +931 -32
  72. data/vendor/pygments-main/pygments/lexers/github.py +206 -3
  73. data/vendor/pygments-main/pygments/lexers/hdl.py +3 -3
  74. data/vendor/pygments-main/pygments/lexers/jvm.py +309 -44
  75. data/vendor/pygments-main/pygments/lexers/math.py +876 -30
  76. data/vendor/pygments-main/pygments/lexers/other.py +956 -517
  77. data/vendor/pygments-main/pygments/lexers/parsers.py +85 -2
  78. data/vendor/pygments-main/pygments/lexers/shell.py +81 -18
  79. data/vendor/pygments-main/pygments/lexers/special.py +1 -1
  80. data/vendor/pygments-main/pygments/lexers/sql.py +2 -2
  81. data/vendor/pygments-main/pygments/lexers/templates.py +119 -8
  82. data/vendor/pygments-main/pygments/lexers/text.py +155 -15
  83. data/vendor/pygments-main/pygments/lexers/web.py +1578 -397
  84. data/vendor/pygments-main/pygments/modeline.py +40 -0
  85. data/vendor/pygments-main/pygments/plugin.py +1 -1
  86. data/vendor/pygments-main/pygments/scanner.py +1 -1
  87. data/vendor/pygments-main/pygments/style.py +1 -1
  88. data/vendor/pygments-main/pygments/styles/__init__.py +1 -1
  89. data/vendor/pygments-main/pygments/styles/autumn.py +1 -1
  90. data/vendor/pygments-main/pygments/styles/borland.py +1 -1
  91. data/vendor/pygments-main/pygments/styles/bw.py +1 -1
  92. data/vendor/pygments-main/pygments/styles/colorful.py +1 -1
  93. data/vendor/pygments-main/pygments/styles/default.py +1 -1
  94. data/vendor/pygments-main/pygments/styles/emacs.py +1 -1
  95. data/vendor/pygments-main/pygments/styles/friendly.py +1 -1
  96. data/vendor/pygments-main/pygments/styles/fruity.py +1 -1
  97. data/vendor/pygments-main/pygments/styles/manni.py +1 -1
  98. data/vendor/pygments-main/pygments/styles/monokai.py +1 -1
  99. data/vendor/pygments-main/pygments/styles/murphy.py +1 -1
  100. data/vendor/pygments-main/pygments/styles/native.py +1 -1
  101. data/vendor/pygments-main/pygments/styles/pastie.py +1 -1
  102. data/vendor/pygments-main/pygments/styles/perldoc.py +1 -1
  103. data/vendor/pygments-main/pygments/styles/rrt.py +1 -1
  104. data/vendor/pygments-main/pygments/styles/tango.py +1 -1
  105. data/vendor/pygments-main/pygments/styles/trac.py +1 -1
  106. data/vendor/pygments-main/pygments/styles/vim.py +1 -1
  107. data/vendor/pygments-main/pygments/styles/vs.py +1 -1
  108. data/vendor/pygments-main/pygments/token.py +1 -1
  109. data/vendor/pygments-main/pygments/unistring.py +36 -26
  110. data/vendor/pygments-main/pygments/util.py +46 -1
  111. data/vendor/pygments-main/scripts/check_sources.py +2 -2
  112. data/vendor/pygments-main/scripts/detect_missing_analyse_text.py +2 -0
  113. data/vendor/pygments-main/scripts/find_codetags.py +1 -1
  114. data/vendor/pygments-main/scripts/find_error.py +5 -6
  115. data/vendor/pygments-main/setup.cfg +1 -0
  116. data/vendor/pygments-main/setup.py +6 -4
  117. data/vendor/pygments-main/tests/examplefiles/BOM.js +1 -0
  118. data/vendor/pygments-main/tests/examplefiles/Config.in.cache +1973 -0
  119. data/vendor/pygments-main/tests/examplefiles/Deflate.fs +578 -0
  120. data/vendor/pygments-main/tests/examplefiles/Get-CommandDefinitionHtml.ps1 +66 -0
  121. data/vendor/pygments-main/tests/examplefiles/IPDispatchC.nc +104 -0
  122. data/vendor/pygments-main/tests/examplefiles/IPDispatchP.nc +671 -0
  123. data/vendor/pygments-main/tests/examplefiles/RoleQ.pm6 +23 -0
  124. data/vendor/pygments-main/tests/examplefiles/autoit_submit.au3 +25 -0
  125. data/vendor/pygments-main/tests/examplefiles/bigtest.nsi +308 -0
  126. data/vendor/pygments-main/tests/examplefiles/ca65_example +284 -0
  127. data/vendor/pygments-main/tests/examplefiles/cbmbas_example +9 -0
  128. data/vendor/pygments-main/tests/examplefiles/classes.dylan +89 -4
  129. data/vendor/pygments-main/tests/examplefiles/example.Rd +78 -0
  130. data/vendor/pygments-main/tests/examplefiles/example.bug +54 -0
  131. data/vendor/pygments-main/tests/examplefiles/example.ceylon +52 -0
  132. data/vendor/pygments-main/tests/examplefiles/example.clay +33 -0
  133. data/vendor/pygments-main/tests/examplefiles/example.cob +3556 -0
  134. data/vendor/pygments-main/tests/examplefiles/example.hx +142 -0
  135. data/vendor/pygments-main/tests/examplefiles/example.jag +48 -0
  136. data/vendor/pygments-main/tests/examplefiles/example.lagda +19 -0
  137. data/vendor/pygments-main/tests/examplefiles/example.monkey +152 -0
  138. data/vendor/pygments-main/tests/examplefiles/example.msc +43 -0
  139. data/vendor/pygments-main/tests/examplefiles/example.prg +161 -0
  140. data/vendor/pygments-main/tests/examplefiles/example.reg +19 -0
  141. data/vendor/pygments-main/tests/examplefiles/example.rexx +50 -0
  142. data/vendor/pygments-main/tests/examplefiles/example.rkt +95 -0
  143. data/vendor/pygments-main/tests/examplefiles/example.rpf +4 -0
  144. data/vendor/pygments-main/tests/examplefiles/example.shell-session +45 -0
  145. data/vendor/pygments-main/tests/examplefiles/example.stan +108 -0
  146. data/vendor/pygments-main/tests/examplefiles/example.ts +28 -0
  147. data/vendor/pygments-main/tests/examplefiles/example.xtend +34 -0
  148. data/vendor/pygments-main/tests/examplefiles/example2.msc +79 -0
  149. data/vendor/pygments-main/tests/examplefiles/garcia-wachs.kk +133 -0
  150. data/vendor/pygments-main/tests/examplefiles/grammar-test.p6 +22 -0
  151. data/vendor/pygments-main/tests/examplefiles/hello.smali +40 -0
  152. data/vendor/pygments-main/tests/examplefiles/hello.sp +9 -0
  153. data/vendor/pygments-main/tests/examplefiles/http_request_example +2 -1
  154. data/vendor/pygments-main/tests/examplefiles/http_response_example +4 -2
  155. data/vendor/pygments-main/tests/examplefiles/inet_pton6.dg +71 -0
  156. data/vendor/pygments-main/tests/examplefiles/json.lasso +301 -0
  157. data/vendor/pygments-main/tests/examplefiles/json.lasso9 +213 -0
  158. data/vendor/pygments-main/tests/examplefiles/livescript-demo.ls +41 -0
  159. data/vendor/pygments-main/tests/examplefiles/logos_example.xm +28 -0
  160. data/vendor/pygments-main/tests/examplefiles/matlab_sample +5 -2
  161. data/vendor/pygments-main/tests/examplefiles/metagrammar.treetop +455 -0
  162. data/vendor/pygments-main/tests/examplefiles/mg_sample.pro +73 -0
  163. data/vendor/pygments-main/tests/examplefiles/minehunt.qml +112 -0
  164. data/vendor/pygments-main/tests/examplefiles/nanomsg.intr +95 -0
  165. data/vendor/pygments-main/tests/examplefiles/objc_example.m +7 -0
  166. data/vendor/pygments-main/tests/examplefiles/phpMyAdmin.spec +163 -0
  167. data/vendor/pygments-main/tests/examplefiles/py3tb_test.py3tb +4 -0
  168. data/vendor/pygments-main/tests/examplefiles/pytb_test3.pytb +4 -0
  169. data/vendor/pygments-main/tests/examplefiles/robotframework.txt +39 -0
  170. data/vendor/pygments-main/tests/examplefiles/rust_example.rs +233 -0
  171. data/vendor/pygments-main/tests/examplefiles/session.dylan-console +9 -0
  172. data/vendor/pygments-main/tests/examplefiles/swig_java.swg +1329 -0
  173. data/vendor/pygments-main/tests/examplefiles/swig_std_vector.i +225 -0
  174. data/vendor/pygments-main/tests/examplefiles/test.R +149 -115
  175. data/vendor/pygments-main/tests/examplefiles/test.agda +102 -0
  176. data/vendor/pygments-main/tests/examplefiles/test.bb +95 -0
  177. data/vendor/pygments-main/tests/examplefiles/test.cu +36 -0
  178. data/vendor/pygments-main/tests/examplefiles/test.ebnf +31 -0
  179. data/vendor/pygments-main/tests/examplefiles/test.opa +10 -0
  180. data/vendor/pygments-main/tests/examplefiles/test.p6 +252 -0
  181. data/vendor/pygments-main/tests/examplefiles/test2.pypylog +120 -0
  182. data/vendor/pygments-main/tests/examplefiles/type.lisp +16 -0
  183. data/vendor/pygments-main/tests/examplefiles/unix-io.lid +37 -0
  184. data/vendor/pygments-main/tests/old_run.py +1 -1
  185. data/vendor/pygments-main/tests/run.py +3 -2
  186. data/vendor/pygments-main/tests/support/tags +36 -0
  187. data/vendor/pygments-main/tests/test_basic_api.py +4 -3
  188. data/vendor/pygments-main/tests/test_clexer.py +1 -1
  189. data/vendor/pygments-main/tests/test_cmdline.py +1 -1
  190. data/vendor/pygments-main/tests/test_examplefiles.py +3 -1
  191. data/vendor/pygments-main/tests/test_html_formatter.py +17 -1
  192. data/vendor/pygments-main/tests/test_latex_formatter.py +1 -1
  193. data/vendor/pygments-main/tests/test_lexers_other.py +68 -0
  194. data/vendor/pygments-main/tests/test_perllexer.py +1 -1
  195. data/vendor/pygments-main/tests/test_regexlexer.py +1 -1
  196. data/vendor/pygments-main/tests/test_token.py +1 -1
  197. data/vendor/pygments-main/tests/test_using_api.py +1 -1
  198. data/vendor/pygments-main/tests/test_util.py +22 -3
  199. metadata +84 -16
@@ -0,0 +1,104 @@
1
+ # -*- coding: utf-8 -*-
2
+ """
3
+ pygments.lexers.dalvik
4
+ ~~~~~~~~~~~~~~~~~~~~~~
5
+
6
+ Pygments lexers for Dalvik VM-related languages.
7
+
8
+ :copyright: Copyright 2006-2013 by the Pygments team, see AUTHORS.
9
+ :license: BSD, see LICENSE for details.
10
+ """
11
+
12
+ from pygments.lexer import RegexLexer, include, bygroups
13
+ from pygments.token import Keyword, Text, Comment, Name, String, Number, \
14
+ Punctuation
15
+
16
+ __all__ = ['SmaliLexer']
17
+
18
+
19
+ class SmaliLexer(RegexLexer):
20
+ """
21
+ For `Smali <http://code.google.com/p/smali/>`_ (Android/Dalvik) assembly
22
+ code.
23
+
24
+ *New in Pygments 1.6.*
25
+ """
26
+ name = 'Smali'
27
+ aliases = ['smali']
28
+ filenames = ['*.smali']
29
+ mimetypes = ['text/smali']
30
+
31
+ tokens = {
32
+ 'root': [
33
+ include('comment'),
34
+ include('label'),
35
+ include('field'),
36
+ include('method'),
37
+ include('class'),
38
+ include('directive'),
39
+ include('access-modifier'),
40
+ include('instruction'),
41
+ include('literal'),
42
+ include('punctuation'),
43
+ include('type'),
44
+ include('whitespace')
45
+ ],
46
+ 'directive': [
47
+ (r'^[ \t]*\.(class|super|implements|field|subannotation|annotation|'
48
+ r'enum|method|registers|locals|array-data|packed-switch|'
49
+ r'sparse-switch|catchall|catch|line|parameter|local|prologue|'
50
+ r'epilogue|source)', Keyword),
51
+ (r'^[ \t]*\.end (field|subannotation|annotation|method|array-data|'
52
+ 'packed-switch|sparse-switch|parameter|local)', Keyword),
53
+ (r'^[ \t]*\.restart local', Keyword),
54
+ ],
55
+ 'access-modifier': [
56
+ (r'(public|private|protected|static|final|synchronized|bridge|'
57
+ r'varargs|native|abstract|strictfp|synthetic|constructor|'
58
+ r'declared-synchronized|interface|enum|annotation|volatile|'
59
+ r'transient)', Keyword),
60
+ ],
61
+ 'whitespace': [
62
+ (r'\n', Text),
63
+ (r'\s+', Text),
64
+ ],
65
+ 'instruction': [
66
+ (r'\b[vp]\d+\b', Name.Builtin), # registers
67
+ (r'\b[a-z][A-Za-z0-9/-]+\s+', Text), # instructions
68
+ ],
69
+ 'literal': [
70
+ (r'".*"', String),
71
+ (r'0x[0-9A-Fa-f]+t?', Number.Hex),
72
+ (r'[0-9]*\.[0-9]+([eE][0-9]+)?[fd]?', Number.Float),
73
+ (r'[0-9]+L?', Number.Integer),
74
+ ],
75
+ 'field': [
76
+ (r'(\$?\b)([A-Za-z0-9_$]*)(:)',
77
+ bygroups(Punctuation, Name.Variable, Punctuation)),
78
+ ],
79
+ 'method': [
80
+ (r'<(?:cl)?init>', Name.Function), # constructor
81
+ (r'(\$?\b)([A-Za-z0-9_$]*)(\()',
82
+ bygroups(Punctuation, Name.Function, Punctuation)),
83
+ ],
84
+ 'label': [
85
+ (r':[A-Za-z0-9_]+', Name.Label),
86
+ ],
87
+ 'class': [
88
+ # class names in the form Lcom/namespace/ClassName;
89
+ # I only want to color the ClassName part, so the namespace part is
90
+ # treated as 'Text'
91
+ (r'(L)((?:[A-Za-z0-9_$]+/)*)([A-Za-z0-9_$]+)(;)',
92
+ bygroups(Keyword.Type, Text, Name.Class, Text)),
93
+ ],
94
+ 'punctuation': [
95
+ (r'->', Punctuation),
96
+ (r'[{},\(\):=\.-]', Punctuation),
97
+ ],
98
+ 'type': [
99
+ (r'[ZBSCIJFDV\[]+', Keyword.Type),
100
+ ],
101
+ 'comment': [
102
+ (r'#.*?\n', Comment),
103
+ ],
104
+ }
@@ -5,7 +5,7 @@
5
5
 
6
6
  Lexers for .net languages.
7
7
 
8
- :copyright: Copyright 2006-2012 by the Pygments team, see AUTHORS.
8
+ :copyright: Copyright 2006-2013 by the Pygments team, see AUTHORS.
9
9
  :license: BSD, see LICENSE for details.
10
10
  """
11
11
  import re
@@ -23,10 +23,6 @@ __all__ = ['CSharpLexer', 'NemerleLexer', 'BooLexer', 'VbNetLexer',
23
23
  'CSharpAspxLexer', 'VbNetAspxLexer', 'FSharpLexer']
24
24
 
25
25
 
26
- def _escape(st):
27
- return st.replace(u'\\', ur'\\').replace(u'-', ur'\-').\
28
- replace(u'[', ur'\[').replace(u']', ur'\]')
29
-
30
26
  class CSharpLexer(RegexLexer):
31
27
  """
32
28
  For `C# <http://msdn2.microsoft.com/en-us/vcsharp/default.aspx>`_
@@ -67,10 +63,9 @@ class CSharpLexer(RegexLexer):
67
63
  '[' + uni.Lu + uni.Ll + uni.Lt + uni.Lm + uni.Nl +
68
64
  uni.Nd + uni.Pc + uni.Cf + uni.Mn + uni.Mc + ']*'),
69
65
  'full': ('@?(?:_|[^' +
70
- _escape(uni.allexcept('Lu', 'Ll', 'Lt', 'Lm', 'Lo', 'Nl')) + '])'
71
- + '[^' + _escape(uni.allexcept('Lu', 'Ll', 'Lt', 'Lm', 'Lo',
72
- 'Nl', 'Nd', 'Pc', 'Cf', 'Mn',
73
- 'Mc')) + ']*'),
66
+ uni.allexcept('Lu', 'Ll', 'Lt', 'Lm', 'Lo', 'Nl') + '])'
67
+ + '[^' + uni.allexcept('Lu', 'Ll', 'Lt', 'Lm', 'Lo', 'Nl',
68
+ 'Nd', 'Pc', 'Cf', 'Mn', 'Mc') + ']*'),
74
69
  }
75
70
 
76
71
  tokens = {}
@@ -88,7 +83,7 @@ class CSharpLexer(RegexLexer):
88
83
  (r'[^\S\n]+', Text),
89
84
  (r'\\\n', Text), # line continuation
90
85
  (r'//.*?\n', Comment.Single),
91
- (r'/[*](.|\n)*?[*]/', Comment.Multiline),
86
+ (r'/[*].*?[*]/', Comment.Multiline),
92
87
  (r'\n', Text),
93
88
  (r'[~!%^&*()+=|\[\]:;,.<>/?-]', Punctuation),
94
89
  (r'[{}]', Punctuation),
@@ -179,11 +174,10 @@ class NemerleLexer(RegexLexer):
179
174
  basic = ('@?[_' + uni.Lu + uni.Ll + uni.Lt + uni.Lm + uni.Nl + ']' +
180
175
  '[' + uni.Lu + uni.Ll + uni.Lt + uni.Lm + uni.Nl +
181
176
  uni.Nd + uni.Pc + uni.Cf + uni.Mn + uni.Mc + ']*'),
182
- full = ('@?(?:_|[^' + _escape(uni.allexcept('Lu', 'Ll', 'Lt', 'Lm',
183
- 'Lo', 'Nl')) + '])'
184
- + '[^' + _escape(uni.allexcept('Lu', 'Ll', 'Lt', 'Lm', 'Lo',
185
- 'Nl', 'Nd', 'Pc', 'Cf', 'Mn',
186
- 'Mc')) + ']*'),
177
+ full = ('@?(?:_|[^' + uni.allexcept('Lu', 'Ll', 'Lt', 'Lm', 'Lo',
178
+ 'Nl') + '])'
179
+ + '[^' + uni.allexcept('Lu', 'Ll', 'Lt', 'Lm', 'Lo', 'Nl',
180
+ 'Nd', 'Pc', 'Cf', 'Mn', 'Mc') + ']*'),
187
181
  )
188
182
 
189
183
  tokens = {}
@@ -535,7 +529,7 @@ class VbNetAspxLexer(DelegatingLexer):
535
529
  # Very close to functional.OcamlLexer
536
530
  class FSharpLexer(RegexLexer):
537
531
  """
538
- For the F# language.
532
+ For the F# language (version 3.0).
539
533
 
540
534
  *New in Pygments 1.5.*
541
535
  """
@@ -546,91 +540,132 @@ class FSharpLexer(RegexLexer):
546
540
  mimetypes = ['text/x-fsharp']
547
541
 
548
542
  keywords = [
549
- 'abstract', 'and', 'as', 'assert', 'base', 'begin', 'class',
550
- 'default', 'delegate', 'do', 'do!', 'done', 'downcast',
551
- 'downto', 'elif', 'else', 'end', 'exception', 'extern',
552
- 'false', 'finally', 'for', 'fun', 'function', 'global', 'if',
553
- 'in', 'inherit', 'inline', 'interface', 'internal', 'lazy',
554
- 'let', 'let!', 'match', 'member', 'module', 'mutable',
555
- 'namespace', 'new', 'null', 'of', 'open', 'or', 'override',
556
- 'private', 'public', 'rec', 'return', 'return!', 'sig',
557
- 'static', 'struct', 'then', 'to', 'true', 'try', 'type',
558
- 'upcast', 'use', 'use!', 'val', 'void', 'when', 'while',
559
- 'with', 'yield', 'yield!'
543
+ 'abstract', 'as', 'assert', 'base', 'begin', 'class', 'default',
544
+ 'delegate', 'do!', 'do', 'done', 'downcast', 'downto', 'elif', 'else',
545
+ 'end', 'exception', 'extern', 'false', 'finally', 'for', 'function',
546
+ 'fun', 'global', 'if', 'inherit', 'inline', 'interface', 'internal',
547
+ 'in', 'lazy', 'let!', 'let', 'match', 'member', 'module', 'mutable',
548
+ 'namespace', 'new', 'null', 'of', 'open', 'override', 'private', 'public',
549
+ 'rec', 'return!', 'return', 'select', 'static', 'struct', 'then', 'to',
550
+ 'true', 'try', 'type', 'upcast', 'use!', 'use', 'val', 'void', 'when',
551
+ 'while', 'with', 'yield!', 'yield',
552
+ ]
553
+ # Reserved words; cannot hurt to color them as keywords too.
554
+ keywords += [
555
+ 'atomic', 'break', 'checked', 'component', 'const', 'constraint',
556
+ 'constructor', 'continue', 'eager', 'event', 'external', 'fixed',
557
+ 'functor', 'include', 'method', 'mixin', 'object', 'parallel',
558
+ 'process', 'protected', 'pure', 'sealed', 'tailcall', 'trait',
559
+ 'virtual', 'volatile',
560
560
  ]
561
561
  keyopts = [
562
- '!=','#','&&','&','\(','\)','\*','\+',',','-\.',
563
- '->','-','\.\.','\.','::',':=',':>',':',';;',';','<-',
564
- '<','>]','>','\?\?','\?','\[<','\[>','\[\|','\[',
565
- ']','_','`','{','\|\]','\|','}','~','<@','=','@>'
562
+ '!=', '#', '&&', '&', '\(', '\)', '\*', '\+', ',', '-\.',
563
+ '->', '-', '\.\.', '\.', '::', ':=', ':>', ':', ';;', ';', '<-',
564
+ '<\]', '<', '>\]', '>', '\?\?', '\?', '\[<', '\[\|', '\[', '\]',
565
+ '_', '`', '{', '\|\]', '\|', '}', '~', '<@@', '<@', '=', '@>', '@@>',
566
566
  ]
567
567
 
568
568
  operators = r'[!$%&*+\./:<=>?@^|~-]'
569
- word_operators = ['and', 'asr', 'land', 'lor', 'lsl', 'lxor', 'mod', 'not', 'or']
569
+ word_operators = ['and', 'or', 'not']
570
570
  prefix_syms = r'[!?~]'
571
571
  infix_syms = r'[=<>@^|&+\*/$%-]'
572
- primitives = ['unit', 'int', 'float', 'bool', 'string', 'char', 'list', 'array',
573
- 'byte', 'sbyte', 'int16', 'uint16', 'uint32', 'int64', 'uint64'
574
- 'nativeint', 'unativeint', 'decimal', 'void', 'float32', 'single',
575
- 'double']
572
+ primitives = [
573
+ 'sbyte', 'byte', 'char', 'nativeint', 'unativeint', 'float32', 'single',
574
+ 'float', 'double', 'int8', 'uint8', 'int16', 'uint16', 'int32',
575
+ 'uint32', 'int64', 'uint64', 'decimal', 'unit', 'bool', 'string',
576
+ 'list', 'exn', 'obj', 'enum',
577
+ ]
578
+
579
+ # See http://msdn.microsoft.com/en-us/library/dd233181.aspx and/or
580
+ # http://fsharp.org/about/files/spec.pdf for reference. Good luck.
576
581
 
577
582
  tokens = {
578
583
  'escape-sequence': [
579
- (r'\\[\\\"\'ntbr]', String.Escape),
584
+ (r'\\[\\\"\'ntbrafv]', String.Escape),
580
585
  (r'\\[0-9]{3}', String.Escape),
581
- (r'\\x[0-9a-fA-F]{2}', String.Escape),
586
+ (r'\\u[0-9a-fA-F]{4}', String.Escape),
587
+ (r'\\U[0-9a-fA-F]{8}', String.Escape),
582
588
  ],
583
589
  'root': [
584
590
  (r'\s+', Text),
585
- (r'false|true|\(\)|\[\]', Name.Builtin.Pseudo),
586
- (r'\b([A-Z][A-Za-z0-9_\']*)(?=\s*\.)',
591
+ (r'\(\)|\[\]', Name.Builtin.Pseudo),
592
+ (r'\b(?<!\.)([A-Z][A-Za-z0-9_\']*)(?=\s*\.)',
587
593
  Name.Namespace, 'dotted'),
588
- (r'\b([A-Z][A-Za-z0-9_\']*)', Name.Class),
594
+ (r'\b([A-Z][A-Za-z0-9_\']*)', Name),
595
+ (r'///.*?\n', String.Doc),
589
596
  (r'//.*?\n', Comment.Single),
590
597
  (r'\(\*(?!\))', Comment, 'comment'),
598
+
599
+ (r'@"', String, 'lstring'),
600
+ (r'"""', String, 'tqs'),
601
+ (r'"', String, 'string'),
602
+
603
+ (r'\b(open|module)(\s+)([a-zA-Z0-9_.]+)',
604
+ bygroups(Keyword, Text, Name.Namespace)),
605
+ (r'\b(let!?)(\s+)([a-zA-Z0-9_]+)',
606
+ bygroups(Keyword, Text, Name.Variable)),
607
+ (r'\b(type)(\s+)([a-zA-Z0-9_]+)',
608
+ bygroups(Keyword, Text, Name.Class)),
609
+ (r'\b(member|override)(\s+)([a-zA-Z0-9_]+)(\.)([a-zA-Z0-9_]+)',
610
+ bygroups(Keyword, Text, Name, Punctuation, Name.Function)),
591
611
  (r'\b(%s)\b' % '|'.join(keywords), Keyword),
592
612
  (r'(%s)' % '|'.join(keyopts), Operator),
593
613
  (r'(%s|%s)?%s' % (infix_syms, prefix_syms, operators), Operator),
594
614
  (r'\b(%s)\b' % '|'.join(word_operators), Operator.Word),
595
615
  (r'\b(%s)\b' % '|'.join(primitives), Keyword.Type),
596
-
597
- (r'#[ \t]*(if|endif|else|line|nowarn|light)\b.*?\n',
616
+ (r'#[ \t]*(if|endif|else|line|nowarn|light|\d+)\b.*?\n',
598
617
  Comment.Preproc),
599
618
 
600
619
  (r"[^\W\d][\w']*", Name),
601
620
 
602
- (r'\d[\d_]*', Number.Integer),
603
- (r'0[xX][\da-fA-F][\da-fA-F_]*', Number.Hex),
604
- (r'0[oO][0-7][0-7_]*', Number.Oct),
605
- (r'0[bB][01][01_]*', Number.Binary),
606
- (r'-?\d[\d_]*(.[\d_]*)?([eE][+\-]?\d[\d_]*)', Number.Float),
621
+ (r'\d[\d_]*[uU]?[yslLnQRZINGmM]?', Number.Integer),
622
+ (r'0[xX][\da-fA-F][\da-fA-F_]*[uU]?[yslLn]?[fF]?', Number.Hex),
623
+ (r'0[oO][0-7][0-7_]*[uU]?[yslLn]?', Number.Oct),
624
+ (r'0[bB][01][01_]*[uU]?[yslLn]?', Number.Binary),
625
+ (r'-?\d[\d_]*(.[\d_]*)?([eE][+\-]?\d[\d_]*)[fFmM]?',
626
+ Number.Float),
607
627
 
608
- (r"'(?:(\\[\\\"'ntbr ])|(\\[0-9]{3})|(\\x[0-9a-fA-F]{2}))'",
628
+ (r"'(?:(\\[\\\"'ntbr ])|(\\[0-9]{3})|(\\x[0-9a-fA-F]{2}))'B?",
609
629
  String.Char),
610
630
  (r"'.'", String.Char),
611
631
  (r"'", Keyword), # a stray quote is another syntax element
612
632
 
613
- (r'"', String.Double, 'string'),
614
-
615
633
  (r'[~?][a-z][\w\']*:', Name.Variable),
616
634
  ],
635
+ 'dotted': [
636
+ (r'\s+', Text),
637
+ (r'\.', Punctuation),
638
+ (r'[A-Z][A-Za-z0-9_\']*(?=\s*\.)', Name.Namespace),
639
+ (r'[A-Z][A-Za-z0-9_\']*', Name, '#pop'),
640
+ (r'[a-z_][A-Za-z0-9_\']*', Name, '#pop'),
641
+ ],
617
642
  'comment': [
618
- (r'[^(*)]+', Comment),
643
+ (r'[^(*)@"]+', Comment),
619
644
  (r'\(\*', Comment, '#push'),
620
645
  (r'\*\)', Comment, '#pop'),
621
- (r'[(*)]', Comment),
646
+ # comments cannot be closed within strings in comments
647
+ (r'@"', String, 'lstring'),
648
+ (r'"""', String, 'tqs'),
649
+ (r'"', String, 'string'),
650
+ (r'[(*)@]', Comment),
622
651
  ],
623
652
  'string': [
624
- (r'[^\\"]+', String.Double),
653
+ (r'[^\\"]+', String),
625
654
  include('escape-sequence'),
626
- (r'\\\n', String.Double),
627
- (r'"', String.Double, '#pop'),
655
+ (r'\\\n', String),
656
+ (r'\n', String), # newlines are allowed in any string
657
+ (r'"B?', String, '#pop'),
628
658
  ],
629
- 'dotted': [
630
- (r'\s+', Text),
631
- (r'\.', Punctuation),
632
- (r'[A-Z][A-Za-z0-9_\']*(?=\s*\.)', Name.Namespace),
633
- (r'[A-Z][A-Za-z0-9_\']*', Name.Class, '#pop'),
634
- (r'[a-z_][A-Za-z0-9_\']*', Name, '#pop'),
659
+ 'lstring': [
660
+ (r'[^"]+', String),
661
+ (r'\n', String),
662
+ (r'""', String),
663
+ (r'"B?', String, '#pop'),
664
+ ],
665
+ 'tqs': [
666
+ (r'[^"]+', String),
667
+ (r'\n', String),
668
+ (r'"""B?', String, '#pop'),
669
+ (r'"', String),
635
670
  ],
636
671
  }
@@ -0,0 +1,428 @@
1
+ # -*- coding: utf-8 -*-
2
+ """
3
+ pygments.lexers.foxpro
4
+ ~~~~~~~~~~~~~~~~~~~~~~
5
+
6
+ Simple lexer for Microsoft Visual FoxPro source code.
7
+
8
+ :copyright: Copyright 2006-2013 by the Pygments team, see AUTHORS.
9
+ :license: BSD, see LICENSE for details.
10
+ """
11
+
12
+ import re
13
+
14
+ from pygments.lexer import RegexLexer
15
+ from pygments.token import Punctuation, Text, Comment, Operator, Keyword, \
16
+ Name, String
17
+
18
+ __all__ = ['FoxProLexer']
19
+
20
+
21
+ class FoxProLexer(RegexLexer):
22
+ """Lexer for Microsoft Visual FoxPro language.
23
+
24
+ FoxPro syntax allows to shorten all keywords and function names
25
+ to 4 characters. Shortened forms are not recognized by this lexer.
26
+
27
+ *New in Pygments 1.6.*
28
+ """
29
+
30
+ name = 'FoxPro'
31
+ aliases = ['Clipper', 'XBase']
32
+ filenames = ['*.PRG', '*.prg']
33
+ mimetype = []
34
+
35
+ flags = re.IGNORECASE | re.MULTILINE
36
+
37
+ tokens = {
38
+ 'root': [
39
+ (r';\s*\n', Punctuation), # consume newline
40
+ (r'(^|\n)\s*', Text, 'newline'),
41
+
42
+ # Square brackets may be used for array indices
43
+ # and for string literal. Look for arrays
44
+ # before matching string literals.
45
+ (r'(?<=\w)\[[0-9, ]+\]', Text),
46
+ (r'\'[^\'\n]*\'|"[^"\n]*"|\[[^]*]\]', String),
47
+ (r'(^\s*\*|&&|&amp;&amp;).*?\n', Comment.Single),
48
+
49
+ (r'(ABS|ACLASS|ACOPY|ACOS|ADATABASES|ADBOBJECTS|ADDBS|'
50
+ r'ADDPROPERTY|ADEL|ADIR|ADLLS|ADOCKSTATE|AELEMENT|AERROR|'
51
+ r'AEVENTS|AFIELDS|AFONT|AGETCLASS|AGETFILEVERSION|AINS|'
52
+ r'AINSTANCE|ALANGUAGE|ALEN|ALIAS|ALINES|ALLTRIM|'
53
+ r'AMEMBERS|AMOUSEOBJ|ANETRESOURCES|APRINTERS|APROCINFO|'
54
+ r'ASC|ASCAN|ASELOBJ|ASESSIONS|ASIN|ASORT|ASQLHANDLES|'
55
+ r'ASTACKINFO|ASUBSCRIPT|AT|AT_C|ATAGINFO|ATAN|ATC|ATCC|'
56
+ r'ATCLINE|ATLINE|ATN2|AUSED|AVCXCLASSES|BAR|BARCOUNT|'
57
+ r'BARPROMPT|BETWEEN|BINDEVENT|BINTOC|BITAND|BITCLEAR|'
58
+ r'BITLSHIFT|BITNOT|BITOR|BITRSHIFT|BITSET|BITTEST|BITXOR|'
59
+ r'BOF|CANDIDATE|CAPSLOCK|CAST|CDOW|CDX|CEILING|CHR|CHRSAW|'
60
+ r'CHRTRAN|CHRTRANC|CLEARRESULTSET|CMONTH|CNTBAR|CNTPAD|COL|'
61
+ r'COM|Functions|COMARRAY|COMCLASSINFO|COMPOBJ|COMPROP|'
62
+ r'COMRETURNERROR|COS|CPCONVERT|CPCURRENT|CPDBF|CREATEBINARY|'
63
+ r'CREATEOBJECT|CREATEOBJECTEX|CREATEOFFLINE|CTOBIN|CTOD|'
64
+ r'CTOT|CURDIR|CURSORGETPROP|CURSORSETPROP|CURSORTOXML|'
65
+ r'CURVAL|DATE|DATETIME|DAY|DBC|DBF|DBGETPROP|DBSETPROP|'
66
+ r'DBUSED|DDEAbortTrans|DDEAdvise|DDEEnabled|DDEExecute|'
67
+ r'DDEInitiate|DDELastError|DDEPoke|DDERequest|DDESetOption|'
68
+ r'DDESetService|DDESetTopic|DDETerminate|DEFAULTEXT|'
69
+ r'DELETED|DESCENDING|DIFFERENCE|DIRECTORY|DISKSPACE|'
70
+ r'DisplayPath|DMY|DODEFAULT|DOW|DRIVETYPE|DROPOFFLINE|'
71
+ r'DTOC|DTOR|DTOS|DTOT|EDITSOURCE|EMPTY|EOF|ERROR|EVAL(UATE)?|'
72
+ r'EVENTHANDLER|EVL|EXECSCRIPT|EXP|FCHSIZE|FCLOSE|FCOUNT|'
73
+ r'FCREATE|FDATE|FEOF|FERROR|FFLUSH|FGETS|FIELD|FILE|'
74
+ r'FILETOSTR|FILTER|FKLABEL|FKMAX|FLDLIST|FLOCK|FLOOR|'
75
+ r'FONTMETRIC|FOPEN|FOR|FORCEEXT|FORCEPATH|FOUND|FPUTS|'
76
+ r'FREAD|FSEEK|FSIZE|FTIME|FULLPATH|FV|FWRITE|'
77
+ r'GETAUTOINCVALUE|GETBAR|GETCOLOR|GETCP|GETDIR|GETENV|'
78
+ r'GETFILE|GETFLDSTATE|GETFONT|GETINTERFACE|'
79
+ r'GETNEXTMODIFIED|GETOBJECT|GETPAD|GETPEM|GETPICT|'
80
+ r'GETPRINTER|GETRESULTSET|GETWORDCOUNT|GETWORDNUM|'
81
+ r'GETCURSORADAPTER|GOMONTH|HEADER|HOME|HOUR|ICASE|'
82
+ r'IDXCOLLATE|IIF|IMESTATUS|INDBC|INDEXSEEK|INKEY|INLIST|'
83
+ r'INPUTBOX|INSMODE|INT|ISALPHA|ISBLANK|ISCOLOR|ISDIGIT|'
84
+ r'ISEXCLUSIVE|ISFLOCKED|ISLEADBYTE|ISLOWER|ISMEMOFETCHED|'
85
+ r'ISMOUSE|ISNULL|ISPEN|ISREADONLY|ISRLOCKED|'
86
+ r'ISTRANSACTABLE|ISUPPER|JUSTDRIVE|JUSTEXT|JUSTFNAME|'
87
+ r'JUSTPATH|JUSTSTEM|KEY|KEYMATCH|LASTKEY|LEFT|LEFTC|LEN|'
88
+ r'LENC|LIKE|LIKEC|LINENO|LOADPICTURE|LOCFILE|LOCK|LOG|'
89
+ r'LOG10|LOOKUP|LOWER|LTRIM|LUPDATE|MAKETRANSACTABLE|MAX|'
90
+ r'MCOL|MDOWN|MDX|MDY|MEMLINES|MEMORY|MENU|MESSAGE|'
91
+ r'MESSAGEBOX|MIN|MINUTE|MLINE|MOD|MONTH|MRKBAR|MRKPAD|'
92
+ r'MROW|MTON|MWINDOW|NDX|NEWOBJECT|NORMALIZE|NTOM|NUMLOCK|'
93
+ r'NVL|OBJNUM|OBJTOCLIENT|OBJVAR|OCCURS|OEMTOANSI|OLDVAL|'
94
+ r'ON|ORDER|OS|PAD|PADL|PARAMETERS|PAYMENT|PCOL|PCOUNT|'
95
+ r'PEMSTATUS|PI|POPUP|PRIMARY|PRINTSTATUS|PRMBAR|PRMPAD|'
96
+ r'PROGRAM|PROMPT|PROPER|PROW|PRTINFO|PUTFILE|PV|QUARTER|'
97
+ r'RAISEEVENT|RAND|RAT|RATC|RATLINE|RDLEVEL|READKEY|RECCOUNT|'
98
+ r'RECNO|RECSIZE|REFRESH|RELATION|REPLICATE|REQUERY|RGB|'
99
+ r'RGBSCHEME|RIGHT|RIGHTC|RLOCK|ROUND|ROW|RTOD|RTRIM|'
100
+ r'SAVEPICTURE|SCHEME|SCOLS|SEC|SECONDS|SEEK|SELECT|SET|'
101
+ r'SETFLDSTATE|SETRESULTSET|SIGN|SIN|SKPBAR|SKPPAD|SOUNDEX|'
102
+ r'SPACE|SQLCANCEL|SQLCOLUMNS|SQLCOMMIT|SQLCONNECT|'
103
+ r'SQLDISCONNECT|SQLEXEC|SQLGETPROP|SQLIDLEDISCONNECT|'
104
+ r'SQLMORERESULTS|SQLPREPARE|SQLROLLBACK|SQLSETPROP|'
105
+ r'SQLSTRINGCONNECT|SQLTABLES|SQRT|SROWS|STR|STRCONV|'
106
+ r'STREXTRACT|STRTOFILE|STRTRAN|STUFF|STUFFC|SUBSTR|'
107
+ r'SUBSTRC|SYS|SYSMETRIC|TABLEREVERT|TABLEUPDATE|TAG|'
108
+ r'TAGCOUNT|TAGNO|TAN|TARGET|TEXTMERGE|TIME|TRANSFORM|'
109
+ r'TRIM|TTOC|TTOD|TXNLEVEL|TXTWIDTH|TYPE|UNBINDEVENTS|'
110
+ r'UNIQUE|UPDATED|UPPER|USED|VAL|VARREAD|VARTYPE|VERSION|'
111
+ r'WBORDER|WCHILD|WCOLS|WDOCKABLE|WEEK|WEXIST|WFONT|WLAST|'
112
+ r'WLCOL|WLROW|WMAXIMUM|WMINIMUM|WONTOP|WOUTPUT|WPARENT|'
113
+ r'WREAD|WROWS|WTITLE|WVISIBLE|XMLTOCURSOR|XMLUPDATEGRAM|'
114
+ r'YEAR)(?=\s*\()', Name.Function),
115
+
116
+ (r'_ALIGNMENT|_ASCIICOLS|_ASCIIROWS|_ASSIST|_BEAUTIFY|_BOX|'
117
+ r'_BROWSER|_BUILDER|_CALCMEM|_CALCVALUE|_CLIPTEXT|_CONVERTER|'
118
+ r'_COVERAGE|_CUROBJ|_DBLCLICK|_DIARYDATE|_DOS|_FOXDOC|_FOXREF|'
119
+ r'_GALLERY|_GENGRAPH|_GENHTML|_GENMENU|_GENPD|_GENSCRN|'
120
+ r'_GENXTAB|_GETEXPR|_INCLUDE|_INCSEEK|_INDENT|_LMARGIN|_MAC|'
121
+ r'_MENUDESIGNER|_MLINE|_PADVANCE|_PAGENO|_PAGETOTAL|_PBPAGE|'
122
+ r'_PCOLNO|_PCOPIES|_PDRIVER|_PDSETUP|_PECODE|_PEJECT|_PEPAGE|'
123
+ r'_PLENGTH|_PLINENO|_PLOFFSET|_PPITCH|_PQUALITY|_PRETEXT|'
124
+ r'_PSCODE|_PSPACING|_PWAIT|_RMARGIN|_REPORTBUILDER|'
125
+ r'_REPORTOUTPUT|_REPORTPREVIEW|_SAMPLES|_SCCTEXT|_SCREEN|'
126
+ r'_SHELL|_SPELLCHK|_STARTUP|_TABS|_TALLY|_TASKPANE|_TEXT|'
127
+ r'_THROTTLE|_TOOLBOX|_TOOLTIPTIMEOUT|_TRANSPORT|_TRIGGERLEVEL|'
128
+ r'_UNIX|_VFP|_WINDOWS|_WIZARD|_WRAP', Keyword.Pseudo),
129
+
130
+ (r'THISFORMSET|THISFORM|THIS', Name.Builtin),
131
+
132
+ (r'Application|CheckBox|Collection|Column|ComboBox|'
133
+ r'CommandButton|CommandGroup|Container|Control|CursorAdapter|'
134
+ r'Cursor|Custom|DataEnvironment|DataObject|EditBox|'
135
+ r'Empty|Exception|Fields|Files|File|FormSet|Form|FoxCode|'
136
+ r'Grid|Header|Hyperlink|Image|Label|Line|ListBox|Objects|'
137
+ r'OptionButton|OptionGroup|PageFrame|Page|ProjectHook|Projects|'
138
+ r'Project|Relation|ReportListener|Separator|Servers|Server|'
139
+ r'Session|Shape|Spinner|Tables|TextBox|Timer|ToolBar|'
140
+ r'XMLAdapter|XMLField|XMLTable', Name.Class),
141
+
142
+ (r'm\.[a-z_]\w*', Name.Variable),
143
+ (r'\.(F|T|AND|OR|NOT|NULL)\.|\b(AND|OR|NOT|NULL)\b', Operator.Word),
144
+
145
+ (r'\.(ActiveColumn|ActiveControl|ActiveForm|ActivePage|'
146
+ r'ActiveProject|ActiveRow|AddLineFeeds|ADOCodePage|Alias|'
147
+ r'Alignment|Align|AllowAddNew|AllowAutoColumnFit|'
148
+ r'AllowCellSelection|AllowDelete|AllowHeaderSizing|'
149
+ r'AllowInsert|AllowModalMessages|AllowOutput|AllowRowSizing|'
150
+ r'AllowSimultaneousFetch|AllowTabs|AllowUpdate|'
151
+ r'AlwaysOnBottom|AlwaysOnTop|Anchor|Application|'
152
+ r'AutoActivate|AutoCenter|AutoCloseTables|AutoComplete|'
153
+ r'AutoCompSource|AutoCompTable|AutoHideScrollBar|'
154
+ r'AutoIncrement|AutoOpenTables|AutoRelease|AutoSize|'
155
+ r'AutoVerbMenu|AutoYield|BackColor|ForeColor|BackStyle|'
156
+ r'BaseClass|BatchUpdateCount|BindControls|BorderColor|'
157
+ r'BorderStyle|BorderWidth|BoundColumn|BoundTo|Bound|'
158
+ r'BreakOnError|BufferModeOverride|BufferMode|'
159
+ r'BuildDateTime|ButtonCount|Buttons|Cancel|Caption|'
160
+ r'Centered|Century|ChildAlias|ChildOrder|ChildTable|'
161
+ r'ClassLibrary|Class|ClipControls|Closable|CLSID|CodePage|'
162
+ r'ColorScheme|ColorSource|ColumnCount|ColumnLines|'
163
+ r'ColumnOrder|Columns|ColumnWidths|CommandClauses|'
164
+ r'Comment|CompareMemo|ConflictCheckCmd|ConflictCheckType|'
165
+ r'ContinuousScroll|ControlBox|ControlCount|Controls|'
166
+ r'ControlSource|ConversionFunc|Count|CurrentControl|'
167
+ r'CurrentDataSession|CurrentPass|CurrentX|CurrentY|'
168
+ r'CursorSchema|CursorSource|CursorStatus|Curvature|'
169
+ r'Database|DataSessionID|DataSession|DataSourceType|'
170
+ r'DataSource|DataType|DateFormat|DateMark|Debug|'
171
+ r'DeclareXMLPrefix|DEClassLibrary|DEClass|DefaultFilePath|'
172
+ r'Default|DefOLELCID|DeleteCmdDataSourceType|DeleteCmdDataSource|'
173
+ r'DeleteCmd|DeleteMark|Description|Desktop|'
174
+ r'Details|DisabledBackColor|DisabledForeColor|'
175
+ r'DisabledItemBackColor|DisabledItemForeColor|'
176
+ r'DisabledPicture|DisableEncode|DisplayCount|'
177
+ r'DisplayValue|Dockable|Docked|DockPosition|'
178
+ r'DocumentFile|DownPicture|DragIcon|DragMode|DrawMode|'
179
+ r'DrawStyle|DrawWidth|DynamicAlignment|DynamicBackColor|'
180
+ r'DynamicForeColor|DynamicCurrentControl|DynamicFontBold|'
181
+ r'DynamicFontItalic|DynamicFontStrikethru|'
182
+ r'DynamicFontUnderline|DynamicFontName|DynamicFontOutline|'
183
+ r'DynamicFontShadow|DynamicFontSize|DynamicInputMask|'
184
+ r'DynamicLineHeight|EditorOptions|Enabled|'
185
+ r'EnableHyperlinks|Encrypted|ErrorNo|Exclude|Exclusive|'
186
+ r'FetchAsNeeded|FetchMemoCmdList|FetchMemoDataSourceType|'
187
+ r'FetchMemoDataSource|FetchMemo|FetchSize|'
188
+ r'FileClassLibrary|FileClass|FillColor|FillStyle|Filter|'
189
+ r'FirstElement|FirstNestedTable|Flags|FontBold|FontItalic|'
190
+ r'FontStrikethru|FontUnderline|FontCharSet|FontCondense|'
191
+ r'FontExtend|FontName|FontOutline|FontShadow|FontSize|'
192
+ r'ForceCloseTag|Format|FormCount|FormattedOutput|Forms|'
193
+ r'FractionDigits|FRXDataSession|FullName|GDIPlusGraphics|'
194
+ r'GridLineColor|GridLines|GridLineWidth|HalfHeightCaption|'
195
+ r'HeaderClassLibrary|HeaderClass|HeaderHeight|Height|'
196
+ r'HelpContextID|HideSelection|HighlightBackColor|'
197
+ r'HighlightForeColor|HighlightStyle|HighlightRowLineWidth|'
198
+ r'HighlightRow|Highlight|HomeDir|Hours|HostName|'
199
+ r'HScrollSmallChange|hWnd|Icon|IncrementalSearch|Increment|'
200
+ r'InitialSelectedAlias|InputMask|InsertCmdDataSourceType|'
201
+ r'InsertCmdDataSource|InsertCmdRefreshCmd|'
202
+ r'InsertCmdRefreshFieldList|InsertCmdRefreshKeyFieldList|'
203
+ r'InsertCmd|Instancing|IntegralHeight|'
204
+ r'Interval|IMEMode|IsAttribute|IsBase64|IsBinary|IsNull|'
205
+ r'IsDiffGram|IsLoaded|ItemBackColor,|ItemData|ItemIDData|'
206
+ r'ItemTips|IXMLDOMElement|KeyboardHighValue|KeyboardLowValue|'
207
+ r'Keyfield|KeyFieldList|KeyPreview|KeySort|LanguageOptions|'
208
+ r'LeftColumn|Left|LineContents|LineNo|LineSlant|LinkMaster|'
209
+ r'ListCount|ListenerType|ListIndex|ListItemID|ListItem|'
210
+ r'List|LockColumnsLeft|LockColumns|LockScreen|MacDesktop|'
211
+ r'MainFile|MapN19_4ToCurrency|MapBinary|MapVarchar|Margin|'
212
+ r'MaxButton|MaxHeight|MaxLeft|MaxLength|MaxRecords|MaxTop|'
213
+ r'MaxWidth|MDIForm|MemberClassLibrary|MemberClass|'
214
+ r'MemoWindow|Message|MinButton|MinHeight|MinWidth|'
215
+ r'MouseIcon|MousePointer|Movable|MoverBars|MultiSelect|'
216
+ r'Name|NestedInto|NewIndex|NewItemID|NextSiblingTable|'
217
+ r'NoCpTrans|NoDataOnLoad|NoData|NullDisplay|'
218
+ r'NumberOfElements|Object|OLEClass|OLEDragMode|'
219
+ r'OLEDragPicture|OLEDropEffects|OLEDropHasData|'
220
+ r'OLEDropMode|OLEDropTextInsertion|OLELCID|'
221
+ r'OLERequestPendingTimeout|OLEServerBusyRaiseError|'
222
+ r'OLEServerBusyTimeout|OLETypeAllowed|OneToMany|'
223
+ r'OpenViews|OpenWindow|Optimize|OrderDirection|Order|'
224
+ r'OutputPageCount|OutputType|PageCount|PageHeight|'
225
+ r'PageNo|PageOrder|Pages|PageTotal|PageWidth|'
226
+ r'PanelLink|Panel|ParentAlias|ParentClass|ParentTable|'
227
+ r'Parent|Partition|PasswordChar|PictureMargin|'
228
+ r'PicturePosition|PictureSpacing|PictureSelectionDisplay|'
229
+ r'PictureVal|Picture|Prepared|'
230
+ r'PolyPoints|PreserveWhiteSpace|PreviewContainer|'
231
+ r'PrintJobName|Procedure|PROCESSID|ProgID|ProjectHookClass|'
232
+ r'ProjectHookLibrary|ProjectHook|QuietMode|'
233
+ r'ReadCycle|ReadLock|ReadMouse|ReadObject|ReadOnly|'
234
+ r'ReadSave|ReadTimeout|RecordMark|RecordSourceType|'
235
+ r'RecordSource|RefreshAlias|'
236
+ r'RefreshCmdDataSourceType|RefreshCmdDataSource|RefreshCmd|'
237
+ r'RefreshIgnoreFieldList|RefreshTimeStamp|RelationalExpr|'
238
+ r'RelativeColumn|RelativeRow|ReleaseType|Resizable|'
239
+ r'RespectCursorCP|RespectNesting|RightToLeft|RotateFlip|'
240
+ r'Rotation|RowColChange|RowHeight|RowSourceType|'
241
+ r'RowSource|ScaleMode|SCCProvider|SCCStatus|ScrollBars|'
242
+ r'Seconds|SelectCmd|SelectedID|'
243
+ r'SelectedItemBackColor|SelectedItemForeColor|Selected|'
244
+ r'SelectionNamespaces|SelectOnEntry|SelLength|SelStart|'
245
+ r'SelText|SendGDIPlusImage|SendUpdates|ServerClassLibrary|'
246
+ r'ServerClass|ServerHelpFile|ServerName|'
247
+ r'ServerProject|ShowTips|ShowInTaskbar|ShowWindow|'
248
+ r'Sizable|SizeBox|SOM|Sorted|Sparse|SpecialEffect|'
249
+ r'SpinnerHighValue|SpinnerLowValue|SplitBar|StackLevel|'
250
+ r'StartMode|StatusBarText|StatusBar|Stretch|StrictDateEntry|'
251
+ r'Style|TabIndex|Tables|TabOrientation|Tabs|TabStop|'
252
+ r'TabStretch|TabStyle|Tag|TerminateRead|Text|Themes|'
253
+ r'ThreadID|TimestampFieldList|TitleBar|ToolTipText|'
254
+ r'TopIndex|TopItemID|Top|TwoPassProcess|TypeLibCLSID|'
255
+ r'TypeLibDesc|TypeLibName|Type|Unicode|UpdatableFieldList|'
256
+ r'UpdateCmdDataSourceType|UpdateCmdDataSource|'
257
+ r'UpdateCmdRefreshCmd|UpdateCmdRefreshFieldList|'
258
+ r'UpdateCmdRefreshKeyFieldList|UpdateCmd|'
259
+ r'UpdateGramSchemaLocation|UpdateGram|UpdateNameList|UpdateType|'
260
+ r'UseCodePage|UseCursorSchema|UseDeDataSource|UseMemoSize|'
261
+ r'UserValue|UseTransactions|UTF8Encoded|Value|VersionComments|'
262
+ r'VersionCompany|VersionCopyright|VersionDescription|'
263
+ r'VersionNumber|VersionProduct|VersionTrademarks|Version|'
264
+ r'VFPXMLProgID|ViewPortHeight|ViewPortLeft|'
265
+ r'ViewPortTop|ViewPortWidth|VScrollSmallChange|View|Visible|'
266
+ r'VisualEffect|WhatsThisButton|WhatsThisHelpID|WhatsThisHelp|'
267
+ r'WhereType|Width|WindowList|WindowState|WindowType|WordWrap|'
268
+ r'WrapCharInCDATA|WrapInCDATA|WrapMemoInCDATA|XMLAdapter|'
269
+ r'XMLConstraints|XMLNameIsXPath|XMLNamespace|XMLName|'
270
+ r'XMLPrefix|XMLSchemaLocation|XMLTable|XMLType|'
271
+ r'XSDfractionDigits|XSDmaxLength|XSDtotalDigits|'
272
+ r'XSDtype|ZoomBox)', Name.Attribute),
273
+
274
+ (r'\.(ActivateCell|AddColumn|AddItem|AddListItem|AddObject|'
275
+ r'AddProperty|AddTableSchema|AddToSCC|Add|'
276
+ r'ApplyDiffgram|Attach|AutoFit|AutoOpen|Box|Build|'
277
+ r'CancelReport|ChangesToCursor|CheckIn|CheckOut|Circle|'
278
+ r'CleanUp|ClearData|ClearStatus|Clear|CloneObject|CloseTables|'
279
+ r'Close|Cls|CursorAttach|CursorDetach|CursorFill|'
280
+ r'CursorRefresh|DataToClip|DelayedMemoFetch|DeleteColumn|'
281
+ r'Dock|DoMessage|DoScroll|DoStatus|DoVerb|Drag|Draw|Eval|'
282
+ r'GetData|GetDockState|GetFormat|GetKey|GetLatestVersion|'
283
+ r'GetPageHeight|GetPageWidth|Help|Hide|IncludePageInOutput|'
284
+ r'IndexToItemID|ItemIDToIndex|Item|LoadXML|Line|Modify|'
285
+ r'MoveItem|Move|Nest|OLEDrag|OnPreviewClose|OutputPage|'
286
+ r'Point|Print|PSet|Quit|ReadExpression|ReadMethod|'
287
+ r'RecordRefresh|Refresh|ReleaseXML|Release|RemoveFromSCC|'
288
+ r'RemoveItem|RemoveListItem|RemoveObject|Remove|'
289
+ r'Render|Requery|RequestData|ResetToDefault|Reset|Run|'
290
+ r'SaveAsClass|SaveAs|SetAll|SetData|SetFocus|SetFormat|'
291
+ r'SetMain|SetVar|SetViewPort|ShowWhatsThis|Show|'
292
+ r'SupportsListenerType|TextHeight|TextWidth|ToCursor|'
293
+ r'ToXML|UndoCheckOut|Unnest|UpdateStatus|WhatsThisMode|'
294
+ r'WriteExpression|WriteMethod|ZOrder)', Name.Function),
295
+
296
+ (r'\.(Activate|AdjustObjectSize|AfterBand|AfterBuild|'
297
+ r'AfterCloseTables|AfterCursorAttach|AfterCursorClose|'
298
+ r'AfterCursorDetach|AfterCursorFill|AfterCursorRefresh|'
299
+ r'AfterCursorUpdate|AfterDelete|AfterInsert|'
300
+ r'AfterRecordRefresh|AfterUpdate|AfterDock|AfterReport|'
301
+ r'AfterRowColChange|BeforeBand|BeforeCursorAttach|'
302
+ r'BeforeCursorClose|BeforeCursorDetach|BeforeCursorFill|'
303
+ r'BeforeCursorRefresh|BeforeCursorUpdate|BeforeDelete|'
304
+ r'BeforeInsert|BeforeDock|BeforeOpenTables|'
305
+ r'BeforeRecordRefresh|BeforeReport|BeforeRowColChange|'
306
+ r'BeforeUpdate|Click|dbc_Activate|dbc_AfterAddTable|'
307
+ r'dbc_AfterAppendProc|dbc_AfterCloseTable|dbc_AfterCopyProc|'
308
+ r'dbc_AfterCreateConnection|dbc_AfterCreateOffline|'
309
+ r'dbc_AfterCreateTable|dbc_AfterCreateView|dbc_AfterDBGetProp|'
310
+ r'dbc_AfterDBSetProp|dbc_AfterDeleteConnection|'
311
+ r'dbc_AfterDropOffline|dbc_AfterDropTable|'
312
+ r'dbc_AfterModifyConnection|dbc_AfterModifyProc|'
313
+ r'dbc_AfterModifyTable|dbc_AfterModifyView|dbc_AfterOpenTable|'
314
+ r'dbc_AfterRemoveTable|dbc_AfterRenameConnection|'
315
+ r'dbc_AfterRenameTable|dbc_AfterRenameView|'
316
+ r'dbc_AfterValidateData|dbc_BeforeAddTable|'
317
+ r'dbc_BeforeAppendProc|dbc_BeforeCloseTable|'
318
+ r'dbc_BeforeCopyProc|dbc_BeforeCreateConnection|'
319
+ r'dbc_BeforeCreateOffline|dbc_BeforeCreateTable|'
320
+ r'dbc_BeforeCreateView|dbc_BeforeDBGetProp|'
321
+ r'dbc_BeforeDBSetProp|dbc_BeforeDeleteConnection|'
322
+ r'dbc_BeforeDropOffline|dbc_BeforeDropTable|'
323
+ r'dbc_BeforeModifyConnection|dbc_BeforeModifyProc|'
324
+ r'dbc_BeforeModifyTable|dbc_BeforeModifyView|'
325
+ r'dbc_BeforeOpenTable|dbc_BeforeRemoveTable|'
326
+ r'dbc_BeforeRenameConnection|dbc_BeforeRenameTable|'
327
+ r'dbc_BeforeRenameView|dbc_BeforeValidateData|'
328
+ r'dbc_CloseData|dbc_Deactivate|dbc_ModifyData|dbc_OpenData|'
329
+ r'dbc_PackData|DblClick|Deactivate|Deleted|Destroy|DoCmd|'
330
+ r'DownClick|DragDrop|DragOver|DropDown|ErrorMessage|Error|'
331
+ r'EvaluateContents|GotFocus|Init|InteractiveChange|KeyPress|'
332
+ r'LoadReport|Load|LostFocus|Message|MiddleClick|MouseDown|'
333
+ r'MouseEnter|MouseLeave|MouseMove|MouseUp|MouseWheel|Moved|'
334
+ r'OLECompleteDrag|OLEDragOver|OLEGiveFeedback|OLESetData|'
335
+ r'OLEStartDrag|OnMoveItem|Paint|ProgrammaticChange|'
336
+ r'QueryAddFile|QueryModifyFile|QueryNewFile|QueryRemoveFile|'
337
+ r'QueryRunFile|QueryUnload|RangeHigh|RangeLow|ReadActivate|'
338
+ r'ReadDeactivate|ReadShow|ReadValid|ReadWhen|Resize|'
339
+ r'RightClick|SCCInit|SCCDestroy|Scrolled|Timer|UIEnable|'
340
+ r'UnDock|UnloadReport|Unload|UpClick|Valid|When)', Name.Function),
341
+
342
+ (r'\s+', Text),
343
+ # everything else is not colored
344
+ (r'.', Text),
345
+ ],
346
+ 'newline': [
347
+ (r'\*.*?$', Comment.Single, '#pop'),
348
+ (r'(ACCEPT|ACTIVATE\s*MENU|ACTIVATE\s*POPUP|ACTIVATE\s*SCREEN|'
349
+ r'ACTIVATE\s*WINDOW|APPEND|APPEND\s*FROM|APPEND\s*FROM\s*ARRAY|'
350
+ r'APPEND\s*GENERAL|APPEND\s*MEMO|ASSIST|AVERAGE|BLANK|BROWSE|'
351
+ r'BUILD\s*APP|BUILD\s*EXE|BUILD\s*PROJECT|CALCULATE|CALL|'
352
+ r'CANCEL|CHANGE|CLEAR|CLOSE|CLOSE\s*MEMO|COMPILE|CONTINUE|'
353
+ r'COPY\s*FILE|COPY\s*INDEXES|COPY\s*MEMO|COPY\s*STRUCTURE|'
354
+ r'COPY\s*STRUCTURE\s*EXTENDED|COPY\s*TAG|COPY\s*TO|'
355
+ r'COPY\s*TO\s*ARRAY|COUNT|CREATE|CREATE\s*COLOR\s*SET|'
356
+ r'CREATE\s*CURSOR|CREATE\s*FROM|CREATE\s*LABEL|CREATE\s*MENU|'
357
+ r'CREATE\s*PROJECT|CREATE\s*QUERY|CREATE\s*REPORT|'
358
+ r'CREATE\s*SCREEN|CREATE\s*TABLE|CREATE\s*VIEW|DDE|'
359
+ r'DEACTIVATE\s*MENU|DEACTIVATE\s*POPUP|DEACTIVATE\s*WINDOW|'
360
+ r'DECLARE|DEFINE\s*BAR|DEFINE\s*BOX|DEFINE\s*MENU|'
361
+ r'DEFINE\s*PAD|DEFINE\s*POPUP|DEFINE\s*WINDOW|DELETE|'
362
+ r'DELETE\s*FILE|DELETE\s*TAG|DIMENSION|DIRECTORY|DISPLAY|'
363
+ r'DISPLAY\s*FILES|DISPLAY\s*MEMORY|DISPLAY\s*STATUS|'
364
+ r'DISPLAY\s*STRUCTURE|DO|EDIT|EJECT|EJECT\s*PAGE|ERASE|'
365
+ r'EXIT|EXPORT|EXTERNAL|FILER|FIND|FLUSH|FUNCTION|GATHER|'
366
+ r'GETEXPR|GO|GOTO|HELP|HIDE\s*MENU|HIDE\s*POPUP|'
367
+ r'HIDE\s*WINDOW|IMPORT|INDEX|INPUT|INSERT|JOIN|KEYBOARD|'
368
+ r'LABEL|LIST|LOAD|LOCATE|LOOP|MENU|MENU\s*TO|MODIFY\s*COMMAND|'
369
+ r'MODIFY\s*FILE|MODIFY\s*GENERAL|MODIFY\s*LABEL|MODIFY\s*MEMO|'
370
+ r'MODIFY\s*MENU|MODIFY\s*PROJECT|MODIFY\s*QUERY|'
371
+ r'MODIFY\s*REPORT|MODIFY\s*SCREEN|MODIFY\s*STRUCTURE|'
372
+ r'MODIFY\s*WINDOW|MOVE\s*POPUP|MOVE\s*WINDOW|NOTE|'
373
+ r'ON\s*APLABOUT|ON\s*BAR|ON\s*ERROR|ON\s*ESCAPE|'
374
+ r'ON\s*EXIT\s*BAR|ON\s*EXIT\s*MENU|ON\s*EXIT\s*PAD|'
375
+ r'ON\s*EXIT\s*POPUP|ON\s*KEY|ON\s*KEY\s*=|ON\s*KEY\s*LABEL|'
376
+ r'ON\s*MACHELP|ON\s*PAD|ON\s*PAGE|ON\s*READERROR|'
377
+ r'ON\s*SELECTION\s*BAR|ON\s*SELECTION\s*MENU|'
378
+ r'ON\s*SELECTION\s*PAD|ON\s*SELECTION\s*POPUP|ON\s*SHUTDOWN|'
379
+ r'PACK|PARAMETERS|PLAY\s*MACRO|POP\s*KEY|POP\s*MENU|'
380
+ r'POP\s*POPUP|PRIVATE|PROCEDURE|PUBLIC|PUSH\s*KEY|'
381
+ r'PUSH\s*MENU|PUSH\s*POPUP|QUIT|READ|READ\s*MENU|RECALL|'
382
+ r'REINDEX|RELEASE|RELEASE\s*MODULE|RENAME|REPLACE|'
383
+ r'REPLACE\s*FROM\s*ARRAY|REPORT|RESTORE\s*FROM|'
384
+ r'RESTORE\s*MACROS|RESTORE\s*SCREEN|RESTORE\s*WINDOW|'
385
+ r'RESUME|RETRY|RETURN|RUN|RUN\s*\/N"|RUNSCRIPT|'
386
+ r'SAVE\s*MACROS|SAVE\s*SCREEN|SAVE\s*TO|SAVE\s*WINDOWS|'
387
+ r'SCATTER|SCROLL|SEEK|SELECT|SET|SET\s*ALTERNATE|'
388
+ r'SET\s*ANSI|SET\s*APLABOUT|SET\s*AUTOSAVE|SET\s*BELL|'
389
+ r'SET\s*BLINK|SET\s*BLOCKSIZE|SET\s*BORDER|SET\s*BRSTATUS|'
390
+ r'SET\s*CARRY|SET\s*CENTURY|SET\s*CLEAR|SET\s*CLOCK|'
391
+ r'SET\s*COLLATE|SET\s*COLOR\s*OF|SET\s*COLOR\s*OF\s*SCHEME|'
392
+ r'SET\s*COLOR\s*SET|SET\s*COLOR\s*TO|SET\s*COMPATIBLE|'
393
+ r'SET\s*CONFIRM|SET\s*CONSOLE|SET\s*CURRENCY|SET\s*CURSOR|'
394
+ r'SET\s*DATE|SET\s*DEBUG|SET\s*DECIMALS|SET\s*DEFAULT|'
395
+ r'SET\s*DELETED|SET\s*DELIMITERS|SET\s*DEVELOPMENT|'
396
+ r'SET\s*DEVICE|SET\s*DISPLAY|SET\s*DOHISTORY|SET\s*ECHO|'
397
+ r'SET\s*ESCAPE|SET\s*EXACT|SET\s*EXCLUSIVE|SET\s*FIELDS|'
398
+ r'SET\s*FILTER|SET\s*FIXED|SET\s*FORMAT|SET\s*FULLPATH|'
399
+ r'SET\s*FUNCTION|SET\s*HEADINGS|SET\s*HELP|SET\s*HELPFILTER|'
400
+ r'SET\s*HOURS|SET\s*INDEX|SET\s*INTENSITY|SET\s*KEY|'
401
+ r'SET\s*KEYCOMP|SET\s*LIBRARY|SET\s*LOCK|SET\s*LOGERRORS|'
402
+ r'SET\s*MACDESKTOP|SET\s*MACHELP|SET\s*MACKEY|SET\s*MARGIN|'
403
+ r'SET\s*MARK\s*OF|SET\s*MARK\s*TO|SET\s*MEMOWIDTH|'
404
+ r'SET\s*MESSAGE|SET\s*MOUSE|SET\s*MULTILOCKS|SET\s*NEAR|'
405
+ r'SET\s*NOCPTRANS|SET\s*NOTIFY|SET\s*ODOMETER|SET\s*OPTIMIZE|'
406
+ r'SET\s*ORDER|SET\s*PALETTE|SET\s*PATH|SET\s*PDSETUP|'
407
+ r'SET\s*POINT|SET\s*PRINTER|SET\s*PROCEDURE|SET\s*READBORDER|'
408
+ r'SET\s*REFRESH|SET\s*RELATION|SET\s*RELATION\s*OFF|'
409
+ r'SET\s*REPROCESS|SET\s*RESOURCE|SET\s*SAFETY|SET\s*SCOREBOARD|'
410
+ r'SET\s*SEPARATOR|SET\s*SHADOWS|SET\s*SKIP|SET\s*SKIP\s*OF|'
411
+ r'SET\s*SPACE|SET\s*STATUS|SET\s*STATUS\s*BAR|SET\s*STEP|'
412
+ r'SET\s*STICKY|SET\s*SYSMENU|SET\s*TALK|SET\s*TEXTMERGE|'
413
+ r'SET\s*TEXTMERGE\s*DELIMITERS|SET\s*TOPIC|SET\s*TRBETWEEN|'
414
+ r'SET\s*TYPEAHEAD|SET\s*UDFPARMS|SET\s*UNIQUE|SET\s*VIEW|'
415
+ r'SET\s*VOLUME|SET\s*WINDOW\s*OF\s*MEMO|SET\s*XCMDFILE|'
416
+ r'SHOW\s*GET|SHOW\s*GETS|SHOW\s*MENU|SHOW\s*OBJECT|'
417
+ r'SHOW\s*POPUP|SHOW\s*WINDOW|SIZE\s*POPUP|SKIP|SORT|'
418
+ r'STORE|SUM|SUSPEND|TOTAL|TYPE|UNLOCK|UPDATE|USE|WAIT|'
419
+ r'ZAP|ZOOM\s*WINDOW|DO\s*CASE|CASE|OTHERWISE|ENDCASE|'
420
+ r'DO\s*WHILE|ENDDO|FOR|ENDFOR|NEXT|IF|ELSE|ENDIF|PRINTJOB|'
421
+ r'ENDPRINTJOB|SCAN|ENDSCAN|TEXT|ENDTEXT|=)',
422
+ Keyword.Reserved, '#pop'),
423
+ (r'#\s*(IF|ELIF|ELSE|ENDIF|DEFINE|IFDEF|IFNDEF|INCLUDE)',
424
+ Comment.Preproc, '#pop'),
425
+ (r'(m\.)?[a-z_]\w*', Name.Variable, '#pop'),
426
+ (r'.', Text, '#pop'),
427
+ ],
428
+ }