blob: 92acf48baed63802102d495d98febb7cd665a52d (
plain) (
blame)
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
|
%{
/* vim: set ft=lex: */
//#include "lexer.hpp"
#include "../strings/rstring.hpp"
#include "../strings/zstring.hpp"
#include "../io/cxxstdio.hpp"
#include "../sexpr/lexer.hpp"
#include "parser.hpp"
#define yylval spell_converterlval
RString *str(const char *s)
{
return new RString(ZString(strings::really_construct_from_a_pointer, s, nullptr));
}
%}
%option noyywrap
%option prefix="spell_converter"
%option nounput
%option noinput
%%
"S" { yylval.s = str(yytext); return DIR; }
"SW" { yylval.s = str(yytext); return DIR; }
"W" { yylval.s = str(yytext); return DIR; }
"NW" { yylval.s = str(yytext); return DIR; }
"N" { yylval.s = str(yytext); return DIR; }
"NE" { yylval.s = str(yytext); return DIR; }
"E" { yylval.s = str(yytext); return DIR; }
"SE" { yylval.s = str(yytext); return DIR; }
"=" { return '='; }
"==" { return EQ; }
"<>" { return NEQ; }
"!=" { return NEQ; }
">" { return '>'; }
"<" { return '<'; }
">=" { return GTE; }
"<=" { return LTE; }
"(" { return '('; }
")" { return ')'; }
"+" { return '+'; }
"-" { return '-'; }
"*" { return '*'; }
"/" { return '/'; }
"%" { return '%'; }
"&&" { return ANDAND; }
"||" { return OROR; }
";" { return ';'; }
":" { return ':'; }
"," { return ','; }
"@" { return '@'; }
"|" { return '|'; }
"[" { return '['; }
"]" { return ']'; }
"&" { return '&'; }
"^" { return '^'; }
"." { return '.'; }
"<<" { return SHL; }
">>" { return SHR; }
"PROCEDURE" { return PROCEDURE; }
"CALL" { return CALL; }
"OR" { return OR; }
"TO" { return TO; }
"TOWARDS" { return TOWARDS; }
"TELEPORT-ANCHOR" { return TELEPORT_ANCHOR; }
"SILENT" { return SILENT; }
"LOCAL" { return LOCAL; }
"NONMAGIC" { return NONMAGIC; }
"SPELL" { return SPELL; }
"LET" { return LET; }
"IN" { return IN; }
"END" { return END; }
"=>" { return DARROW; }
"STRING" { return STRING_TY; }
"REQUIRE" { return REQUIRE; }
"CATALYSTS" { return CATALYSTS; }
"COMPONENTS" { return COMPONENTS; }
"MANA" { return MANA; }
"CASTTIME" { return CASTTIME; }
"SKIP" { return SKIP; }
"ABORT" { return ABORT; }
"BREAK" { return BREAK; }
"EFFECT" { return EFFECT_; }
"ATEND" { return ATEND; }
"ATTRIGGER" { return ATTRIGGER; }
"CONST" { return CONST; }
"PC" { return PC_F; }
"NPC" { return NPC_F; }
"MOB" { return MOB_F; }
"ENTITY" { return ENTITY_F; }
"TARGET" { return TARGET_F; }
"IF" { return IF; }
"THEN" { return THEN; }
"ELSE" { return ELSE; }
"FOREACH" { return FOREACH; }
"FOR" { return FOR; }
"DO" { return DO; }
"WAIT" { return SLEEP; }
\{([^\}]|\\.)*\} { yylval.s = str(yytext); return SCRIPT_DATA; }
\"([^\"]|\\.)*\" { yylval.s = str(yytext); return STRING; }
"-"?[0-9]+ { yylval.s = str(yytext); return INT; }
"0x"[0-9a-fA-F]+ { yylval.s = str(yytext); return INT; }
[a-zA-Z][-_a-zA-Z0-9]* { yylval.s = str(yytext); return ID; }
"#".*$ { PRINTF("%s\n", sexpr::escape(*str(yytext + 1))); }
"//".*$ { PRINTF("%s\n", sexpr::escape(*str(yytext + 2))); }
[ \n\t\r] /* ignore whitespace */
. { abort(); }
%%
// nothing to see here, move along
|