|
|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T g
Length: 2506 (0x9ca)
Types: TextFile
Names: »gram.y«
└─⟦276d19d6e⟧ Bits:30007243 EUUGD5_I: X11R5
└─⟦af7d3f39a⟧ »./mit-2/mit-2.00«
└─⟦0abaffd9e⟧
└─⟦this⟧ »mit/demos/xgc/gram.y«
/*
** grammar for xgc syntax
*/
%{
#define YYDEBUG 1
#include <stdio.h>
#include <X11/X.h>
#include "constants.h"
extern int yylineno;
extern FILE *yyin;
extern void GC_change_function();
extern void GC_change_foreground();
extern void GC_change_background();
extern void GC_change_linewidth();
extern void GC_change_linestyle();
extern void GC_change_capstyle();
extern void GC_change_joinstyle();
extern void GC_change_fillstyle();
extern void GC_change_fillrule();
extern void GC_change_arcmode();
extern void GC_change_dashlist();
extern void GC_change_planemask();
extern void change_test();
extern void change_percent();
extern void run_test();
%}
%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); }
;
%%
yyerror(s)
char *s;
{
fprintf(stderr, "xgc: syntax error, line %d\n", yylineno);
}