%token '=' '"' ':' ';' ',' %token INT FLOAT FT_SIZE_VAL COLOR %token HREF SYMB REFERENCE %token FILL STROKE STYLE %token POINTS TRANSFORM %token FONT_FAMILY FONT_SIZE FONT_FAM_VAL %token TAG_CL %token TITLE DESC %token CIRC_OP CX CY R %token SVG_BEG WIDTH HEIGHT SVG_END %token G_BEG ID G_END %token LINE_OP X1 Y1 X2 Y2 %token USE_OP XLINK STYLE %token POLYL_OP %{ #include "utils.c" %} %% Text: | Text SvgTag { myPause(""); } | Text TITLE { myPause(""); } | Text DESC { myPause("<DESC>"); } | Text Circle { myPause("<Circle>"); } | Text Line { myPause("<Line>"); } | Text GroupBeg { myPause("<GroupBeg>"); } | Text G_END { myPause("<G_END>"); } | Text Use { myPause("<use>"); } | Text Polyline { myPause("<Polyline>"); } | Text SVG_END { myPause("<SVG_END>"); } | Text IntList { myPause("<IntList>"); } | Text IntPairList { myPause("<IntPairList>"); } | Text SeparateAttrVal { myPause("<SeparateAttrVal>"); } | Text Style { myPause("<Style>"); } | Text PointList { myPause("<PointList>"); } | Text Transform { myPause("<Transform>"); } | Text FuncCall { myPause("<FuncCall>"); } ; Use: USE_OP XLINK ':' HREF '=' '"' REFERENCE '"' Transform TAG_CL ; SvgTag: SVG_BEG SeparateAttrVal SeparateAttrVal '>' ; Circle: CIRC_OP SeparateAttrVal SeparateAttrVal SeparateAttrVal Style TAG_CL | CIRC_OP SeparateAttrVal SeparateAttrVal SeparateAttrVal SeparateAttrVal SeparateAttrVal TAG_CL ; Polyline: POLYL_OP PointList Style TAG_CL | POLYL_OP PointList TAG_CL ; Line: LINE_OP SeparateAttrVal SeparateAttrVal SeparateAttrVal SeparateAttrVal Style TAG_CL ; GroupBeg: G_BEG SeparateAttrVal '>' ; Style: STYLE '=' '"' AttValueList '"' ; AttValueList: AttValue { myPause("<AttValue>"); } | AttValueList AttValue { myPause("<AttValue>"); } ; SeparateAttrVal : FILL '=' '"' COLOR '"' | STROKE '=' '"' COLOR '"' | WIDTH '=' '"' INT '"' | HEIGHT '=' '"' INT '"' | CX '=' '"' INT '"' | CY '=' '"' INT '"' | R '=' '"' INT '"' | X1 '=' '"' INT '"' | X2 '=' '"' INT '"' | Y1 '=' '"' INT '"' | Y2 '=' '"' INT '"' | ID '=' '"' SYMB '"' ; AttValue: FILL ':' COLOR ';' | STROKE ':' COLOR ';' | FONT_FAMILY ':' FONT_FAM_VAL ';' | FONT_SIZE ':' FT_SIZE_VAL ';' ; PointList : POINTS '=' '"' IntPairList '"' ; Transform: TRANSFORM '=' '"' FuncCallList '"' ; FuncCallList: FuncCall | FuncCallList FuncCall ; FuncCall: SYMB '(' IntList ')' { myPause("<FuncCall1>"); } | SYMB '(' IntPair ')' { myPause("<FuncCall2>"); } ; IntList: INT { myPause("<INT>"); } | IntList ',' INT { myPause("<INT>"); } ; IntPairList: IntPair | IntPairList ',' IntPair ; IntPair: INT INT ; %%