Warning, /frameworks/syntax-highlighting/autotests/input/highlight.g4 is written in an unsupported language. File is not indexed.
0001 /* This test file tests Kate's ANTLR highlighting
0002 compilable bt ANTLR although not directly:
0003 grammar can be alone file for both parser and lexer
0004 or two files
0005 This file is merged TestParser.g4 and TestLexer.g4
0006 this lines also tests regions of multiline comment
0007 */
0008 //file TestParser.g4
0009 parser grammar TestParser;
0010
0011 options { tokenVocab = TestLexer; }
0012
0013 // The main entry point for parsing a grammar.
0014
0015 startRule
0016 : (expression | STRING)+ EOF
0017 ;
0018
0019 expression
0020 : expression PLUS mulExpr
0021 | expression MINUS mulExpr
0022 | mulExpr
0023 ;
0024
0025 mulExpr
0026 : mulExpr MUL unaryExpr
0027 | mulExpr DIV unaryExpr
0028 | unaryExpr
0029 ;
0030
0031 unaryExpr
0032 : atom
0033 | LPAR expression RPAR
0034 ;
0035
0036 atom
0037 : IDENT
0038 | number
0039 ;
0040
0041 number
0042 : INT
0043 | FLOAT
0044 ;
0045
0046 //================================
0047 //file TestLexer.g4
0048
0049 lexer grammar TestLexer;
0050
0051 /*'channels' and '{' must be in one line
0052 to correct highlighting, highlighter can't
0053 recognize regular expression "(options|tokens|channels)(?=([\s]*{))"
0054 where apart from \s whitrspaces are end of lines
0055 */
0056 channels { OFF_CHANNEL , COMMENT }
0057
0058
0059 PLUS
0060 : '+'
0061 ;
0062
0063 MINUS
0064 : '-'
0065 ;
0066
0067 MUL
0068 : '*'
0069 ;
0070
0071 DIV
0072 : '/'
0073 ;
0074
0075 LPAR
0076 : '('
0077 ;
0078
0079 RPAR
0080 : ')'
0081 ;
0082
0083 IDENT
0084 : Nondigit
0085 ( Nondigit
0086 | Digit
0087 )*
0088 ;
0089
0090 fragment
0091 Digit
0092 : [0-9]
0093 ;
0094
0095 fragment
0096 NonzeroDigit
0097 : [1-9]
0098 ;
0099
0100 fragment
0101 Nondigit
0102 : [a-zA-Z_]
0103 ;
0104
0105 Sign
0106 : '+' | '-'
0107 ;
0108
0109 INT
0110 : Sign? (NonzeroDigit Digit* | '0')
0111 ;
0112
0113 fragment
0114 DigitSequence
0115 : Digit+
0116 ;
0117
0118 fragment
0119 ExponentPart
0120 : [eE] Sign? DigitSequence
0121 ;
0122
0123 fragment
0124 FractionalConstant
0125 : DigitSequence? '.' DigitSequence
0126 | DigitSequence '.'
0127 ;
0128
0129 FLOAT
0130 : (FractionalConstant ExponentPart? | DigitSequence ExponentPart)
0131 ;
0132
0133
0134 fragment
0135 EscapeSequence
0136 : '\\' ['"?abfnrtvhe\\]
0137 ;
0138
0139 //between [] is charset , test escape \
0140 fragment
0141 SChar
0142 : ~["\\\r\n]
0143 | EscapeSequence
0144 ;
0145
0146 STRING
0147 : '"' SChar* '"'
0148 ;