1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
|
<!DOCTYPE html>
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>highlight.lex</title>
<meta name="generator" content="KF5::SyntaxHighlighting - Definition (Lex/Flex) - Theme (Breeze Dark)"/>
</head><body style="background-color:#232629;color:#cfcfc2"><pre>
<span style="color:#7a7c7d">/* This test file tests kates Lex/Flex highlighting */</span>
<span style="font-weight:bold">%option c++</span>
<span style="font-weight:bold">%option yyclass="KateTester"</span>
<span style="font-weight:bold">%option yylineno</span>
<span style="color:#7a7c7d">/* This is a C(++) comment */</span>
<span style="color:#7a7c7d">/* This one is a lex comment ! */</span>
<span style="color:#f67400;font-weight:bold">%{</span>
<span style="color:#27ae60">#include </span><span style="color:#27ae60"><iostream></span>
<span style="color:#27ae60">#include </span><span style="color:#27ae60">"realparser.hpp"</span>
<span style="font-weight:bold">using</span> <span style="font-weight:bold">namespace</span> std<span style="color:#3f8058">;</span>
<span style="color:#f67400;font-weight:bold">%}</span>
<span style="color:#7a7c7d">/* Some definitions */</span>
<span style="color:#2980b9">DIGIT </span><span style="color:#f44f4f">[0-9]</span>
<span style="color:#2980b9">LETTER </span><span style="color:#f44f4f">[_a-zA-Z]</span>
<span style="color:#f67400;font-weight:bold">%%</span>
<span style="color:#7a7c7d">/* Comment *shall be indented here* */</span>
<span style="color:#f44f4f">[ </span><span style="color:#f44f4f;font-weight:bold">\t\n\r</span><span style="color:#f44f4f">]+</span>
<span style="color:#7a7c7d">/* Note: there is a bad } just here vvv */</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><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>
<span style="color:#7a7c7d">/* A start condition scope... */</span>
<span style="color:#f44f4f"><ESC></span><span style="color:#f67400;font-weight:bold">{</span>
<span style="color:#f44f4f">"a"</span> {
<span style="color:#7a7c7d">/* C mode ! */</span>
<span style="color:#fdbc4b;font-weight:bold">return</span> <span style="color:#f67400">0</span><span style="color:#3f8058">;</span>
}
<span style="color:#f44f4f">"b"</span> <span style="color:#f67400;font-weight:bold">%{</span>
<span style="color:#7a7c7d">/* C mode, too ! */</span>
<span style="color:#fdbc4b;font-weight:bold">return</span> <span style="color:#f67400">0</span><span style="color:#3f8058">;</span>
<span style="color:#f67400;font-weight:bold">%}</span>
<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>
<span style="color:#f67400;font-weight:bold">}</span>
<span style="color:#7a7c7d">/* Big rule */</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><span style="color:#f44f4f">.)*</span><span style="color:#f44f4f;font-weight:bold">\"</span> {
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>
<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>
<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>
<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>
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>
<span style="color:#fdbc4b;font-weight:bold">else</span>
<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>
{
<span style="color:#fdbc4b;font-weight:bold">case</span> <span style="color:#3daee9">'n'</span><span style="color:#3f8058">:</span>
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>
<span style="color:#fdbc4b;font-weight:bold">break</span><span style="color:#3f8058">;</span>
<span style="color:#fdbc4b;font-weight:bold">default</span><span style="color:#3f8058">:</span>
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>
}
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>
<span style="color:#fdbc4b;font-weight:bold">return</span> TOK_STRING<span style="color:#3f8058">;</span>
}
<span style="color:#7a7c7d">/* Dot (match all) */</span>
<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>}
<span style="color:#f67400;font-weight:bold">%%</span>
<span style="color:#7a7c7d">// Here is pure C(++)</span>
<span style="color:#27ae60">#include </span><span style="color:#27ae60"><iostream></span>
<span style="color:#2980b9">int</span> main<span style="color:#3f8058">(</span><span style="color:#2980b9">void</span><span style="color:#3f8058">)</span>
<span style="color:#3f8058">{</span>
<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>
<span style="color:#fdbc4b;font-weight:bold">return</span> <span style="color:#f67400">0</span><span style="color:#3f8058">;</span>
<span style="color:#3f8058">}</span>
</pre></body></html>
|