File indexing completed on 2024-05-12 04:02:07

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>