12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- /*
- ** grammar for xgc syntax
- */
- %{
- #define YYDEBUG 1
- #include <stdio.h>
- #include <X11/X.h>
- #include <X11/Intrinsic.h>
- #include "xgc.h"
- extern int yylineno;
- %}
- %union
- {
- int num;
- char *ptr;
- };
- %token <ptr> STRING
- %token <num> NUMBER
- %token <num> RUN
- %token <num> FUNCTION FUNCTIONTYPE
- %token <num> TEST TESTTYPE
- %token <num> LINESTYLE LINESTYLETYPE
- %token <num> CAPSTYLE CAPSTYLETYPE
- %token <num> JOINSTYLE JOINSTYLETYPE
- %token <num> ROUND SOLID
- %token <num> FILLSTYLE FILLSTYLETYPE
- %token <num> FILLRULE FILLRULETYPE
- %token <num> ARCMODE ARCMODETYPE
- %token <num> FOREGROUND BACKGROUND LINEWIDTH PLANEMASK DASHLIST PERCENT
- %token <num> FONT
- %%
- all : stmts
- ;
- stmts : /* empty */
- | stmts '\n'
- | stmts stmt '\n'
- ;
- stmt : error
- | RUN
- { run_test(); }
- | TEST TESTTYPE
- { change_test ($2, TRUE); }
- | FUNCTION FUNCTIONTYPE
- { GC_change_function ($2, TRUE); }
- | LINESTYLE LINESTYLETYPE
- { GC_change_linestyle ($2, TRUE); }
- | LINESTYLE SOLID
- { GC_change_linestyle (LineSolid, TRUE); }
- | CAPSTYLE CAPSTYLETYPE
- { GC_change_capstyle ($2, TRUE); }
- | CAPSTYLE ROUND
- { GC_change_capstyle (CapRound, TRUE); }
- | JOINSTYLE JOINSTYLETYPE
- { GC_change_joinstyle ($2, TRUE); }
- | JOINSTYLE ROUND
- { GC_change_joinstyle (JoinRound, TRUE); }
- | FILLSTYLE FILLSTYLETYPE
- { GC_change_fillstyle ($2, TRUE); }
- | FILLSTYLE SOLID
- { GC_change_fillstyle (FillSolid, TRUE); }
- | FILLRULE FILLRULETYPE
- { GC_change_fillrule ($2, TRUE); }
- | ARCMODE ARCMODETYPE
- { GC_change_arcmode ($2, TRUE); }
- | FOREGROUND NUMBER
- { GC_change_foreground ($2, TRUE); }
- | BACKGROUND NUMBER
- { GC_change_background ($2, TRUE); }
- | LINEWIDTH NUMBER
- { GC_change_linewidth ($2, TRUE); }
- | PLANEMASK NUMBER
- { GC_change_planemask ($2, TRUE); }
- | DASHLIST NUMBER
- { GC_change_dashlist ($2, TRUE); }
- | FONT STRING
- { GC_change_font ($2, TRUE); }
- | PERCENT NUMBER
- { change_percent ($2, TRUE); }
- ;
- %%
- void
- yyerror(const char *s)
- {
- fprintf(stderr, "xgc: syntax error, line %d\n", yylineno);
- }
|