]> gitweb.ps.run Git - toc/blob - antlr4-cpp-runtime-4.9.2-source/runtime/src/tree/xpath/XPathLexer.g4
add antlr source code and ReadMe
[toc] / antlr4-cpp-runtime-4.9.2-source / runtime / src / tree / xpath / XPathLexer.g4
1 lexer grammar XPathLexer;
2
3 tokens { TOKEN_REF, RULE_REF }
4
5 /*
6 path : separator? word (separator word)* EOF ;
7
8 separator
9         :       '/'  '!'
10         |       '//' '!'
11         |       '/'
12         |       '//'
13         ;
14
15 word:   TOKEN_REF
16         |       RULE_REF
17         |       STRING
18         |       '*'
19         ;
20 */
21
22 ANYWHERE : '//' ;
23 ROOT     : '/' ;
24 WILDCARD : '*' ;
25 BANG     : '!' ;
26
27 ID                      :       NameStartChar NameChar*
28                                 {
29                                 if (isupper(getText()[0]))
30                                   setType(TOKEN_REF);
31                                 else
32                                   setType(RULE_REF);
33                                 }
34                         ;
35
36 fragment
37 NameChar    :   NameStartChar
38             |   '0'..'9'
39             |   '_'
40             |   '\u00B7'
41             |   '\u0300'..'\u036F'
42             |   '\u203F'..'\u2040'
43             ;
44
45 fragment
46 NameStartChar
47             :   'A'..'Z' | 'a'..'z'
48             |   '\u00C0'..'\u00D6'
49             |   '\u00D8'..'\u00F6'
50             |   '\u00F8'..'\u02FF'
51             |   '\u0370'..'\u037D'
52             |   '\u037F'..'\u1FFF'
53             |   '\u200C'..'\u200D'
54             |   '\u2070'..'\u218F'
55             |   '\u2C00'..'\u2FEF'
56             |   '\u3001'..'\uD7FF'
57             |   '\uF900'..'\uFDCF'
58             |   '\uFDF0'..'\uFFFF' // implicitly includes ['\u10000-'\uEFFFF]
59             ;
60
61 STRING : '\'' .*? '\'';
62
63 //WS : [ \t\r\n]+ -> skip ;
64