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="KateTester"</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;"><iostream></span> 0019 <span style="color:#27ae60;">#include </span><span style="color:#27ae60;">"realparser.hpp"</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;"><ESC></span><span style="color:#f67400;font-weight:bold;">{</span> 0037 <span style="color:#f44f4f;">"a"</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;">"b"</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;">"c"</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;">\"</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> { 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;">'"'</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;"><<</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;"><iostream></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;"> <<</span> <span style="color:#f44f4f;">"Hello, World</span><span style="color:#3daee9;">\n</span><span style="color:#f44f4f;">"</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>