1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE MODE SYSTEM "xmode.dtd"><!-- -->
6 This mode file describes the ANTLR 4 syntax definition language as
7 described in the book "The Definitive ANTLR 4 Reference" by Terrence Parr.
11 <PROPERTY NAME="commentStart" VALUE="/*" />
12 <PROPERTY NAME="commentEnd" VALUE="*/" />
13 <PROPERTY NAME="lineComment" VALUE="//" />
14 <PROPERTY NAME="wordBreakChars" VALUE="" />
16 <RULES IGNORE_CASE="FALSE"
17 HIGHLIGHT_DIGITS="TRUE"
18 DIGIT_RE="(0[lL]?|[1-9]\d{0,9}(\d{0,9}[lL])?|0[xX]\p{XDigit}{1,8}(\p{XDigit}{0,8}[lL])?|0[0-7]{1,11}([0-7]{0,11}[lL])?|([0-9]+\.[0-9]*|\.[0-9]+)([eE][+-]?[0-9]+)?[fFdD]?|[0-9]+([eE][+-]?[0-9]+[fFdD]?|([eE][+-]?[0-9]+)?[fFdD]))">
20 <!-- Antlr comments are the same as java comments -->
21 <SPAN TYPE="COMMENT2" DELEGATE="java::JAVADOC">
25 <SPAN TYPE="COMMENT1">
29 <EOL_SPAN TYPE="COMMENT1">//</EOL_SPAN>
31 <!-- string literal -->
32 <SPAN TYPE="LITERAL1" ESCAPE="\" NO_LINE_BREAK="TRUE">
37 <!-- rule 'operators' -->
38 <SEQ TYPE="OPERATOR">|</SEQ>
39 <SEQ TYPE="OPERATOR">:</SEQ>
40 <SEQ TYPE="OPERATOR">}</SEQ>
41 <SEQ TYPE="OPERATOR">{</SEQ>
44 <MARK_FOLLOWING TYPE="KEYWORD4">@</MARK_FOLLOWING>
47 <SEQ_REGEXP HASH_CHARS="ABCDEFGHIJKLMNOPQRSTUVWXYZ" AT_LINE_START="TRUE"
48 TYPE="KEYWORD2">[A-Z][a-zA-Z_]+</SEQ_REGEXP>
51 <SEQ_REGEXP HASH_CHARS="abcdefghijklmnopqrstuvwxyz" AT_LINE_START="TRUE"
52 TYPE="KEYWORD2">[a-z][a-zA-Z_]+</SEQ_REGEXP>
56 <KEYWORD1>catch</KEYWORD1>
57 <KEYWORD1>finally</KEYWORD1>
58 <KEYWORD1>fragment</KEYWORD1>
59 <KEYWORD1>grammar</KEYWORD1>
60 <KEYWORD1>import</KEYWORD1>
61 <KEYWORD1>lexer</KEYWORD1>
62 <KEYWORD1>locals</KEYWORD1>
63 <KEYWORD1>mode</KEYWORD1>
64 <KEYWORD1>options</KEYWORD1>
65 <KEYWORD1>parser</KEYWORD1>
66 <KEYWORD1>private</KEYWORD1>
67 <KEYWORD1>protected</KEYWORD1>
68 <KEYWORD1>public</KEYWORD1>
69 <KEYWORD1>returns</KEYWORD1>
70 <KEYWORD1>throws</KEYWORD1>
71 <KEYWORD4>tokens</KEYWORD4>
73 <!-- the following are not Antlr keywords, but since Antlr actions
74 include java keywords, these are useful. These are copied from
75 the java mode file. -->
76 <KEYWORD1>assert</KEYWORD1>
77 <KEYWORD1>break</KEYWORD1>
78 <KEYWORD1>case</KEYWORD1>
79 <KEYWORD1>continue</KEYWORD1>
80 <KEYWORD1>default</KEYWORD1>
81 <KEYWORD1>do</KEYWORD1>
82 <KEYWORD1>else</KEYWORD1>
83 <KEYWORD1>for</KEYWORD1>
84 <KEYWORD1>if</KEYWORD1>
85 <KEYWORD1>instanceof</KEYWORD1>
86 <KEYWORD1>new</KEYWORD1>
87 <KEYWORD1>return</KEYWORD1>
88 <KEYWORD1>strictfp</KEYWORD1>
89 <KEYWORD1>switch</KEYWORD1>
90 <KEYWORD1>throw</KEYWORD1>
91 <KEYWORD1>try</KEYWORD1>
92 <KEYWORD1>while</KEYWORD1>
94 <KEYWORD2>abstract</KEYWORD2>
95 <KEYWORD2>enum</KEYWORD2>
96 <KEYWORD2>extends</KEYWORD2>
97 <KEYWORD2>final</KEYWORD2>
98 <KEYWORD2>implements</KEYWORD2>
99 <KEYWORD2>import</KEYWORD2>
100 <KEYWORD2>native</KEYWORD2>
101 <KEYWORD2>package</KEYWORD2>
102 <KEYWORD2>static</KEYWORD2>
103 <KEYWORD2>synchronized</KEYWORD2>
104 <KEYWORD2>throws</KEYWORD2>
105 <KEYWORD2>transient</KEYWORD2>
106 <KEYWORD2>volatile</KEYWORD2>
107 <KEYWORD3>void</KEYWORD3>
109 <KEYWORD3>boolean</KEYWORD3>
110 <KEYWORD3>byte</KEYWORD3>
111 <KEYWORD3>char</KEYWORD3>
112 <KEYWORD3>class</KEYWORD3>
113 <KEYWORD3>double</KEYWORD3>
114 <KEYWORD3>float</KEYWORD3>
115 <KEYWORD3>int</KEYWORD3>
116 <KEYWORD3>interface</KEYWORD3>
117 <KEYWORD3>long</KEYWORD3>
118 <KEYWORD3>short</KEYWORD3>
120 <LITERAL2>false</LITERAL2>
121 <LITERAL2>null</LITERAL2>
122 <LITERAL2>super</LITERAL2>
123 <LITERAL2>this</LITERAL2>
124 <LITERAL2>true</LITERAL2>
126 <INVALID>goto</INVALID>
127 <INVALID>const</INVALID>