66
|
1 <lexer>
|
|
2 <config>
|
|
3 <name>ReasonML</name>
|
|
4 <alias>reason</alias>
|
|
5 <alias>reasonml</alias>
|
|
6 <filename>*.re</filename>
|
|
7 <filename>*.rei</filename>
|
|
8 <mime_type>text/x-reasonml</mime_type>
|
|
9 </config>
|
|
10 <rules>
|
|
11 <state name="escape-sequence">
|
|
12 <rule pattern="\\[\\"\'ntbr]">
|
|
13 <token type="LiteralStringEscape"/>
|
|
14 </rule>
|
|
15 <rule pattern="\\[0-9]{3}">
|
|
16 <token type="LiteralStringEscape"/>
|
|
17 </rule>
|
|
18 <rule pattern="\\x[0-9a-fA-F]{2}">
|
|
19 <token type="LiteralStringEscape"/>
|
|
20 </rule>
|
|
21 </state>
|
|
22 <state name="root">
|
|
23 <rule pattern="\s+">
|
|
24 <token type="Text"/>
|
|
25 </rule>
|
|
26 <rule pattern="false|true|\(\)|\[\]">
|
|
27 <token type="NameBuiltinPseudo"/>
|
|
28 </rule>
|
|
29 <rule pattern="\b([A-Z][\w\']*)(?=\s*\.)">
|
|
30 <token type="NameNamespace"/>
|
|
31 <push state="dotted"/>
|
|
32 </rule>
|
|
33 <rule pattern="\b([A-Z][\w\']*)">
|
|
34 <token type="NameClass"/>
|
|
35 </rule>
|
|
36 <rule pattern="//.*?\n">
|
|
37 <token type="CommentSingle"/>
|
|
38 </rule>
|
|
39 <rule pattern="\/\*(?![\/])">
|
|
40 <token type="CommentMultiline"/>
|
|
41 <push state="comment"/>
|
|
42 </rule>
|
|
43 <rule pattern="\b(as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|false|for|fun|esfun|function|functor|if|in|include|inherit|initializer|lazy|let|switch|module|pub|mutable|new|nonrec|object|of|open|pri|rec|sig|struct|then|to|true|try|type|val|virtual|when|while|with)\b">
|
|
44 <token type="Keyword"/>
|
|
45 </rule>
|
|
46 <rule pattern="(~|\}|\|]|\||\|\||\{<|\{|`|_|]|\[\||\[>|\[<|\[|\?\?|\?|>\}|>]|>|=|<-|<|;;|;|:>|:=|::|:|\.\.\.|\.\.|\.|=>|-\.|-|,|\+|\*|\)|\(|&&|&|#|!=)">
|
|
47 <token type="OperatorWord"/>
|
|
48 </rule>
|
|
49 <rule pattern="([=<>@^|&+\*/$%-]|[!?~])?[!$%&*+\./:<=>?@^|~-]">
|
|
50 <token type="Operator"/>
|
|
51 </rule>
|
|
52 <rule pattern="\b(and|asr|land|lor|lsl|lsr|lxor|mod|or)\b">
|
|
53 <token type="OperatorWord"/>
|
|
54 </rule>
|
|
55 <rule pattern="\b(unit|int|float|bool|string|char|list|array)\b">
|
|
56 <token type="KeywordType"/>
|
|
57 </rule>
|
|
58 <rule pattern="[^\W\d][\w']*">
|
|
59 <token type="Name"/>
|
|
60 </rule>
|
|
61 <rule pattern="-?\d[\d_]*(.[\d_]*)?([eE][+\-]?\d[\d_]*)">
|
|
62 <token type="LiteralNumberFloat"/>
|
|
63 </rule>
|
|
64 <rule pattern="0[xX][\da-fA-F][\da-fA-F_]*">
|
|
65 <token type="LiteralNumberHex"/>
|
|
66 </rule>
|
|
67 <rule pattern="0[oO][0-7][0-7_]*">
|
|
68 <token type="LiteralNumberOct"/>
|
|
69 </rule>
|
|
70 <rule pattern="0[bB][01][01_]*">
|
|
71 <token type="LiteralNumberBin"/>
|
|
72 </rule>
|
|
73 <rule pattern="\d[\d_]*">
|
|
74 <token type="LiteralNumberInteger"/>
|
|
75 </rule>
|
|
76 <rule pattern="'(?:(\\[\\\"'ntbr ])|(\\[0-9]{3})|(\\x[0-9a-fA-F]{2}))'">
|
|
77 <token type="LiteralStringChar"/>
|
|
78 </rule>
|
|
79 <rule pattern="'.'">
|
|
80 <token type="LiteralStringChar"/>
|
|
81 </rule>
|
|
82 <rule pattern="'">
|
|
83 <token type="Keyword"/>
|
|
84 </rule>
|
|
85 <rule pattern=""">
|
|
86 <token type="LiteralStringDouble"/>
|
|
87 <push state="string"/>
|
|
88 </rule>
|
|
89 <rule pattern="[~?][a-z][\w\']*:">
|
|
90 <token type="NameVariable"/>
|
|
91 </rule>
|
|
92 </state>
|
|
93 <state name="comment">
|
|
94 <rule pattern="[^\/*]+">
|
|
95 <token type="CommentMultiline"/>
|
|
96 </rule>
|
|
97 <rule pattern="\/\*">
|
|
98 <token type="CommentMultiline"/>
|
|
99 <push/>
|
|
100 </rule>
|
|
101 <rule pattern="\*\/">
|
|
102 <token type="CommentMultiline"/>
|
|
103 <pop depth="1"/>
|
|
104 </rule>
|
|
105 <rule pattern="[\*]">
|
|
106 <token type="CommentMultiline"/>
|
|
107 </rule>
|
|
108 </state>
|
|
109 <state name="string">
|
|
110 <rule pattern="[^\\"]+">
|
|
111 <token type="LiteralStringDouble"/>
|
|
112 </rule>
|
|
113 <rule>
|
|
114 <include state="escape-sequence"/>
|
|
115 </rule>
|
|
116 <rule pattern="\\\n">
|
|
117 <token type="LiteralStringDouble"/>
|
|
118 </rule>
|
|
119 <rule pattern=""">
|
|
120 <token type="LiteralStringDouble"/>
|
|
121 <pop depth="1"/>
|
|
122 </rule>
|
|
123 </state>
|
|
124 <state name="dotted">
|
|
125 <rule pattern="\s+">
|
|
126 <token type="Text"/>
|
|
127 </rule>
|
|
128 <rule pattern="\.">
|
|
129 <token type="Punctuation"/>
|
|
130 </rule>
|
|
131 <rule pattern="[A-Z][\w\']*(?=\s*\.)">
|
|
132 <token type="NameNamespace"/>
|
|
133 </rule>
|
|
134 <rule pattern="[A-Z][\w\']*">
|
|
135 <token type="NameClass"/>
|
|
136 <pop depth="1"/>
|
|
137 </rule>
|
|
138 <rule pattern="[a-z_][\w\']*">
|
|
139 <token type="Name"/>
|
|
140 <pop depth="1"/>
|
|
141 </rule>
|
|
142 <rule>
|
|
143 <pop depth="1"/>
|
|
144 </rule>
|
|
145 </state>
|
|
146 </rules>
|
|
147 </lexer> |