1
+
2
+ <lexer >
3
+ <config >
4
+ <name >MoonScript</name >
5
+ <alias >moonscript</alias >
6
+ <alias >moon</alias >
7
+ <filename >*.moon</filename >
8
+ <mime_type >text/x-moonscript</mime_type >
9
+ <mime_type >application/x-moonscript</mime_type >
10
+ </config >
11
+ <rules >
12
+ <state name =" root" >
13
+ <rule pattern =" #!(.*?)$" ><token type =" CommentPreproc" /></rule >
14
+ <rule ><push state =" base" /></rule >
15
+ </state >
16
+ <state name =" base" >
17
+ <rule pattern =" --.*$" ><token type =" CommentSingle" /></rule >
18
+ <rule pattern =" (?i)(\d*\.\d+|\d+\.\d*)(e[+-]?\d+)?" ><token type =" LiteralNumberFloat" /></rule >
19
+ <rule pattern =" (?i)\d+e[+-]?\d+" ><token type =" LiteralNumberFloat" /></rule >
20
+ <rule pattern =" (?i)0x[0-9a-f]*" ><token type =" LiteralNumberHex" /></rule >
21
+ <rule pattern =" \d+" ><token type =" LiteralNumberInteger" /></rule >
22
+ <rule pattern =" \n" ><token type =" TextWhitespace" /></rule >
23
+ <rule pattern =" [^\S\n]+" ><token type =" Text" /></rule >
24
+ <rule pattern =" (?s)\[(=*)\[.*?\]\1\]" ><token type =" LiteralString" /></rule >
25
+ <rule pattern =" (-> |=> )" ><token type =" NameFunction" /></rule >
26
+ <rule pattern =" :[a-zA-Z_]\w*" ><token type =" NameVariable" /></rule >
27
+ <rule pattern =" (==|!=|~=|< =|> =|\.\.\.|\.\.|[=+\-*/%^<> #!.\\:])" ><token type =" Operator" /></rule >
28
+ <rule pattern =" [;,]" ><token type =" Punctuation" /></rule >
29
+ <rule pattern =" [\[\]{}()]" ><token type =" KeywordType" /></rule >
30
+ <rule pattern =" [a-zA-Z_]\w*:" ><token type =" NameVariable" /></rule >
31
+ <rule pattern =" (class|extends|if|then|super|do|with|import|export|while|elseif|return|for|in|from|when|using|else|switch|break)\b" ><token type =" Keyword" /></rule >
32
+ <rule pattern =" (true|false|nil)\b" ><token type =" KeywordConstant" /></rule >
33
+ <rule pattern =" (and|or|not)\b" ><token type =" OperatorWord" /></rule >
34
+ <rule pattern =" (self)\b" ><token type =" NameBuiltinPseudo" /></rule >
35
+ <rule pattern =" @@?([a-zA-Z_]\w*)?" ><token type =" NameVariableClass" /></rule >
36
+ <rule pattern =" [A-Z]\w*" ><token type =" NameClass" /></rule >
37
+ <rule pattern="(_G|_VERSION|assert|collectgarbage|dofile|error|getmetatable|ipairs|load|loadfile|next|pairs|pcall|print|rawequal|rawget|rawlen|rawset|select|setmetatable|tonumber|tostring|type|warn|xpcall|bit32\.arshift|bit32\.band|bit32\.bnot|bit32\.bor|bit32\.btest|bit32\.bxor|bit32\.extract|bit32\.lrotate|bit32\.lshift|bit32\.replace|bit32\.rrotate|bit32\.rshift|coroutine\.close|coroutine\.create|coroutine\.isyieldable|coroutine\.resume|coroutine\.running|coroutine\.status|coroutine\.wrap|coroutine\.yield|debug\.debug|debug\.gethook|debug\.getinfo|debug\.getlocal|debug\.getmetatable|debug\.getregistry|debug\.getupvalue|debug\.getuservalue|debug\.sethook|debug\.setlocal|debug\.setmetatable|debug\.setupvalue|debug\.setuservalue|debug\.traceback|debug\.upvalueid|debug\.upvaluejoin|io\.close|io\.flush|io\.input|io\.lines|io\.open|io\.output|io\.popen|io\.read|io\.stderr|io\.stdin|io\.stdout|io\.tmpfile|io\.type|io\.write|math\.abs|math\.acos|math\.asin|math\.atan|math\.atan2|math\.ceil|math\.cos|math\.cosh|math\.deg|math\.exp|math\.floor|math\.fmod|math\.frexp|math\.huge|math\.ldexp|math\.log|math\.max|math\.maxinteger|math\.min|math\.mininteger|math\.modf|math\.pi|math\.pow|math\.rad|math\.random|math\.randomseed|math\.sin|math\.sinh|math\.sqrt|math\.tan|math\.tanh|math\.tointeger|math\.type|math\.ult|package\.config|package\.cpath|package\.loaded|package\.loadlib|package\.path|package\.preload|package\.searchers|package\.searchpath|require|os\.clock|os\.date|os\.difftime|os\.execute|os\.exit|os\.getenv|os\.remove|os\.rename|os\.setlocale|os\.time|os\.tmpname|string\.byte|string\.char|string\.dump|string\.find|string\.format|string\.gmatch|string\.gsub|string\.len|string\.lower|string\.match|string\.pack|string\.packsize|string\.rep|string\.reverse|string\.sub|string\.unpack|string\.upper|table\.concat|table\.insert|table\.move|table\.pack|table\.remove|table\.sort|table\.unpack|utf8\.char|utf8\.charpattern|utf8\.codepoint|utf8\.codes|utf8\.len|utf8\.offset)\b"><token type="NameBuiltin"/></rule>
38
+ <rule pattern =" [A-Za-z_]\w*" ><token type =" Name" /></rule >
39
+ <rule pattern =" ' " ><token type =" LiteralStringSingle" /><combined state =" stringescape" state =" sqs" /></rule >
40
+ <rule pattern =" " " ><token type =" LiteralStringDouble" /><combined state =" stringescape" state =" dqs" /></rule >
41
+ </state >
42
+ <state name =" stringescape" >
43
+ <rule pattern =" \\([abfnrtv\\" \' ]|\d{1,3})" ><token type =" LiteralStringEscape" /></rule >
44
+ </state >
45
+ <state name =" sqs" >
46
+ <rule pattern =" ' " ><token type =" LiteralStringSingle" /><pop depth =" 1" /></rule >
47
+ <rule pattern =" [^\\' ]+" ><token type =" LiteralString" /></rule >
48
+ </state >
49
+ <state name =" dqs" >
50
+ <rule pattern =" " " ><token type =" LiteralStringDouble" /><pop depth =" 1" /></rule >
51
+ <rule pattern =" [^\\" ]+" ><token type =" LiteralString" /></rule >
52
+ </state >
53
+ <state name =" ws" >
54
+ <rule pattern =" (?:--\[(?< level> =*)\[[\w\W]*?\](\k< level> )\])" ><token type =" CommentMultiline" /></rule >
55
+ <rule pattern =" (?:--.*$)" ><token type =" CommentSingle" /></rule >
56
+ <rule pattern =" (?:\s+)" ><token type =" TextWhitespace" /></rule >
57
+ </state >
58
+ <state name =" varname" >
59
+ <rule ><include state =" ws" /></rule >
60
+ <rule pattern =" \.\." ><token type =" Operator" /><pop depth =" 1" /></rule >
61
+ <rule pattern =" [.:]" ><token type =" Punctuation" /></rule >
62
+ <rule pattern =" (?:[^\W\d]\w*)(?=(?:(?:--\[(?< level> =*)\[[\w\W]*?\](\k< level> )\])|(?:--.*$)|(?:\s+))*[.:])" ><token type =" NameProperty" /></rule >
63
+ <rule pattern =" (?:[^\W\d]\w*)(?=(?:(?:--\[(?< level> =*)\[[\w\W]*?\](\k< level> )\])|(?:--.*$)|(?:\s+))*\()" ><token type =" NameFunction" /><pop depth =" 1" /></rule >
64
+ <rule pattern =" (?:[^\W\d]\w*)" ><token type =" NameProperty" /><pop depth =" 1" /></rule >
65
+ </state >
66
+ <state name =" funcname" >
67
+ <rule ><include state =" ws" /></rule >
68
+ <rule pattern =" [.:]" ><token type =" Punctuation" /></rule >
69
+ <rule pattern =" (?:[^\W\d]\w*)(?=(?:(?:--\[(?< level> =*)\[[\w\W]*?\](\k< level> )\])|(?:--.*$)|(?:\s+))*[.:])" ><token type =" NameClass" /></rule >
70
+ <rule pattern =" (?:[^\W\d]\w*)" ><token type =" NameFunction" /><pop depth =" 1" /></rule >
71
+ <rule pattern =" \(" ><token type =" Punctuation" /><pop depth =" 1" /></rule >
72
+ </state >
73
+ <state name =" goto" >
74
+ <rule ><include state =" ws" /></rule >
75
+ <rule pattern =" (?:[^\W\d]\w*)" ><token type =" NameLabel" /><pop depth =" 1" /></rule >
76
+ </state >
77
+ <state name =" label" >
78
+ <rule ><include state =" ws" /></rule >
79
+ <rule pattern =" ::" ><token type =" Punctuation" /><pop depth =" 1" /></rule >
80
+ <rule pattern =" (?:[^\W\d]\w*)" ><token type =" NameLabel" /></rule >
81
+ </state >
82
+ </rules >
83
+ </lexer >
0 commit comments