1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148
|
<Comment>/* This test file tests Kate's ANTLR highlighting </Comment><br/>
<Comment> compilable bt ANTLR although not directly:</Comment><br/>
<Comment> grammar can be alone file for both parser and lexer</Comment><br/>
<Comment> or two files</Comment><br/>
<Comment> This file is merged TestParser.g4 and TestLexer.g4</Comment><br/>
<Comment> this lines also tests regions of multiline comment</Comment><br/>
<Comment>*/</Comment><br/>
<Comment>//file TestParser.g4</Comment><br/>
<Keyword>parser</Keyword><Normal Text> </Normal Text><Keyword>grammar</Keyword><Normal Text> TestParser</Normal Text><Symbol>;</Symbol><br/>
<Normal Text></Normal Text><br/>
<Attribute>options</Attribute><Normal Text> </Normal Text><Symbol>{</Symbol><Normal Text> tokenVocab </Normal Text><Symbol>=</Symbol><Normal Text> TestLexer</Normal Text><Symbol>;</Symbol><Normal Text> </Normal Text><Symbol>}</Symbol><br/>
<Normal Text></Normal Text><br/>
<Comment>// The main entry point for parsing a grammar.</Comment><br/>
<Normal Text></Normal Text><br/>
<Normal Text>startRule</Normal Text><br/>
<Normal Text> </Normal Text><Symbol>:</Symbol><Normal Text> </Normal Text><Symbol>(</Symbol><Normal Text>expression </Normal Text><Symbol>|</Symbol><Normal Text> STRING</Normal Text><Symbol>)+</Symbol><Normal Text> EOF</Normal Text><br/>
<Normal Text> </Normal Text><Symbol>;</Symbol><br/>
<Normal Text></Normal Text><br/>
<Normal Text>expression</Normal Text><br/>
<Normal Text> </Normal Text><Symbol>:</Symbol><Normal Text> expression PLUS mulExpr</Normal Text><br/>
<Normal Text> </Normal Text><Symbol>|</Symbol><Normal Text> expression MINUS mulExpr</Normal Text><br/>
<Normal Text> </Normal Text><Symbol>|</Symbol><Normal Text> mulExpr</Normal Text><br/>
<Normal Text> </Normal Text><Symbol>;</Symbol><br/>
<Normal Text></Normal Text><br/>
<Normal Text>mulExpr</Normal Text><br/>
<Normal Text> </Normal Text><Symbol>:</Symbol><Normal Text> mulExpr MUL unaryExpr</Normal Text><br/>
<Normal Text> </Normal Text><Symbol>|</Symbol><Normal Text> mulExpr DIV unaryExpr</Normal Text><br/>
<Normal Text> </Normal Text><Symbol>|</Symbol><Normal Text> unaryExpr</Normal Text><br/>
<Normal Text> </Normal Text><Symbol>;</Symbol><br/>
<Normal Text></Normal Text><br/>
<Normal Text>unaryExpr</Normal Text><br/>
<Normal Text> </Normal Text><Symbol>:</Symbol><Normal Text> atom</Normal Text><br/>
<Normal Text> </Normal Text><Symbol>|</Symbol><Normal Text> LPAR expression RPAR</Normal Text><br/>
<Normal Text> </Normal Text><Symbol>;</Symbol><br/>
<Normal Text></Normal Text><br/>
<Normal Text>atom</Normal Text><br/>
<Normal Text> </Normal Text><Symbol>:</Symbol><Normal Text> IDENT</Normal Text><br/>
<Normal Text> </Normal Text><Symbol>|</Symbol><Normal Text> number</Normal Text><br/>
<Normal Text> </Normal Text><Symbol>;</Symbol><br/>
<Normal Text></Normal Text><br/>
<Normal Text>number</Normal Text><br/>
<Normal Text> </Normal Text><Symbol>:</Symbol><Normal Text> INT</Normal Text><br/>
<Normal Text> </Normal Text><Symbol>|</Symbol><Normal Text> FLOAT</Normal Text><br/>
<Normal Text> </Normal Text><Symbol>;</Symbol><br/>
<Normal Text></Normal Text><br/>
<Comment>//================================</Comment><br/>
<Comment>//file TestLexer.g4</Comment><br/>
<Normal Text></Normal Text><br/>
<Keyword>lexer</Keyword><Normal Text> </Normal Text><Keyword>grammar</Keyword><Normal Text> TestLexer</Normal Text><Symbol>;</Symbol><br/>
<Normal Text></Normal Text><br/>
<Comment>/*'channels' and '{' must be in one line</Comment><br/>
<Comment> to correct highlighting, highlighter can't</Comment><br/>
<Comment> recognize regular expression "(options|tokens|channels)(?=([\s]*{))"</Comment><br/>
<Comment> where apart from \s whitrspaces are end of lines</Comment><br/>
<Comment> */</Comment><br/>
<Attribute>channels</Attribute><Normal Text> </Normal Text><Symbol>{</Symbol><Normal Text> OFF_CHANNEL </Normal Text><Symbol>,</Symbol><Normal Text> COMMENT </Normal Text><Symbol>}</Symbol><br/>
<Normal Text></Normal Text><br/>
<Normal Text></Normal Text><br/>
<Normal Text>PLUS</Normal Text><br/>
<Normal Text> </Normal Text><Symbol>:</Symbol><Normal Text> </Normal Text><String>'+'</String><br/>
<Normal Text> </Normal Text><Symbol>;</Symbol><br/>
<Normal Text></Normal Text><br/>
<Normal Text>MINUS</Normal Text><br/>
<Normal Text> </Normal Text><Symbol>:</Symbol><Normal Text> </Normal Text><String>'-'</String><br/>
<Normal Text> </Normal Text><Symbol>;</Symbol><br/>
<Normal Text></Normal Text><br/>
<Normal Text>MUL</Normal Text><br/>
<Normal Text> </Normal Text><Symbol>:</Symbol><Normal Text> </Normal Text><String>'*'</String><br/>
<Normal Text> </Normal Text><Symbol>;</Symbol><br/>
<Normal Text></Normal Text><br/>
<Normal Text>DIV</Normal Text><br/>
<Normal Text> </Normal Text><Symbol>:</Symbol><Normal Text> </Normal Text><String>'/'</String><br/>
<Normal Text> </Normal Text><Symbol>;</Symbol><br/>
<Normal Text></Normal Text><br/>
<Normal Text>LPAR</Normal Text><br/>
<Normal Text> </Normal Text><Symbol>:</Symbol><Normal Text> </Normal Text><String>'('</String><br/>
<Normal Text> </Normal Text><Symbol>;</Symbol><br/>
<Normal Text></Normal Text><br/>
<Normal Text>RPAR</Normal Text><br/>
<Normal Text> </Normal Text><Symbol>:</Symbol><Normal Text> </Normal Text><String>')'</String><br/>
<Normal Text> </Normal Text><Symbol>;</Symbol><br/>
<Normal Text></Normal Text><br/>
<Normal Text>IDENT</Normal Text><br/>
<Normal Text> </Normal Text><Symbol>:</Symbol><Normal Text> Nondigit</Normal Text><br/>
<Normal Text> </Normal Text><Symbol>(</Symbol><Normal Text> Nondigit</Normal Text><br/>
<Normal Text> </Normal Text><Symbol>|</Symbol><Normal Text> Digit</Normal Text><br/>
<Normal Text> </Normal Text><Symbol>)*</Symbol><br/>
<Normal Text> </Normal Text><Symbol>;</Symbol><br/>
<Normal Text></Normal Text><br/>
<Keyword>fragment</Keyword><br/>
<Normal Text>Digit</Normal Text><br/>
<Normal Text> </Normal Text><Symbol>:</Symbol><Normal Text> </Normal Text><Charset>[0-9]</Charset><br/>
<Normal Text> </Normal Text><Symbol>;</Symbol><br/>
<Normal Text></Normal Text><br/>
<Keyword>fragment</Keyword><br/>
<Normal Text>NonzeroDigit</Normal Text><br/>
<Normal Text> </Normal Text><Symbol>:</Symbol><Normal Text> </Normal Text><Charset>[1-9]</Charset><br/>
<Normal Text> </Normal Text><Symbol>;</Symbol><br/>
<Normal Text></Normal Text><br/>
<Keyword>fragment</Keyword><br/>
<Normal Text>Nondigit</Normal Text><br/>
<Normal Text> </Normal Text><Symbol>:</Symbol><Normal Text> </Normal Text><Charset>[a-zA-Z_]</Charset><br/>
<Normal Text> </Normal Text><Symbol>;</Symbol><br/>
<Normal Text></Normal Text><br/>
<Normal Text>Sign</Normal Text><br/>
<Normal Text> </Normal Text><Symbol>:</Symbol><Normal Text> </Normal Text><String>'+'</String><Normal Text> </Normal Text><Symbol>|</Symbol><Normal Text> </Normal Text><String>'-'</String><br/>
<Normal Text> </Normal Text><Symbol>;</Symbol><br/>
<Normal Text></Normal Text><br/>
<Normal Text>INT</Normal Text><br/>
<Normal Text> </Normal Text><Symbol>:</Symbol><Normal Text> Sign</Normal Text><Symbol>?</Symbol><Normal Text> </Normal Text><Symbol>(</Symbol><Normal Text>NonzeroDigit Digit</Normal Text><Symbol>*</Symbol><Normal Text> </Normal Text><Symbol>|</Symbol><Normal Text> </Normal Text><String>'0'</String><Symbol>)</Symbol><br/>
<Normal Text> </Normal Text><Symbol>;</Symbol><br/>
<Normal Text></Normal Text><br/>
<Keyword>fragment</Keyword><br/>
<Normal Text>DigitSequence</Normal Text><br/>
<Normal Text> </Normal Text><Symbol>:</Symbol><Normal Text> Digit</Normal Text><Symbol>+</Symbol><br/>
<Normal Text> </Normal Text><Symbol>;</Symbol><br/>
<Normal Text></Normal Text><br/>
<Keyword>fragment</Keyword><br/>
<Normal Text>ExponentPart</Normal Text><br/>
<Normal Text> </Normal Text><Symbol>:</Symbol><Normal Text> </Normal Text><Charset>[eE]</Charset><Normal Text> Sign</Normal Text><Symbol>?</Symbol><Normal Text> DigitSequence</Normal Text><br/>
<Normal Text> </Normal Text><Symbol>;</Symbol><br/>
<Normal Text></Normal Text><br/>
<Keyword>fragment</Keyword><br/>
<Normal Text>FractionalConstant</Normal Text><br/>
<Normal Text> </Normal Text><Symbol>:</Symbol><Normal Text> DigitSequence</Normal Text><Symbol>?</Symbol><Normal Text> </Normal Text><String>'.'</String><Normal Text> DigitSequence</Normal Text><br/>
<Normal Text> </Normal Text><Symbol>|</Symbol><Normal Text> DigitSequence </Normal Text><String>'.'</String><br/>
<Normal Text> </Normal Text><Symbol>;</Symbol><br/>
<Normal Text></Normal Text><br/>
<Normal Text>FLOAT</Normal Text><br/>
<Normal Text> </Normal Text><Symbol>:</Symbol><Normal Text> </Normal Text><Symbol>(</Symbol><Normal Text>FractionalConstant ExponentPart</Normal Text><Symbol>?</Symbol><Normal Text> </Normal Text><Symbol>|</Symbol><Normal Text> DigitSequence ExponentPart</Normal Text><Symbol>)</Symbol><br/>
<Normal Text> </Normal Text><Symbol>;</Symbol><br/>
<Normal Text></Normal Text><br/>
<Normal Text></Normal Text><br/>
<Keyword>fragment</Keyword><br/>
<Normal Text>EscapeSequence</Normal Text><br/>
<Normal Text> </Normal Text><Symbol>:</Symbol><Normal Text> </Normal Text><String>'\\'</String><Normal Text> </Normal Text><Charset>['"?abfnrtvhe\\]</Charset><br/>
<Normal Text> </Normal Text><Symbol>;</Symbol><br/>
<Normal Text></Normal Text><br/>
<Comment>//between [] is charset , test escape \</Comment><br/>
<Comment>fragment</Comment><br/>
<Normal Text>SChar</Normal Text><br/>
<Normal Text> </Normal Text><Symbol>:</Symbol><Normal Text> </Normal Text><Symbol>~</Symbol><Charset>["\\\r\n]</Charset><br/>
<Normal Text> </Normal Text><Symbol>|</Symbol><Normal Text> EscapeSequence</Normal Text><br/>
<Normal Text> </Normal Text><Symbol>;</Symbol><br/>
<Normal Text></Normal Text><br/>
<Normal Text>STRING</Normal Text><br/>
<Normal Text> </Normal Text><Symbol>:</Symbol><Normal Text> </Normal Text><String>'"'</String><Normal Text> SChar</Normal Text><Symbol>*</Symbol><Normal Text> </Normal Text><String>'"'</String><br/>
<Normal Text> </Normal Text><Symbol>;</Symbol><br/>
|