blob: 3eb59fba8e2b50a32906316b7c139732505f83ea (
plain)
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
|
%{
#define excludeLexer
#include "LuaSL_LSL_tree.h"
#ifdef LUASL_DEBUG
#undef ECHO
#define ECHO printf ("[%s]\n", yytext)
#else
#undef ECHO
#define ECHO {}
#endif
%}
%option reentrant never-interactive batch
%option bison-bridge yylineno 8bit
%option noreject noyymore noyywrap
%option backup debug perf-report perf-report verbose warn
%option align full
SPACE [ \r\n\t]*
ENDSPACE {SPACE}$
LETTER [A-Za-z]
DECIMAL [0-9]
HEX [0-9A-Fa-f]
NAME {LETTER}(_|{LETTER}|{DECIMAL})*
INTEGER {DECIMAL}+
EXPONANT [eE][+-]?{INTEGER}
FLOAT {INTEGER}("."{INTEGER})?{EXPONANT}?
%%
/* Basic tokens */
{ENDSPACE} %{ /* Skip blanks at end of lines. */ %}
{SPACE} %{ ECHO; /* Skip blanks. */ %}
{NAME} %{ ECHO; /* yylval->nameValue=strdup(yytext); return LSL_NAME; */ %}
{INTEGER} %{ ECHO; yylval->integerValue = atoi(yytext); return LSL_INTEGER; %}
{FLOAT} %{ ECHO; /* yylval->floatValue = atof(yytext); return LSL_FLOAT; */ %}
/* Expression tokens */
"&&" { ECHO; return LSL_BOOL_AND; }
"||" { ECHO; return LSL_BOOL_OR; }
"|" { ECHO; return LSL_BIT_OR; }
"^" { ECHO; return LSL_BIT_XOR; }
"&" { ECHO; return LSL_BIT_AND; }
"!=" { ECHO; return LSL_NOT_EQUAL; }
"==" { ECHO; return LSL_EQUAL; }
">=" { ECHO; return LSL_GREATER_EQUAL; }
"<=" { ECHO; return LSL_LESS_EQUAL; }
">" { ECHO; return LSL_GREATER_THAN; }
"<" { ECHO; return LSL_LESS_THAN; }
">>" { ECHO; return LSL_RIGHT_SHIFT; }
"<<" { ECHO; return LSL_LEFT_SHIFT; }
"+" { ECHO; return LSL_ADD; }
"-" { ECHO; return LSL_SUBTRACT; }
"*" { ECHO; return LSL_MULTIPLY; }
"%" { ECHO; return LSL_MODULO; }
"/" { ECHO; return LSL_DIVIDE; }
"!" { ECHO; return LSL_BOOL_NOT; }
"~" { ECHO; return LSL_BIT_NOT; }
"(" { ECHO; return LSL_PARENTHESIS_OPEN; }
")" { ECHO; return LSL_PARENTHESIS_CLOSE; }
/* Everything else */
. %{ ECHO; printf(" unexpected character.\n"); %}
%%
int XXyywrap()
{
#ifdef FLEX_SCANNER
#ifndef LL_WINDOWS
// get gcc to stop complaining about lack of use of yyunput
(void) yyunput;
(void) input;
#endif
#endif
return(1);
}
|