File indexing completed on 2024-05-19 15:23:13

0001 <!DOCTYPE html>
0002 <html><head>
0003 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
0004 <title>highlight.lex</title>
0005 <meta name="generator" content="KF5::SyntaxHighlighting - Definition (Lex/Flex) - Theme (Breeze Dark)"/>
0006 </head><body style="background-color:#232629;color:#cfcfc2"><pre>
0007 <span style="color:#7a7c7d;">/* This test file tests kates Lex/Flex highlighting */</span>
0008 
0009 <span style="font-weight:bold;">%option c++</span>
0010 <span style="font-weight:bold;">%option yyclass=&quot;KateTester&quot;</span>
0011 <span style="font-weight:bold;">%option yylineno</span>
0012 
0013  <span style="color:#7a7c7d;">/* This is a C(++) comment */</span>
0014 
0015 <span style="color:#7a7c7d;">/* This one is a lex comment ! */</span>
0016 
0017 <span style="color:#f67400;font-weight:bold;">%{</span>
0018 <span style="color:#27ae60;">#include </span><span style="color:#27ae60;">&lt;iostream&gt;</span>
0019 <span style="color:#27ae60;">#include </span><span style="color:#27ae60;">&quot;realparser.hpp&quot;</span>
0020 <span style="font-weight:bold;">using</span> <span style="font-weight:bold;">namespace</span> std<span style="color:#3f8058;">;</span>
0021 <span style="color:#f67400;font-weight:bold;">%}</span>
0022 
0023 <span style="color:#7a7c7d;">/* Some definitions */</span>
0024 <span style="color:#2980b9;">DIGIT    </span><span style="color:#f44f4f;">[0-9]</span>
0025 <span style="color:#2980b9;">LETTER   </span><span style="color:#f44f4f;">[_a-zA-Z]</span>
0026 
0027 <span style="color:#f67400;font-weight:bold;">%%</span>
0028 
0029  <span style="color:#7a7c7d;">/* Comment *shall be indented here* */</span>
0030 <span style="color:#f44f4f;">[ </span><span style="color:#f44f4f;font-weight:bold;">\t\n\r</span><span style="color:#f44f4f;">]+</span>          
0031 
0032  <span style="color:#7a7c7d;">/* Note: there is a bad } just here     vvv */</span>
0033 <span style="color:#f44f4f;font-weight:bold;">\/\*</span><span style="color:#f44f4f;">([^</span><span style="color:#f44f4f;font-weight:bold;">\*</span><span style="color:#f44f4f;">]|</span><span style="color:#f44f4f;font-weight:bold;">\*</span><span style="color:#f44f4f;">[^/])*</span><span style="color:#f44f4f;font-weight:bold;">\*\/</span> { foo<span style="color:#3f8058;">(</span>a<span style="color:#3f8058;">,</span> b<span style="color:#3f8058;">,</span> c<span style="color:#3f8058;">)</span><span style="color:#3f8058;">;</span> } <span style="color:#95da4c;background-color:#4d1f24;font-weight:bold;">}</span>
0034 
0035  <span style="color:#7a7c7d;">/* A start condition scope... */</span>
0036 <span style="color:#f44f4f;">&lt;ESC&gt;</span><span style="color:#f67400;font-weight:bold;">{</span>
0037   <span style="color:#f44f4f;">&quot;a&quot;</span> {
0038   
0039   <span style="color:#7a7c7d;">/* C mode ! */</span>
0040   <span style="color:#fdbc4b;font-weight:bold;">return</span> <span style="color:#f67400;">0</span><span style="color:#3f8058;">;</span>
0041 }
0042 
0043   <span style="color:#f44f4f;">&quot;b&quot;</span> <span style="color:#f67400;font-weight:bold;">%{</span>
0044   
0045   <span style="color:#7a7c7d;">/* C mode, too ! */</span>
0046   <span style="color:#fdbc4b;font-weight:bold;">return</span> <span style="color:#f67400;">0</span><span style="color:#3f8058;">;</span>
0047 <span style="color:#f67400;font-weight:bold;">%}</span>
0048   
0049   <span style="color:#f44f4f;">&quot;c&quot;</span> <span style="color:#fdbc4b;font-weight:bold;">return</span> <span style="color:#f67400;">0</span><span style="color:#3f8058;">;</span> <span style="color:#7a7c7d;">// C++ comment</span>
0050 <span style="color:#f67400;font-weight:bold;">}</span>
0051 
0052  <span style="color:#7a7c7d;">/* Big rule */</span>
0053 <span style="color:#f44f4f;font-weight:bold;">\&quot;</span><span style="color:#f44f4f;">([^&quot;</span><span style="color:#f44f4f;font-weight:bold;">\\</span><span style="color:#f44f4f;">]|</span><span style="color:#f44f4f;font-weight:bold;">\\</span><span style="color:#f44f4f;">.)*</span><span style="color:#f44f4f;font-weight:bold;">\&quot;</span> {
0054 
0055    yylval<span style="color:#3f8058;">.</span>string_val <span style="color:#3f8058;">=</span> <span style="font-weight:bold;">new</span> <span style="color:#2980b9;">char</span><span style="color:#3f8058;">[</span>strlen<span style="color:#3f8058;">(</span>yytext<span style="color:#3f8058;">)</span> <span style="color:#3f8058;">+</span> <span style="color:#f67400;">1</span><span style="color:#3f8058;">]</span><span style="color:#3f8058;">;</span>
0056    <span style="color:#2980b9;">int</span> j <span style="color:#3f8058;">=</span> <span style="color:#f67400;">0</span><span style="color:#3f8058;">,</span> i <span style="color:#3f8058;">=</span> <span style="color:#f67400;">1</span><span style="color:#3f8058;">;</span>
0057    
0058    <span style="color:#fdbc4b;font-weight:bold;">while</span> <span style="color:#3f8058;">(</span>yytext<span style="color:#3f8058;">[</span>i<span style="color:#3f8058;">]</span> <span style="color:#3f8058;">!=</span> <span style="color:#3daee9;">'&quot;'</span><span style="color:#3f8058;">)</span>
0059       <span style="color:#fdbc4b;font-weight:bold;">if</span> <span style="color:#3f8058;">(</span>yytext<span style="color:#3f8058;">[</span>i<span style="color:#3f8058;">]</span> <span style="color:#3f8058;">!=</span> <span style="color:#3daee9;">'</span><span style="color:#3daee9;">\\</span><span style="color:#3daee9;">'</span><span style="color:#3f8058;">)</span>
0060          yylval<span style="color:#3f8058;">.</span>string_val<span style="color:#3f8058;">[</span>j<span style="color:#3f8058;">++]</span> <span style="color:#3f8058;">=</span> yytext<span style="color:#3f8058;">[</span>i<span style="color:#3f8058;">++]</span><span style="color:#3f8058;">;</span>
0061       <span style="color:#fdbc4b;font-weight:bold;">else</span>
0062          <span style="color:#fdbc4b;font-weight:bold;">switch</span> <span style="color:#3f8058;">(</span>yytext<span style="color:#3f8058;">[</span>i <span style="color:#3f8058;">+</span> <span style="color:#f67400;">1</span><span style="color:#3f8058;">])</span>
0063          {
0064          <span style="color:#fdbc4b;font-weight:bold;">case</span> <span style="color:#3daee9;">'n'</span><span style="color:#3f8058;">:</span>
0065             yylval<span style="color:#3f8058;">.</span>string_val<span style="color:#3f8058;">[</span>j<span style="color:#3f8058;">++]</span> <span style="color:#3f8058;">=</span> <span style="color:#3daee9;">'</span><span style="color:#3daee9;">\n</span><span style="color:#3daee9;">'</span><span style="color:#3f8058;">;</span> i <span style="color:#3f8058;">+=</span> <span style="color:#f67400;">2</span><span style="color:#3f8058;">;</span>
0066             <span style="color:#fdbc4b;font-weight:bold;">break</span><span style="color:#3f8058;">;</span>
0067          <span style="color:#fdbc4b;font-weight:bold;">default</span><span style="color:#3f8058;">:</span>
0068             yylval<span style="color:#3f8058;">.</span>string_val<span style="color:#3f8058;">[</span>j<span style="color:#3f8058;">++]</span> <span style="color:#3f8058;">&lt;&lt;</span> yytext<span style="color:#3f8058;">[</span>i <span style="color:#3f8058;">+</span> <span style="color:#f67400;">1</span><span style="color:#3f8058;">]</span><span style="color:#3f8058;">,</span> i <span style="color:#3f8058;">+=</span> <span style="color:#f67400;">2</span><span style="color:#3f8058;">;</span>
0069          }
0070     
0071     yylval<span style="color:#3f8058;">.</span>string_val<span style="color:#3f8058;">[</span>j<span style="color:#3f8058;">]</span> <span style="color:#3f8058;">=</span> <span style="color:#f67400;">0</span><span style="color:#3f8058;">;</span>   
0072     <span style="color:#fdbc4b;font-weight:bold;">return</span> TOK_STRING<span style="color:#3f8058;">;</span>
0073 
0074 }
0075 
0076  <span style="color:#7a7c7d;">/* Dot (match all) */</span>
0077 <span style="color:#f44f4f;">.</span>             {<span style="color:#fdbc4b;font-weight:bold;">return</span> yylval<span style="color:#3f8058;">.</span>int_val <span style="color:#3f8058;">=</span> yytext<span style="color:#3f8058;">[</span><span style="color:#f67400;">0</span><span style="color:#3f8058;">]</span><span style="color:#3f8058;">;</span>}
0078 
0079 <span style="color:#f67400;font-weight:bold;">%%</span>
0080 
0081 <span style="color:#7a7c7d;">// Here is pure C(++)</span>
0082 <span style="color:#27ae60;">#include </span><span style="color:#27ae60;">&lt;iostream&gt;</span>
0083 
0084 <span style="color:#2980b9;">int</span> main<span style="color:#3f8058;">(</span><span style="color:#2980b9;">void</span><span style="color:#3f8058;">)</span>
0085 <span style="color:#3f8058;">{</span>
0086   <span style="color:#7f8c8d;">std::cout</span><span style="color:#3f8058;"> &lt;&lt;</span> <span style="color:#f44f4f;">&quot;Hello, World</span><span style="color:#3daee9;">\n</span><span style="color:#f44f4f;">&quot;</span><span style="color:#3f8058;">;</span>
0087   <span style="color:#fdbc4b;font-weight:bold;">return</span> <span style="color:#f67400;">0</span><span style="color:#3f8058;">;</span>
0088 <span style="color:#3f8058;">}</span>
0089 </pre></body></html>