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