/* ** lex file for xgc syntax */ /* Lots of stuff stolen from gwm's wool.lex */ %{ #include #include #include "gram.h" #include "constants.h" #if defined(FLEX_SCANNER) && !defined(YY_FLEX_LEX_COMPAT) int yylineno; #endif %} %p 4000 %a 3000 number [0-9]+ word [^\n\t ]+ string \"([^"]|\\.)*\" %% [Rr]un { return (RUN); } [Ff]unction { return (FUNCTION); } [Cc]lear { yylval.num = GXclear; return (FUNCTIONTYPE); } [Aa]nd { yylval.num = GXand; return (FUNCTIONTYPE); } [Aa]ndReverse { yylval.num = GXandReverse; return (FUNCTIONTYPE); } [Cc]opy { yylval.num = GXcopy; return (FUNCTIONTYPE); } [Aa]ndInverted { yylval.num = GXandInverted; return (FUNCTIONTYPE); } [Nn]oop { yylval.num = GXnoop; return (FUNCTIONTYPE); } [Xx]or { yylval.num = GXxor; return (FUNCTIONTYPE); } [Oo]r { yylval.num = GXor; return (FUNCTIONTYPE); } [Nn]or { yylval.num = GXnor; return (FUNCTIONTYPE); } [Ee]quiv { yylval.num = GXequiv; return (FUNCTIONTYPE); } [Ii]nvert { yylval.num = GXinvert; return (FUNCTIONTYPE); } [Oo]rReverse { yylval.num = GXorReverse; return (FUNCTIONTYPE); } [Cc]opyInverted { yylval.num = GXcopyInverted; return (FUNCTIONTYPE); } [Oo]rInverted { yylval.num = GXorInverted; return (FUNCTIONTYPE); } [Nn]and { yylval.num = GXnand; return (FUNCTIONTYPE); } [Ss]et { yylval.num = GXset; return (FUNCTIONTYPE); } [Tt]est { return (TEST); } CopyArea { yylval.num = CopyArea; return (TESTTYPE); } CopyPlane { yylval.num = CopyPlane; return (TESTTYPE); } PolyPoint { yylval.num = PolyPoint; return (TESTTYPE); } PolyLine { yylval.num = PolyLine; return (TESTTYPE); } PolySegment { yylval.num = PolySegment; return (TESTTYPE); } PolyRectangle { yylval.num = PolyRectangle; return (TESTTYPE); } PolyArc { yylval.num = PolyArc; return (TESTTYPE); } FillPolygon { yylval.num = FillPolygon; return (TESTTYPE); } PolyFillRect { yylval.num = PolyFillRect; return (TESTTYPE); } PolyFillArc { yylval.num = PolyFillArc; return (TESTTYPE); } PutImage { yylval.num = PutImage; return (TESTTYPE); } GetImage { yylval.num = GetImage; return (TESTTYPE); } PolyText8 { yylval.num = PolyText8; return (TESTTYPE); } ImageText8 { yylval.num = ImageText8; return (TESTTYPE); } PolyText16 { yylval.num = PolyText16; return (TESTTYPE); } ImageText16 { yylval.num = ImageText16; return (TESTTYPE); } [Ll]inestyle { return (LINESTYLE); } OnOffDash { yylval.num = LineOnOffDash; return (LINESTYLETYPE); } DoubleDash { yylval.num = LineDoubleDash; return (LINESTYLETYPE); } [Cc]apstyle { return (CAPSTYLE); } NotLast { yylval.num = CapNotLast; return (CAPSTYLETYPE); } Butt { yylval.num = CapButt; return (CAPSTYLETYPE); } Projecting { yylval.num = CapProjecting; return (CAPSTYLETYPE); } [Jj]oinstyle { return (JOINSTYLE); } Miter { yylval.num = JoinMiter; return (JOINSTYLETYPE); } Bevel { yylval.num = JoinBevel; return (JOINSTYLETYPE); } Round { return (ROUND); } [Ff]illstyle { return (FILLSTYLE); } Tiled { yylval.num = FillTiled; return (FILLSTYLETYPE); } Stippled { yylval.num = FillStippled; return (FILLSTYLETYPE); } OpaqueStippled { yylval.num = FillOpaqueStippled; return (FILLSTYLETYPE); } Solid { return (SOLID); } [Ff]illrule { return (FILLRULE); } EvenOdd { yylval.num = EvenOddRule; return (FILLRULETYPE); } Winding { yylval.num = WindingRule; return (FILLRULETYPE); } [Aa]rcmode { return (ARCMODE); } Chord { yylval.num = ArcChord; return (ARCMODETYPE); } PieSlice { yylval.num = ArcPieSlice; return (ARCMODETYPE); } [Ff]oreground { return (FOREGROUND); } [Bb]ackground { return (BACKGROUND); } [Ll]inewidth { return (LINEWIDTH); } [Pp]lanemask { return (PLANEMASK); } [Dd]ashlist { return (DASHLIST); } [Ff]ont { return (FONT); } [Pp]ercent { return (PERCENT); } {number} { (void) sscanf ((char *)yytext, "%d", &yylval.num); return (NUMBER); } {string} { yylval.ptr = (char *) yytext; return (STRING); } \#[^\n]*\n { ; } [\t ] { ; } \n { return ('\n'); } {word} { yylval.ptr = (char *) yytext; return (STRING); } . { fprintf(stderr, "xgc: bad character `%s', line %d\n", yytext, yylineno); } %% #ifndef yywrap int yywrap(void) { return (1); } #endif