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