blob: 26ac229dafab58a29a4d939f779694cc7f9c0746 (
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
|
%option noyywrap yylineno
%{
#include "parser.tab.h"
%}
DIGIT [0-9]
IDENT [A-Za-z][A-Za-z0-9]*
WHITESPACE [ \t\r\n]+
%%
"skip" { return TOKEN_SKIP; }
"if" { return TOKEN_IF; }
"then" { return TOKEN_THEN; }
"else" { return TOKEN_ELSE; }
"end" { return TOKEN_END; }
"while" { return TOKEN_WHILE; }
"do" { return TOKEN_DO; }
"var" { return TOKEN_VAR; }
"in" { return TOKEN_IN; }
"(" { return TOKEN_LEFT_PARENTHESIS; }
")" { return TOKEN_RIGHT_PARENTHESIS; }
";" { return TOKEN_SEMICOLON; }
":=" { return TOKEN_ASSIGN; }
"+" { return TOKEN_PLUS; }
"-" { return TOKEN_MINUS; }
"*" { return TOKEN_MULTIPLY; }
"or" { return TOKEN_OR; }
"and" { return TOKEN_AND; }
"not" { return TOKEN_NOT; }
"=" { return TOKEN_EQUALS; }
"#" { return TOKEN_NOT_EQUALS; }
"<=" { return TOKEN_LESS_EQUAL; }
"<" { return TOKEN_LESS_THAN; }
">=" { return TOKEN_GREATER_EQUAL; }
">" { return TOKEN_GREATER_THAN; }
{DIGIT}+ { yylval.num = atoi(yytext); return TOKEN_NUMERAL; }
{IDENT} { yylval.id = strdup(yytext); return TOKEN_IDENTIFIER; }
{WHITESPACE} { }
. { fprintf(stderr, "Unknown char: %s\n", yytext); }
%%
|