...
1<lexer>
2 <config>
3 <name>ChaiScript</name>
4 <alias>chai</alias>
5 <alias>chaiscript</alias>
6 <filename>*.chai</filename>
7 <mime_type>text/x-chaiscript</mime_type>
8 <mime_type>application/x-chaiscript</mime_type>
9 <dot_all>true</dot_all>
10 </config>
11 <rules>
12 <state name="dqstring">
13 <rule pattern="\$\{[^"}]+?\}">
14 <token type="LiteralStringInterpol"/>
15 </rule>
16 <rule pattern="\$">
17 <token type="LiteralStringDouble"/>
18 </rule>
19 <rule pattern="\\\\">
20 <token type="LiteralStringDouble"/>
21 </rule>
22 <rule pattern="\\"">
23 <token type="LiteralStringDouble"/>
24 </rule>
25 <rule pattern="[^\\"$]+">
26 <token type="LiteralStringDouble"/>
27 </rule>
28 <rule pattern=""">
29 <token type="LiteralStringDouble"/>
30 <pop depth="1"/>
31 </rule>
32 </state>
33 <state name="commentsandwhitespace">
34 <rule pattern="\s+">
35 <token type="Text"/>
36 </rule>
37 <rule pattern="//.*?\n">
38 <token type="CommentSingle"/>
39 </rule>
40 <rule pattern="/\*.*?\*/">
41 <token type="CommentMultiline"/>
42 </rule>
43 <rule pattern="^\#.*?\n">
44 <token type="CommentSingle"/>
45 </rule>
46 </state>
47 <state name="slashstartsregex">
48 <rule>
49 <include state="commentsandwhitespace"/>
50 </rule>
51 <rule pattern="/(\\.|[^[/\\\n]|\[(\\.|[^\]\\\n])*])+/([gim]+\b|\B)">
52 <token type="LiteralStringRegex"/>
53 <pop depth="1"/>
54 </rule>
55 <rule pattern="(?=/)">
56 <token type="Text"/>
57 <push state="#pop" state="badregex"/>
58 </rule>
59 <rule>
60 <pop depth="1"/>
61 </rule>
62 </state>
63 <state name="badregex">
64 <rule pattern="\n">
65 <token type="Text"/>
66 <pop depth="1"/>
67 </rule>
68 </state>
69 <state name="root">
70 <rule>
71 <include state="commentsandwhitespace"/>
72 </rule>
73 <rule pattern="\n">
74 <token type="Text"/>
75 </rule>
76 <rule pattern="[^\S\n]+">
77 <token type="Text"/>
78 </rule>
79 <rule pattern="\+\+|--|~|&&|\?|:|\|\||\\(?=\n)|\.\.(<<|>>>?|==?|!=?|[-<>+*%&|^/])=?">
80 <token type="Operator"/>
81 <push state="slashstartsregex"/>
82 </rule>
83 <rule pattern="[{(\[;,]">
84 <token type="Punctuation"/>
85 <push state="slashstartsregex"/>
86 </rule>
87 <rule pattern="[})\].]">
88 <token type="Punctuation"/>
89 </rule>
90 <rule pattern="[=+\-*/]">
91 <token type="Operator"/>
92 </rule>
93 <rule pattern="(for|in|while|do|break|return|continue|if|else|throw|try|catch)\b">
94 <token type="Keyword"/>
95 <push state="slashstartsregex"/>
96 </rule>
97 <rule pattern="(var)\b">
98 <token type="KeywordDeclaration"/>
99 <push state="slashstartsregex"/>
100 </rule>
101 <rule pattern="(attr|def|fun)\b">
102 <token type="KeywordReserved"/>
103 </rule>
104 <rule pattern="(true|false)\b">
105 <token type="KeywordConstant"/>
106 </rule>
107 <rule pattern="(eval|throw)\b">
108 <token type="NameBuiltin"/>
109 </rule>
110 <rule pattern="`\S+`">
111 <token type="NameBuiltin"/>
112 </rule>
113 <rule pattern="[$a-zA-Z_]\w*">
114 <token type="NameOther"/>
115 </rule>
116 <rule pattern="[0-9][0-9]*\.[0-9]+([eE][0-9]+)?[fd]?">
117 <token type="LiteralNumberFloat"/>
118 </rule>
119 <rule pattern="0x[0-9a-fA-F]+">
120 <token type="LiteralNumberHex"/>
121 </rule>
122 <rule pattern="[0-9]+">
123 <token type="LiteralNumberInteger"/>
124 </rule>
125 <rule pattern=""">
126 <token type="LiteralStringDouble"/>
127 <push state="dqstring"/>
128 </rule>
129 <rule pattern="'(\\\\|\\'|[^'])*'">
130 <token type="LiteralStringSingle"/>
131 </rule>
132 </state>
133 </rules>
134</lexer>
View as plain text