File indexing completed on 2025-03-09 03:45:57
0001 <!DOCTYPE html> 0002 <html><head> 0003 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> 0004 <title>highlight.y</title> 0005 <meta name="generator" content="KF5::SyntaxHighlighting - Definition (Yacc/Bison) - Theme (Breeze Dark)"/> 0006 </head><body style="background-color:#232629;color:#cfcfc2"><pre> 0007 <span style="color:#7a7c7d">/* Yacc / Bison hl test file.</span> 0008 <span style="color:#7a7c7d"> * It won't compile :-) Sure !</span> 0009 <span style="color:#7a7c7d"> */</span> 0010 0011 <span style="color:#f67400;font-weight:bold">%{</span> 0012 0013 <span style="color:#27ae60">#include </span><span style="color:#27ae60"><iostream></span> 0014 <span style="font-weight:bold">using</span> <span style="font-weight:bold">namespace</span> std<span style="color:#3f8058">;</span> 0015 0016 <span style="color:#2980b9">extern</span> KateParser <span style="color:#3f8058">*</span>parser<span style="color:#3f8058">;</span> 0017 0018 <span style="color:#f67400;font-weight:bold">%}</span> 0019 0020 <span style="font-weight:bold">%locations</span> 0021 0022 <span style="font-weight:bold">%union</span> { 0023 <span style="color:#2980b9">int</span> int_val<span style="color:#3f8058">;</span> 0024 <span style="color:#2980b9">double</span> double_val<span style="color:#3f8058">;</span> 0025 <span style="color:#2980b9">bool</span> bool_val<span style="color:#3f8058">;</span> 0026 <span style="color:#2980b9">char</span> <span style="color:#3f8058">*</span>string_val<span style="color:#3f8058">;</span> 0027 <span style="color:#2980b9">char</span> <span style="color:#3f8058">*</span>ident_val<span style="color:#3f8058">;</span> 0028 <span style="font-weight:bold">struct</span> var <span style="color:#3f8058">*</span>v<span style="color:#3f8058">;</span> 0029 <span style="color:#2980b9">void</span> <span style="color:#3f8058">*</span>ptr<span style="color:#3f8058">;</span> 0030 } 0031 0032 <span style="font-weight:bold">%token</span> <span style="color:#2980b9"><int_val></span> TOK_NOT_EQUAL <span style="color:#f44f4f">"!="</span> 0033 <span style="font-weight:bold">%token</span> <span style="color:#2980b9"><int_val></span> TOK_LESSER_E <span style="color:#f44f4f">"<="</span> 0034 <span style="font-weight:bold">%token</span> <span style="color:#2980b9"><int_val></span> TOK_GREATER_E <span style="color:#f44f4f">">="</span> 0035 <span style="font-weight:bold">%token</span> <span style="color:#2980b9"><int_val></span> TOK_EQUAL_2 <span style="color:#f44f4f">"=="</span> <span style="color:#7a7c7d">//comment</span> 0036 <span style="font-weight:bold">%token</span> 0037 PERCENT_DEBUG <span style="color:#f44f4f">"%debug"</span> 0038 PERCENT_DEFAULT_PREC <span style="color:#f44f4f">"%default-prec"</span> 0039 PERCENT_DEFINE <span style="color:#f44f4f">"%define"</span> 0040 ; 0041 0042 <span style="font-weight:bold">%type</span> <span style="color:#2980b9"><int_val></span> type type_proc 0043 0044 <span style="font-weight:bold">%code</span> top { 0045 <span style="color:#27ae60">#define </span><span style="color:#27ae60">_GNU_SOURCE</span> 0046 <span style="color:#27ae60">#include </span><span style="color:#27ae60"><stdio.h></span> 0047 <span style="color:#2980b9">int</span> val<span style="color:#3f8058">;</span> 0048 } 0049 0050 <span style="font-weight:bold">%destructor</span> { free <span style="color:#3f8058">(</span><span style="font-weight:bold">$$</span><span style="color:#3f8058">)</span><span style="color:#3f8058">;</span> printf <span style="color:#3f8058">(</span><span style="color:#f44f4f">"</span><span style="color:#3daee9">%d</span><span style="color:#f44f4f">"</span><span style="color:#3f8058">,</span> <span style="font-weight:bold">@$</span><span style="color:#3f8058">.</span>first_line<span style="color:#3f8058">)</span><span style="color:#3f8058">;</span> } <span style="color:#2980b9"><*></span> 0051 <span style="font-weight:bold">%lex-param</span> {scanner_mode <span style="color:#3f8058">*</span>mode}; 0052 <span style="font-weight:bold">%parse-param</span> {<span style="color:#2980b9">int</span> <span style="color:#3f8058">*</span>nastiness} {<span style="color:#2980b9">int</span> <span style="color:#3f8058">*</span>randomness} 0053 <span style="font-weight:bold">%initial-action</span> { 0054 <span style="font-weight:bold">@$</span><span style="color:#3f8058">.</span>initialize <span style="color:#3f8058">(</span>file_name<span style="color:#3f8058">)</span><span style="color:#3f8058">;</span> 0055 }; 0056 0057 <span style="color:#f67400;font-weight:bold">%%</span> 0058 0059 <span style="color:#f44f4f">prog</span>: KW_PROGRAM ident { parser<span style="color:#3f8058">-></span>start<span style="color:#3f8058">(</span><span style="font-weight:bold">$2</span><span style="color:#3f8058">)</span><span style="color:#3f8058">;</span> } prog_beg_glob_decl instructions { parser<span style="color:#3f8058">-></span>endproc<span style="color:#3f8058">(</span><span style="color:#f67400">0</span><span style="color:#3f8058">)</span><span style="color:#3f8058">;</span> } dev_procedures KW_ENDP ; 0060 0061 <span style="color:#f44f4f">number</span>: integer_number 0062 | TOK_DOUBLE 0063 { 0064 <span style="font-weight:bold">$$</span> <span style="color:#3f8058">=</span> <span style="font-weight:bold">new</span> var<span style="color:#3f8058">;</span> 0065 <span style="font-weight:bold">$$</span><span style="color:#3f8058">-></span>type <span style="color:#3f8058">=</span> KW_REEL<span style="color:#3f8058">;</span> 0066 <span style="font-weight:bold">$$</span><span style="color:#3f8058">-></span>cl <span style="color:#3f8058">=</span> var<span style="color:#3f8058">::</span>LITTERAL<span style="color:#3f8058">;</span> 0067 <span style="font-weight:bold">$$</span><span style="color:#3f8058">-></span>real <span style="color:#3f8058">=</span> <span style="font-weight:bold">$</span><span style="color:#2980b9"><int_val></span><span style="font-weight:bold">1</span><span style="color:#3f8058">;</span> 0068 }; 0069 <span style="color:#f44f4f">words</span>: 0070 <span style="font-weight:bold">%empty</span> 0071 | words word 0072 ; 0073 0074 <span style="font-weight:bold">%type</span> <span style="color:#2980b9"><type></span> word; 0075 <span style="font-weight:bold">%printer</span> { fprintf <span style="color:#3f8058">(</span>yyo<span style="color:#3f8058">,</span> <span style="color:#f44f4f">"</span><span style="color:#3daee9">%s</span><span style="color:#f44f4f">"</span><span style="color:#3f8058">,</span> word_string <span style="color:#3f8058">(</span><span style="font-weight:bold">$$</span><span style="color:#3f8058">))</span><span style="color:#3f8058">;</span> } <span style="color:#2980b9"><type></span>; 0076 <span style="color:#f44f4f">word</span>: 0077 <span style="font-weight:bold">%?</span>{ boom<span style="color:#3f8058">(</span><span style="color:#f67400">1</span><span style="color:#3f8058">)</span><span style="color:#3f8058">;</span> } 0078 | <span style="color:#f44f4f">"hello"</span> { <span style="font-weight:bold">$$</span> <span style="color:#3f8058">=</span> hello<span style="color:#3f8058">;</span> } 0079 | <span style="color:#f44f4f">"bye"</span> { <span style="font-weight:bold">$$</span> <span style="color:#3f8058">=</span> bye<span style="color:#3f8058">;</span> } 0080 ; 0081 0082 <span style="color:#f44f4f">foo</span>: { <span style="font-weight:bold">$$</span> <span style="color:#3f8058">=</span> <span style="color:#f67400">0</span> } 0083 | number { <span style="font-weight:bold">$$</span> <span style="color:#3f8058">=</span> <span style="font-weight:bold">$1</span> <span style="color:#3f8058">|</span> <span style="font-weight:bold">$2</span><span style="color:#3f8058">;</span> } 0084 | hello { <span style="font-weight:bold">$$</span> <span style="color:#3f8058">=</span> <span style="font-weight:bold">$1</span> <span style="color:#3f8058">|</span> <span style="font-weight:bold">$3</span><span style="color:#3f8058">;</span> } <span style="color:#7a7c7d">// without a comma</span> 0085 0086 <span style="color:#f44f4f;font-weight:bold">h</span><span style="color:#f44f4f">ello</span>: 0087 gram1 { <span style="font-weight:bold">$$</span> <span style="color:#3f8058">=</span> <span style="color:#f44f4f">"hi"</span> }; 0088 | gram2 0089 ;; 0090 0091 <span style="color:#f67400;font-weight:bold">%%</span> 0092 0093 <span style="color:#27ae60">#include </span><span style="color:#27ae60"><stdio.h></span> 0094 0095 <span style="color:#2980b9">int</span> main<span style="color:#3f8058">(</span><span style="color:#2980b9">void</span><span style="color:#3f8058">)</span> 0096 <span style="color:#3f8058">{</span> 0097 puts<span style="color:#3f8058">(</span><span style="color:#f44f4f">"Hello, World!"</span><span style="color:#3f8058">)</span><span style="color:#3f8058">;</span> 0098 <span style="color:#fdbc4b;font-weight:bold">return</span> <span style="color:#f67400">0</span><span style="color:#3f8058">;</span> 0099 <span style="color:#3f8058">}</span> 0100 0101 <span style="color:#7a7c7d">// </span><span style="color:#e85848;background-color:#451e1a;font-weight:bold">ALERT</span><span style="color:#7a7c7d"> </span><span style="color:#81ca2d;background-color:#4d1f24;font-weight:bold">NOTE</span> 0102 </pre></body></html>