%{ #include #include #include #include "mis.h" #include "order.h" #include "gram.c" #include "mis.c" #include "allocator.c" #include "order.c" %} %token INT REAL WORD SUBCASE PERM TAKE_TWO_OUT_OF MIS TOTAL ANY GIVES CHOICE CONSTANT NOT END OMITTED AT_LEAST WITH_OTHERS CALLS NUMBER SPECIAL REGorSUBDOM CANONICAL COMMON TWO_OF_LAST_THREE AND REDUCED UNION EACH A_NEIGHBOUR A_COMMON_NEIGHBOUR NEIGHBOURS EDGE DEGREE LPAR RPAR LCURLY RCURLY LSQUARE RSQUARE COMMA SEMICOLON COLON EOF EQUAL LT LE GT PLUS DASH STAR EXPO A B G ALPHA ARROW %% file : fileheader caselist END {return;} ; caselist : caselist case | case ; case : caseheader casetreatment ; caseheader : SUBCASE NUMBER INT COLON ; optdegree : DEGREE | ; casetreatment : graphheader reasonnottreated | graph PERM COLON permu GIVES graph algorithm ; permu : permu INDEX ARROW INDEX | INDEX ARROW INDEX ; INDEX : INT ; Bvertex : B INDEX ; fileheader : sort INT ; sort : DEGREE | TAKE_TWO_OUT_OF ; algorithm : CALLS callslist total | CALLS SPECIAL ; reasonnottreated : NOT REGorSUBDOM graphdetails | NOT CANONICAL based PERM COLON permu graphdetails ; based : LPAR EDGE RPAR | LPAR EDGE DEGREE RPAR | ; graph : graphheader graphdetails; graphdetails : degrees SEMICOLON adjacencies ; graphheader : sort optdegree INT COLON ; degrees : degrees degree | degree ; degree : INT COMMA INT | ANY ; adjacencies: adjacencies adjacency | adjacency ; adjacency : INT LPAR INT DASH INT RPAR | INT LPAR INT LSQUARE INT RSQUARE RPAR | STAR LPAR RPAR | INT LPAR RPAR ; callslist : callslist call | call ; call : LPAR INT RPAR COLON MIS subgraph timing ; subgraph : LPAR G minus chosen minus neighbours minus rejected forced RPAR ; chosen : vertexset ; neighbours : vertexset ; rejected : vertexset ; forced : forceout forcein | forceout | forcein | ; forceout : minus INT COMMON NEIGHBOURS Bvertex WITH_OTHERS | minus INT COMMON NEIGHBOURS Bvertex AND Bvertex | minus INT COMMON NEIGHBOURS TWO_OF_LAST_THREE LPAR Bvertex AND Bvertex RPAR ; forcein : minus INT NEIGHBOURS LPAR blist RPAR REDUCED DEGREE INT ; vertexset : LCURLY vertices RCURLY | vertex ; vertices : vertex | vertex and vertices | ; and : COMMA | PLUS ; vertex : A | Bvertex | INT NEIGHBOURS Bvertex | AT_LEAST INT NEIGHBOURS Bvertex | INT COMMON NEIGHBOURS Bvertex AND Bvertex ; blist : Bvertex | blist COMMA Bvertex ; timing : COLON coefficient power EQUAL REAL | COLON power EQUAL REAL | OMITTED COLON text Bvertex text INT text ; coefficient : constant LPAR comment COLON justification RPAR STAR ; constant : CONSTANT | power ; justification : Bvertex | A_NEIGHBOUR Bvertex | Bvertex AND Bvertex | Bvertex COMMA Bvertex AND Bvertex | NEIGHBOURS Bvertex | NEIGHBOURS EACH Bvertex AND Bvertex | UNION NEIGHBOURS Bvertex AND Bvertex | NEIGHBOURS Bvertex AND LCURLY Bvertex COMMA Bvertex RCURLY ; comment : WORD comment | INT comment | DEGREE comment | NOT comment | AND comment | LE comment | EQUAL comment | ; power : ALPHA EXPO minus INT ; total : TOTAL EQUAL REAL ; minus : DASH ; text : WORD text | ; %% #include #include #include "lex.yy.c" main() { yyparse(); } yyerror(char *s) { printf ("%s line number %i\n",s,line); }