1<lexer>
2 <config>
3 <name>Chapel</name>
4 <alias>chapel</alias>
5 <alias>chpl</alias>
6 <filename>*.chpl</filename>
7 </config>
8 <rules>
9 <state name="procname">
10 <rule pattern="([a-zA-Z_][.\w$]*|\~[a-zA-Z_][.\w$]*|[+*/!~%<>=&^|\-:]{1,2})">
11 <token type="NameFunction"/>
12 <pop depth="1"/>
13 </rule>
14 <rule pattern="\(">
15 <token type="Punctuation"/>
16 <push state="receivertype"/>
17 </rule>
18 <rule pattern="\)+\.">
19 <token type="Punctuation"/>
20 </rule>
21 </state>
22 <state name="receivertype">
23 <rule pattern="(unmanaged|borrowed|atomic|single|shared|owned|sync)\b">
24 <token type="Keyword"/>
25 </rule>
26 <rule pattern="(complex|nothing|opaque|string|locale|bytes|range|imag|real|bool|uint|void|int)\b">
27 <token type="KeywordType"/>
28 </rule>
29 <rule pattern="[^()]*">
30 <token type="NameOther"/>
31 <pop depth="1"/>
32 </rule>
33 </state>
34 <state name="root">
35 <rule pattern="\n">
36 <token type="TextWhitespace"/>
37 </rule>
38 <rule pattern="\s+">
39 <token type="TextWhitespace"/>
40 </rule>
41 <rule pattern="\\\n">
42 <token type="Text"/>
43 </rule>
44 <rule pattern="//(.*?)\n">
45 <token type="CommentSingle"/>
46 </rule>
47 <rule pattern="/(\\\n)?[*](.|\n)*?[*](\\\n)?/">
48 <token type="CommentMultiline"/>
49 </rule>
50 <rule pattern="(config|const|inout|param|type|out|ref|var|in)\b">
51 <token type="KeywordDeclaration"/>
52 </rule>
53 <rule pattern="(false|none|true|nil)\b">
54 <token type="KeywordConstant"/>
55 </rule>
56 <rule pattern="(complex|nothing|opaque|string|locale|bytes|range|imag|real|bool|uint|void|int)\b">
57 <token type="KeywordType"/>
58 </rule>
59 <rule pattern="(implements|forwarding|prototype|otherwise|subdomain|primitive|unmanaged|override|borrowed|lifetime|coforall|continue|private|require|dmapped|cobegin|foreach|lambda|sparse|shared|domain|pragma|reduce|except|export|extern|throws|forall|delete|return|noinit|single|import|select|public|inline|serial|atomic|defer|break|local|index|throw|catch|label|begin|where|while|align|yield|owned|only|this|sync|with|scan|else|enum|init|when|then|let|for|try|use|new|zip|if|by|as|on|do)\b">
60 <token type="Keyword"/>
61 </rule>
62 <rule pattern="(iter)(\s+)">
63 <bygroups>
64 <token type="Keyword"/>
65 <token type="TextWhitespace"/>
66 </bygroups>
67 <push state="procname"/>
68 </rule>
69 <rule pattern="(proc)(\s+)">
70 <bygroups>
71 <token type="Keyword"/>
72 <token type="TextWhitespace"/>
73 </bygroups>
74 <push state="procname"/>
75 </rule>
76 <rule pattern="(operator)(\s+)">
77 <bygroups>
78 <token type="Keyword"/>
79 <token type="TextWhitespace"/>
80 </bygroups>
81 <push state="procname"/>
82 </rule>
83 <rule pattern="(class|interface|module|record|union)(\s+)">
84 <bygroups>
85 <token type="Keyword"/>
86 <token type="TextWhitespace"/>
87 </bygroups>
88 <push state="classname"/>
89 </rule>
90 <rule pattern="\d+i">
91 <token type="LiteralNumber"/>
92 </rule>
93 <rule pattern="\d+\.\d*([Ee][-+]\d+)?i">
94 <token type="LiteralNumber"/>
95 </rule>
96 <rule pattern="\.\d+([Ee][-+]\d+)?i">
97 <token type="LiteralNumber"/>
98 </rule>
99 <rule pattern="\d+[Ee][-+]\d+i">
100 <token type="LiteralNumber"/>
101 </rule>
102 <rule pattern="(\d*\.\d+)([eE][+-]?[0-9]+)?i?">
103 <token type="LiteralNumberFloat"/>
104 </rule>
105 <rule pattern="\d+[eE][+-]?[0-9]+i?">
106 <token type="LiteralNumberFloat"/>
107 </rule>
108 <rule pattern="0[bB][01]+">
109 <token type="LiteralNumberBin"/>
110 </rule>
111 <rule pattern="0[xX][0-9a-fA-F]+">
112 <token type="LiteralNumberHex"/>
113 </rule>
114 <rule pattern="0[oO][0-7]+">
115 <token type="LiteralNumberOct"/>
116 </rule>
117 <rule pattern="[0-9]+">
118 <token type="LiteralNumberInteger"/>
119 </rule>
120 <rule pattern=""(\\\\|\\"|[^"])*"">
121 <token type="LiteralString"/>
122 </rule>
123 <rule pattern="'(\\\\|\\'|[^'])*'">
124 <token type="LiteralString"/>
125 </rule>
126 <rule pattern="(=|\+=|-=|\*=|/=|\*\*=|%=|&=|\|=|\^=|&&=|\|\|=|<<=|>>=|<=>|<~>|\.\.|by|#|\.\.\.|&&|\|\||!|&|\||\^|~|<<|>>|==|!=|<=|>=|<|>|[+\-*/%]|\*\*)">
127 <token type="Operator"/>
128 </rule>
129 <rule pattern="[:;,.?()\[\]{}]">
130 <token type="Punctuation"/>
131 </rule>
132 <rule pattern="[a-zA-Z_][\w$]*">
133 <token type="NameOther"/>
134 </rule>
135 </state>
136 <state name="classname">
137 <rule pattern="[a-zA-Z_][\w$]*">
138 <token type="NameClass"/>
139 <pop depth="1"/>
140 </rule>
141 </state>
142 </rules>
143</lexer>