author | Eugen Sawin <sawine@me73.com> |
Wed, 30 Mar 2011 15:52:38 +0200 | |
changeset 17 | a25ebfdd39f7 |
permissions | -rw-r--r-- |
sawine@1 | 1 |
%{ |
sawine@1 | 2 |
#include <stdio.h> |
sawine@1 | 3 |
#include <string.h> |
sawine@1 | 4 |
#include "atccl_parser.tab.h" |
sawine@1 | 5 |
|
sawine@1 | 6 |
int line_no = 1; |
sawine@1 | 7 |
char line_buffer[1024]; |
sawine@1 | 8 |
char* installId(); |
sawine@1 | 9 |
|
sawine@1 | 10 |
%} |
sawine@1 | 11 |
|
sawine@1 | 12 |
%option nounput |
sawine@1 | 13 |
|
sawine@1 | 14 |
delim [ \t] |
sawine@1 | 15 |
ws {delim}+ |
sawine@1 | 16 |
letter [A-Za-z] |
sawine@1 | 17 |
digit [0-9] |
sawine@1 | 18 |
id {letter}({letter}|{digit}|_)* |
sawine@1 | 19 |
real {digit}+\.{digit}+ |
sawine@1 | 20 |
|
sawine@1 | 21 |
%% |
sawine@1 | 22 |
|
sawine@1 | 23 |
copx { return COPX; } |
sawine@1 | 24 |
adep { return ADEP; } |
sawine@1 | 25 |
ades { return ADES; } |
sawine@1 | 26 |
rwy { return RWY; } |
sawine@1 | 27 |
route { return ROUTE; } |
sawine@1 | 28 |
atyp { return ATYP; } |
sawine@1 | 29 |
equip { return EQUIP; } |
sawine@1 | 30 |
tas { return TAS; } |
sawine@1 | 31 |
frul { return FRUL; } |
sawine@1 | 32 |
ftyp { return FTYP; } |
sawine@1 | 33 |
travel_type { return TRAVEL_TYPE; } |
sawine@1 | 34 |
time_separation { return TIMESEP; } |
sawine@1 | 35 |
time_sep { return TIMESEP; } |
sawine@1 | 36 |
fl { return FL; } |
sawine@1 | 37 |
constraint { return CONSTRNT; } |
sawine@1 | 38 |
pattern { return PATTERN; } |
sawine@1 | 39 |
flowpoint { return FLOWP; } |
sawine@1 | 40 |
|
sawine@1 | 41 |
|
sawine@1 | 42 |
is { return IS; } |
sawine@1 | 43 |
in { return IN; } |
sawine@1 | 44 |
not { return NOT; } |
sawine@1 | 45 |
less { return LESS; } |
sawine@1 | 46 |
greater { return GREATER; } |
sawine@1 | 47 |
than { return THAN; } |
sawine@1 | 48 |
and { return AND; } |
sawine@1 | 49 |
or { return OR; } |
sawine@1 | 50 |
at { return AT; } |
sawine@1 | 51 |
from { return FROM; } |
sawine@1 | 52 |
until { return UNTIL; } |
sawine@1 | 53 |
on { return ON; } |
sawine@1 | 54 |
|
sawine@1 | 55 |
{digit}+ { yylval.integer = atoi(yytext); return INTEGER; } |
sawine@1 | 56 |
{real} { yylval.real = atof(yytext); return REAL; } |
sawine@1 | 57 |
{id} { yylval.string = installId(); return STRING; } |
sawine@1 | 58 |
\" { return QUOTE; } |
sawine@1 | 59 |
#.*$ { return COM; } |
sawine@1 | 60 |
{ws} { } |
sawine@1 | 61 |
\n.* { strcpy(line_buffer, yytext+1); line_no++; yyless(1); } |
sawine@1 | 62 |
. { return yytext[0]; } |
sawine@1 | 63 |
%% |
sawine@1 | 64 |
|
sawine@1 | 65 |
char* installId() |
sawine@1 | 66 |
{ |
sawine@1 | 67 |
static char* no_string = "$$$NO STRING$$$"; |
sawine@1 | 68 |
char* id = no_string; |
sawine@1 | 69 |
if (id_table_no < MAX_ID_TABLE_NO) |
sawine@1 | 70 |
{ |
sawine@1 | 71 |
id = strdup(yytext); |
sawine@1 | 72 |
id_table[id_table_no++] = id; |
sawine@1 | 73 |
} |
sawine@1 | 74 |
else |
sawine@1 | 75 |
{ |
sawine@1 | 76 |
yyerror("Maximum number of string literals used"); |
sawine@1 | 77 |
} |
sawine@1 | 78 |
return id; |
sawine@1 | 79 |
} |