You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
83 lines
1.3 KiB
83 lines
1.3 KiB
15 years ago
|
/* This test file tests kates Lex/Flex highlighting */
|
||
|
|
||
|
%option c++
|
||
|
%option yyclass="KateTester"
|
||
|
%option yylineno
|
||
|
|
||
|
/* This is a C(++) comment */
|
||
|
|
||
|
/* This one is a lex comment ! */
|
||
|
|
||
|
%{
|
||
|
#include <iostream>
|
||
|
#include "realparser.hpp"
|
||
|
using namespace std;
|
||
|
%}
|
||
|
|
||
|
/* Some definitions */
|
||
|
DIGIT [0-9]
|
||
|
LETTER [_a-zA-Z]
|
||
|
|
||
|
%%
|
||
|
|
||
|
/* Comment *shall be indented here* */
|
||
|
[ \t\n\r]+
|
||
|
|
||
|
/* Note: there is a bad } just here vvv */
|
||
|
\/\*([^\*]|\*[^/])*\*\/ { foo(a, b, c); } }
|
||
|
|
||
|
/* A start condition scope... */
|
||
|
<ESC>{
|
||
|
"a" {
|
||
|
|
||
|
/* C mode ! */
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
"b" %{
|
||
|
|
||
|
/* C mode, too ! */
|
||
|
return 0;
|
||
|
%}
|
||
|
|
||
|
"c" return 0; // C++ comment
|
||
|
}
|
||
|
|
||
|
/* Big rule */
|
||
|
\"([^"\\]|\\.)*\" {
|
||
|
|
||
|
yylval.string_val = new char[strlen(yytext) + 1];
|
||
|
int j = 0, i = 1;
|
||
|
|
||
|
while (yytext[i] != '"')
|
||
|
if (yytext[i] != '\\')
|
||
|
yylval.string_val[j++] = yytext[i++];
|
||
|
else
|
||
|
switch (yytext[i + 1])
|
||
|
{
|
||
|
case 'n':
|
||
|
yylval.string_val[j++] = '\n'; i += 2;
|
||
|
break;
|
||
|
default:
|
||
|
yylval.string_val[j++] << yytext[i + 1], i += 2;
|
||
|
}
|
||
|
|
||
|
yylval.string_val[j] = 0;
|
||
|
return TOK_STRING;
|
||
|
|
||
|
}
|
||
|
|
||
|
/* Dot (match all) */
|
||
|
. {return yylval.int_val = yytext[0];}
|
||
|
|
||
|
%%
|
||
|
|
||
|
// Here is pure C(++)
|
||
|
#include <iostream>
|
||
|
|
||
|
int main(void)
|
||
|
{
|
||
|
std::cout << "Hello, World\n";
|
||
|
return 0;
|
||
|
}
|