File indexing completed on 2025-02-02 03:54:44
0001 <!DOCTYPE html> 0002 <html><head> 0003 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> 0004 <title>highlight.g4</title> 0005 <meta name="generator" content="KF5::SyntaxHighlighting - Definition (ANTLR) - Theme (Breeze Dark)"/> 0006 </head><body style="background-color:#232629;color:#cfcfc2"><pre> 0007 <span style="color:#7a7c7d">/* This test file tests Kate's ANTLR highlighting </span> 0008 <span style="color:#7a7c7d"> compilable bt ANTLR although not directly:</span> 0009 <span style="color:#7a7c7d"> grammar can be alone file for both parser and lexer</span> 0010 <span style="color:#7a7c7d"> or two files</span> 0011 <span style="color:#7a7c7d"> This file is merged TestParser.g4 and TestLexer.g4</span> 0012 <span style="color:#7a7c7d"> this lines also tests regions of multiline comment</span> 0013 <span style="color:#7a7c7d">*/</span> 0014 <span style="color:#7a7c7d">//file TestParser.g4</span> 0015 <span style="font-weight:bold">parser</span> <span style="font-weight:bold">grammar</span> TestParser<span style="color:#3f8058">;</span> 0016 0017 <span style="color:#2980b9">options</span> <span style="color:#3f8058">{</span> tokenVocab <span style="color:#3f8058">=</span> TestLexer<span style="color:#3f8058">;</span> <span style="color:#3f8058">}</span> 0018 0019 <span style="color:#7a7c7d">// The main entry point for parsing a grammar.</span> 0020 0021 startRule 0022 <span style="color:#3f8058">:</span> <span style="color:#3f8058">(</span>expression <span style="color:#3f8058">|</span> STRING<span style="color:#3f8058">)+</span> EOF 0023 <span style="color:#3f8058">;</span> 0024 0025 expression 0026 <span style="color:#3f8058">:</span> expression PLUS mulExpr 0027 <span style="color:#3f8058">|</span> expression MINUS mulExpr 0028 <span style="color:#3f8058">|</span> mulExpr 0029 <span style="color:#3f8058">;</span> 0030 0031 mulExpr 0032 <span style="color:#3f8058">:</span> mulExpr MUL unaryExpr 0033 <span style="color:#3f8058">|</span> mulExpr DIV unaryExpr 0034 <span style="color:#3f8058">|</span> unaryExpr 0035 <span style="color:#3f8058">;</span> 0036 0037 unaryExpr 0038 <span style="color:#3f8058">:</span> atom 0039 <span style="color:#3f8058">|</span> LPAR expression RPAR 0040 <span style="color:#3f8058">;</span> 0041 0042 atom 0043 <span style="color:#3f8058">:</span> IDENT 0044 <span style="color:#3f8058">|</span> number 0045 <span style="color:#3f8058">;</span> 0046 0047 number 0048 <span style="color:#3f8058">:</span> INT 0049 <span style="color:#3f8058">|</span> FLOAT 0050 <span style="color:#3f8058">;</span> 0051 0052 <span style="color:#7a7c7d">//================================</span> 0053 <span style="color:#7a7c7d">//file TestLexer.g4</span> 0054 0055 <span style="font-weight:bold">lexer</span> <span style="font-weight:bold">grammar</span> TestLexer<span style="color:#3f8058">;</span> 0056 0057 <span style="color:#7a7c7d">/*'channels' and '{' must be in one line</span> 0058 <span style="color:#7a7c7d"> to correct highlighting, highlighter can't</span> 0059 <span style="color:#7a7c7d"> recognize regular expression "(options|tokens|channels)(?=([\s]*{))"</span> 0060 <span style="color:#7a7c7d"> where apart from \s whitrspaces are end of lines</span> 0061 <span style="color:#7a7c7d"> */</span> 0062 <span style="color:#2980b9">channels</span> <span style="color:#3f8058">{</span> OFF_CHANNEL <span style="color:#3f8058">,</span> COMMENT <span style="color:#3f8058">}</span> 0063 0064 0065 PLUS 0066 <span style="color:#3f8058">:</span> <span style="color:#f44f4f">'+'</span> 0067 <span style="color:#3f8058">;</span> 0068 0069 MINUS 0070 <span style="color:#3f8058">:</span> <span style="color:#f44f4f">'-'</span> 0071 <span style="color:#3f8058">;</span> 0072 0073 MUL 0074 <span style="color:#3f8058">:</span> <span style="color:#f44f4f">'*'</span> 0075 <span style="color:#3f8058">;</span> 0076 0077 DIV 0078 <span style="color:#3f8058">:</span> <span style="color:#f44f4f">'/'</span> 0079 <span style="color:#3f8058">;</span> 0080 0081 LPAR 0082 <span style="color:#3f8058">:</span> <span style="color:#f44f4f">'('</span> 0083 <span style="color:#3f8058">;</span> 0084 0085 RPAR 0086 <span style="color:#3f8058">:</span> <span style="color:#f44f4f">')'</span> 0087 <span style="color:#3f8058">;</span> 0088 0089 IDENT 0090 <span style="color:#3f8058">:</span> Nondigit 0091 <span style="color:#3f8058">(</span> Nondigit 0092 <span style="color:#3f8058">|</span> Digit 0093 <span style="color:#3f8058">)*</span> 0094 <span style="color:#3f8058">;</span> 0095 0096 <span style="font-weight:bold">fragment</span> 0097 Digit 0098 <span style="color:#3f8058">:</span> <span style="color:#3daee9">[0-9]</span> 0099 <span style="color:#3f8058">;</span> 0100 0101 <span style="font-weight:bold">fragment</span> 0102 NonzeroDigit 0103 <span style="color:#3f8058">:</span> <span style="color:#3daee9">[1-9]</span> 0104 <span style="color:#3f8058">;</span> 0105 0106 <span style="font-weight:bold">fragment</span> 0107 Nondigit 0108 <span style="color:#3f8058">:</span> <span style="color:#3daee9">[a-zA-Z_]</span> 0109 <span style="color:#3f8058">;</span> 0110 0111 Sign 0112 <span style="color:#3f8058">:</span> <span style="color:#f44f4f">'+'</span> <span style="color:#3f8058">|</span> <span style="color:#f44f4f">'-'</span> 0113 <span style="color:#3f8058">;</span> 0114 0115 INT 0116 <span style="color:#3f8058">:</span> Sign<span style="color:#3f8058">?</span> <span style="color:#3f8058">(</span>NonzeroDigit Digit<span style="color:#3f8058">*</span> <span style="color:#3f8058">|</span> <span style="color:#f44f4f">'0'</span><span style="color:#3f8058">)</span> 0117 <span style="color:#3f8058">;</span> 0118 0119 <span style="font-weight:bold">fragment</span> 0120 DigitSequence 0121 <span style="color:#3f8058">:</span> Digit<span style="color:#3f8058">+</span> 0122 <span style="color:#3f8058">;</span> 0123 0124 <span style="font-weight:bold">fragment</span> 0125 ExponentPart 0126 <span style="color:#3f8058">:</span> <span style="color:#3daee9">[eE]</span> Sign<span style="color:#3f8058">?</span> DigitSequence 0127 <span style="color:#3f8058">;</span> 0128 0129 <span style="font-weight:bold">fragment</span> 0130 FractionalConstant 0131 <span style="color:#3f8058">:</span> DigitSequence<span style="color:#3f8058">?</span> <span style="color:#f44f4f">'.'</span> DigitSequence 0132 <span style="color:#3f8058">|</span> DigitSequence <span style="color:#f44f4f">'.'</span> 0133 <span style="color:#3f8058">;</span> 0134 0135 FLOAT 0136 <span style="color:#3f8058">:</span> <span style="color:#3f8058">(</span>FractionalConstant ExponentPart<span style="color:#3f8058">?</span> <span style="color:#3f8058">|</span> DigitSequence ExponentPart<span style="color:#3f8058">)</span> 0137 <span style="color:#3f8058">;</span> 0138 0139 0140 <span style="font-weight:bold">fragment</span> 0141 EscapeSequence 0142 <span style="color:#3f8058">:</span> <span style="color:#f44f4f">'\\'</span> <span style="color:#3daee9">['"?abfnrtvhe\\]</span> 0143 <span style="color:#3f8058">;</span> 0144 0145 <span style="color:#7a7c7d">//between [] is charset , test escape \</span> 0146 <span style="color:#7a7c7d">fragment</span> 0147 SChar 0148 <span style="color:#3f8058">:</span> <span style="color:#3f8058">~</span><span style="color:#3daee9">["\\\r\n]</span> 0149 <span style="color:#3f8058">|</span> EscapeSequence 0150 <span style="color:#3f8058">;</span> 0151 0152 STRING 0153 <span style="color:#3f8058">:</span> <span style="color:#f44f4f">'"'</span> SChar<span style="color:#3f8058">*</span> <span style="color:#f44f4f">'"'</span> 0154 <span style="color:#3f8058">;</span> 0155 </pre></body></html>