|
|
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: 7008 (0x1b60)
Types: TextFile
Names: »grammar.y«
└─⟦b20c6495f⟧ Bits:30007238 EUUGD18: Wien-båndet, efterår 1987
└─⟦this⟧ »EUUGD18/General/Trek73/src/grammar.y«
%token <dval> NUMBER
%token <sval> NAME
%token ABORT
%token ALL
%token CONTROL
%token CORB
%token COURSE
%token DAMAGE
%token DEAD
%token DELAY
%token DEMAND
%token DESTR
%token DET
%token DISPLAY
%token ELUDE
%token ENG
%token FIRE
%token HELP
%token JETT
%token LAUNCH
%token LOAD
%token LOCK
%token PARAM
%token PHASER
%token POWER
%token PROBE
%token PROXIMITY
%token PURSUE
%token ROTATE
%token SAVE
%token SCAN
%token SPREAD
%token STATUS
%token SURREND
%token SURV
%token TACTIC
%token TOWARD
%token TUBE
%token UNLOAD
%token VERSION
%token WARP
%type <dval> number1
%type <dval> number2
%type <dval> number3
%type <dval> number4
%type <sval> name
%{
#ident "@(#) TREK73 $Header: grammar.y,v 1.2 87/10/09 12:24:34 okamoto Exp $"
/*
* $Source: /ccc/okamoto/src/trek/src/RCS/grammar.y,v $
*
* $Header: grammar.y,v 1.2 87/10/09 12:24:34 okamoto Exp $
*
* $Log: grammar.y,v $
* Revision 1.2 87/10/09 12:24:34 12:24:34 okamoto (Jeff Okamoto)
* Added many extra stuff
*
* Revision 1.1 87/10/09 12:22:55 12:22:55 okamoto (Jeff Okamoto)
* Initial revision
*
*/
#include "union.h"
extern char parsed[];
char string[80];
double num1;
double num2;
double num3;
double num4;
%}
%%
orders :
| '\n'
| error
{ yyclearin; }
| phfire
| tufire
| phlock
| tulock
| phrot
| turot
| phstat
| tustat
| tuload
| probe
| control
| tactical
| display
| pursue
| elude
| course
| damage
| scan
| power
| jettison
| detonate
| dead
| param
| corb
| surr
| esurr
| selfd
| abort
| surv
| version
| save
| help
;
number1 : NUMBER
{ num1 = yylval.dval; }
;
number2 : NUMBER
{ num2 = yylval.dval; }
;
number3 : NUMBER
{ num3 = yylval.dval; }
;
number4 : NUMBER
{ num4 = yylval.dval; }
;
name : NAME
{ strcpy(string, yylval.sval); }
;
phfire : FIRE PHASER number1 SPREAD number2
{ sprintf(parsed, "1 %.0f %.0f", num1, num2);}
| FIRE PHASER number1
{ sprintf(parsed, "1 %.0f", num1); }
| FIRE ALL PHASER SPREAD number1
{ sprintf(parsed, "1 all %.0f", num1); }
| FIRE ALL PHASER
{ strcpy(parsed, "1 all"); }
| FIRE PHASER
{ strcpy(parsed, "1"); }
;
tufire : FIRE TUBE number1
{ sprintf(parsed, "2 %.0f", num1); }
| FIRE ALL TUBE
{ sprintf(parsed, "2 all"); }
| FIRE TUBE
{ strcpy(parsed, "2"); }
;
phlock : LOCK PHASER number1 name
{ sprintf(parsed, "3 %.0f %s", num1, string);}
| LOCK PHASER number1
{ sprintf(parsed, "3 %.0f", num1); }
| LOCK ALL PHASER name
{ (void)sprintf(parsed, "3 all %s", string); }
| LOCK ALL PHASER
{ strcpy(parsed, "3 all"); }
| LOCK PHASER
{ strcpy(parsed, "3"); }
;
tulock : LOCK TUBE number1 name
{ sprintf(parsed, "4 %.0f %s", num1, string);}
| LOCK TUBE number1
{ sprintf(parsed, "4 %.0f", num1); }
| LOCK ALL TUBE name
{ (void)sprintf(parsed, "4 all %s", string); }
| LOCK ALL TUBE
{ strcpy(parsed, "4 all"); }
| LOCK TUBE
{ strcpy(parsed, "4"); }
;
phrot : ROTATE ALL PHASER number1
{ sprintf(parsed, "5 all %.0f", num1); }
| ROTATE ALL PHASER
{ strcpy(parsed, "5 all"); }
| ROTATE PHASER number1 number2
{ sprintf(parsed,"5 %.0f %.0f", num1, num2); }
| ROTATE PHASER number1
{ sprintf(parsed,"5 %.0f", num1); }
;
turot : ROTATE ALL TUBE number1
{ sprintf(parsed, "6 all %.0f", num1); }
| ROTATE ALL TUBE
{ strcpy(parsed, "6 all"); }
| ROTATE TUBE number1 number2
{ sprintf(parsed,"6 %.0f %.0f", num1, num2); }
| ROTATE TUBE number1
{ sprintf(parsed,"6 %.0f", num1); }
;
phstat : PHASER STATUS
{ strcpy(parsed, "7"); }
;
tustat : TUBE STATUS
{ strcpy(parsed, "8"); }
;
tuload : LOAD ALL TUBE
{ strcpy(parsed, "9 l all"); }
| UNLOAD ALL TUBE
{ strcpy(parsed, "9 u all"); }
| LOAD TUBE number1
{ sprintf(parsed, "9 l %.0f", num1); }
| UNLOAD TUBE number1
{ sprintf(parsed, "9 u %.0f", num1); }
| LOAD TUBE
{ strcpy(parsed, "9 l"); }
| UNLOAD TUBE
{ strcpy(parsed, "9 u"); }
;
probe : LAUNCH PROBE
{ strcpy(parsed, "10"); }
| LAUNCH PROBE number1
{ sprintf(parsed, "10 %.0f", num1); }
| LAUNCH PROBE number1 DELAY number2
{sprintf(parsed, "10 %.0f %.0f", num1, num2); }
| LAUNCH PROBE number1 DELAY number2 PROXIMITY number3
{ sprintf(parsed, "10 %.0f %.0f %.0f", num1, num2, num3); }
| LAUNCH PROBE number1 DELAY number2 PROXIMITY number3 TOWARD name
{ sprintf(parsed, "10 %.0f %.0f %.0f %s", num1, num2, num3, string); }
| LAUNCH PROBE number1 DELAY number2 PROXIMITY number3 COURSE number4
{ sprintf(parsed, "10 %.0f %.0f %.0f\n\r %.0f", num1, num2, num3, num4); }
;
control : CONTROL PROBE number1
{ sprintf(parsed, "11 %.0f", num1); }
| CONTROL PROBE
{ strcpy(parsed, "11"); }
| PROBE CONTROL number1
{ sprintf(parsed, "11 %.0f", num1); }
| PROBE CONTROL
{ strcpy(parsed, "11"); }
;
tactical: TACTIC
{ strcpy(parsed, "12"); }
;
display : DISPLAY number1
{ sprintf(parsed, "13 %.0f", num1); }
| DISPLAY
{ strcpy(parsed, "13"); }
;
pursue : PURSUE name WARP number1
{ sprintf(parsed, "14 %s %f", string, num1);}
| PURSUE name number1
{ sprintf(parsed, "14 %s %f", string, num1);}
| PURSUE name
{ sprintf(parsed, "14 %s", string); }
| PURSUE
{ strcpy(parsed, "14"); }
;
elude : ELUDE name WARP number1
{ sprintf(parsed, "15 %s %f", string, num1);}
| ELUDE name number1
{ sprintf(parsed, "15 %s %f", string, num1);}
| ELUDE name
{ sprintf(parsed, "15 %s", string); }
| ELUDE
{ strcpy(parsed, "15"); }
;
course : COURSE number1 WARP number2
{ sprintf(parsed, "16 %.0f %0f", num1, num2);}
| COURSE number1 number2
{ sprintf(parsed, "16 %.0f %0f", num1, num2);}
| COURSE number1
{ sprintf(parsed, "16 %.0f", num1);}
| COURSE COURSE number1 WARP number2
{ sprintf(parsed, "16 %.0f %0f", num1, num2);}
| COURSE COURSE number1 number2
{ sprintf(parsed, "16 %.0f %0f", num1, num2);}
| COURSE COURSE number1
{ sprintf(parsed, "16 %.0f", num1);}
;
damage : DAMAGE
{ strcpy(parsed, "17"); }
;
scan : SCAN name
{ sprintf(parsed, "18 %s", string); }
| SCAN number1
{ sprintf(parsed, "18 %.0f", num1); }
| SCAN
{ strcpy(parsed, "18"); }
;
power : POWER
{ strcpy(parsed, "19"); }
;
jettison: JETT ENG
{ strcpy(parsed, "20"); }
;
detonate: DET ENG name
{ sprintf(parsed, "21 %s", string); }
| DET ENG
{ strcpy(parsed, "21"); }
;
param : PARAM
{ strcpy(parsed, "22"); }
;
dead : DEAD name
{ sprintf(parsed, "23 %s", string); }
| DEAD
{ strcpy(parsed, "23"); }
;
corb : CORB
{ strcpy(parsed, "24"); }
;
surr : SURREND
{ strcpy(parsed, "25"); }
;
esurr : DEMAND SURREND
{ strcpy(parsed, "26"); }
;
selfd : DESTR
{ strcpy(parsed, "27"); }
;
abort : ABORT DESTR
{ strcpy(parsed, "28"); }
;
surv : SURV
{ strcpy(parsed, "29"); }
;
version : VERSION
{ strcpy(parsed, "30"); }
;
save : SAVE
{ strcpy(parsed, "31"); }
;
help : HELP
{ strcpy(parsed, "32"); }
;
%%
#include "lex.yy.c"
yywrap() { return(1); }
yyerror(s) char *s; { fprintf(stderr, "%s", s); }