sawine@1: %{ sawine@1: #include sawine@1: #include sawine@1: #include "atccl_parser.tab.h" sawine@1: sawine@1: int line_no = 1; sawine@1: char line_buffer[1024]; sawine@1: char* installId(); sawine@1: sawine@1: %} sawine@1: sawine@1: %option nounput sawine@1: sawine@1: delim [ \t] sawine@1: ws {delim}+ sawine@1: letter [A-Za-z] sawine@1: digit [0-9] sawine@1: id {letter}({letter}|{digit}|_)* sawine@1: real {digit}+\.{digit}+ sawine@1: sawine@1: %% sawine@1: sawine@1: copx { return COPX; } sawine@1: adep { return ADEP; } sawine@1: ades { return ADES; } sawine@1: rwy { return RWY; } sawine@1: route { return ROUTE; } sawine@1: atyp { return ATYP; } sawine@1: equip { return EQUIP; } sawine@1: tas { return TAS; } sawine@1: frul { return FRUL; } sawine@1: ftyp { return FTYP; } sawine@1: travel_type { return TRAVEL_TYPE; } sawine@1: time_separation { return TIMESEP; } sawine@1: time_sep { return TIMESEP; } sawine@1: fl { return FL; } sawine@1: constraint { return CONSTRNT; } sawine@1: pattern { return PATTERN; } sawine@1: flowpoint { return FLOWP; } sawine@1: sawine@1: sawine@1: is { return IS; } sawine@1: in { return IN; } sawine@1: not { return NOT; } sawine@1: less { return LESS; } sawine@1: greater { return GREATER; } sawine@1: than { return THAN; } sawine@1: and { return AND; } sawine@1: or { return OR; } sawine@1: at { return AT; } sawine@1: from { return FROM; } sawine@1: until { return UNTIL; } sawine@1: on { return ON; } sawine@1: sawine@1: {digit}+ { yylval.integer = atoi(yytext); return INTEGER; } sawine@1: {real} { yylval.real = atof(yytext); return REAL; } sawine@1: {id} { yylval.string = installId(); return STRING; } sawine@1: \" { return QUOTE; } sawine@1: #.*$ { return COM; } sawine@1: {ws} { } sawine@1: \n.* { strcpy(line_buffer, yytext+1); line_no++; yyless(1); } sawine@1: . { return yytext[0]; } sawine@1: %% sawine@1: sawine@1: char* installId() sawine@1: { sawine@1: static char* no_string = "$$$NO STRING$$$"; sawine@1: char* id = no_string; sawine@1: if (id_table_no < MAX_ID_TABLE_NO) sawine@1: { sawine@1: id = strdup(yytext); sawine@1: id_table[id_table_no++] = id; sawine@1: } sawine@1: else sawine@1: { sawine@1: yyerror("Maximum number of string literals used"); sawine@1: } sawine@1: return id; sawine@1: }