summaryrefslogtreecommitdiff
path: root/parse.y
diff options
context:
space:
mode:
authorVern Paxson <vern@ee.lbl.gov>1993-12-27 14:41:51 +0000
committerVern Paxson <vern@ee.lbl.gov>1993-12-27 14:41:51 +0000
commit2f595d6d62d8b94f37c06f478578161204497491 (patch)
treeb8b1485af63287870c6ab2f51f0d946076a269bc /parse.y
parent9322563cf65f46d0a08b90fe2e518d9d433212d6 (diff)
%option
Diffstat (limited to 'parse.y')
-rw-r--r--parse.y20
1 files changed, 20 insertions, 0 deletions
diff --git a/parse.y b/parse.y
index 307db76..9d447b0 100644
--- a/parse.y
+++ b/parse.y
@@ -1,6 +1,7 @@
/* parse.y - parser for flex input */
%token CHAR NUMBER SECTEND SCDECL XSCDECL NAME PREVCCL EOF_OP
+%token OPTION_OP OPT_OUTFILE OPT_PREFIX
%{
/*-
@@ -65,6 +66,7 @@ int *scon_stk;
int scon_stk_ptr, max_scon_stk;
Char clower();
+char *copy_string();
void build_eof_action();
void yyerror();
@@ -120,6 +122,7 @@ initlex :
;
sect1 : sect1 startconddecl namelist1
+ | sect1 options
|
| error
{ synerr( "unknown error processing section 1" ); }
@@ -127,6 +130,7 @@ sect1 : sect1 startconddecl namelist1
sect1end : SECTEND
{
+ check_options();
scon_stk = allocate_integer_array( lastsc + 1 );
scon_stk_ptr = 0;
}
@@ -149,6 +153,22 @@ namelist1 : namelist1 NAME
{ synerr( "bad start condition list" ); }
;
+options : OPTION_OP optionlist
+ ;
+
+optionlist : optionlist option
+ |
+ ;
+
+option : OPT_OUTFILE '=' NAME
+ {
+ outfilename = copy_string( nmstr );
+ did_outfilename = 1;
+ }
+ | OPT_PREFIX '=' NAME
+ { prefix = copy_string( nmstr ); }
+ ;
+
sect2 : sect2 scon initforrule flexrule '\n'
{ scon_stk_ptr = $2; }
| sect2 scon '{' sect2 '}'