summaryrefslogtreecommitdiffstats
path: root/parser.y
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2009-11-20 15:18:12 -0800
committerKaz Kylheku <kaz@kylheku.com>2009-11-20 15:18:12 -0800
commit1dc0ed67b0b00b74f2abbf4e5a5d9512bb04dab0 (patch)
tree14cdbb19823b2c2d9cd13502feda787e7ac136db /parser.y
parent768d6f677643332a440f822787517b1939135f2b (diff)
downloadtxr-1dc0ed67b0b00b74f2abbf4e5a5d9512bb04dab0.tar.gz
txr-1dc0ed67b0b00b74f2abbf4e5a5d9512bb04dab0.tar.bz2
txr-1dc0ed67b0b00b74f2abbf4e5a5d9512bb04dab0.zip
* parser.y (grammar): Fix error actions that do not assign
a value to $$.
Diffstat (limited to 'parser.y')
-rw-r--r--parser.y35
1 files changed, 23 insertions, 12 deletions
diff --git a/parser.y b/parser.y
index c219d380..0ababe57 100644
--- a/parser.y
+++ b/parser.y
@@ -201,11 +201,13 @@ define_clause : DEFINE exprs ')' newl
| DEFINE ')' newl
clauses_opt
END newl { $$ = list(define, nil, $4, nao); }
- | DEFINE error { yybadtoken(yychar, "list expression"); }
+ | DEFINE error { $$ = nil;
+ yybadtoken(yychar, "list expression"); }
| DEFINE exprs ')' newl
- error { yybadtoken(yychar, "define"); }
+ error { $$ = nil; yybadtoken(yychar, "define"); }
| DEFINE ')' newl
- error { yybadtoken(yychar, "define"); }
+ error { $$ = nil;
+ yybadtoken(yychar, "define"); }
;
try_clause : TRY newl
@@ -242,11 +244,14 @@ catch_clauses_opt : CATCH ')' newl
nil); }
| { $$ = nil; }
| CATCH ')' newl
- error { yybadtoken(yychar, "try clause"); }
+ error { $$ = nil;
+ yybadtoken(yychar, "try clause"); }
| CATCH exprs ')' newl
- error { yybadtoken(yychar, "try clause"); }
+ error { $$ = nil;
+ yybadtoken(yychar, "try clause"); }
| FINALLY newl
- error { yybadtoken(yychar, "try clause"); }
+ error { $$ = nil;
+ yybadtoken(yychar, "try clause"); }
;
@@ -261,9 +266,11 @@ output_clause : OUTPUT ')' o_elems '\n'
END newl { $$ = list(output, $5, nil, $2, nao); }
| OUTPUT exprs ')' o_elems '\n'
out_clauses
- END newl { yyerror("invalid combination of old and "
+ END newl { $$ = nil;
+ yyerror("invalid combination of old and "
"new syntax in output directive"); }
- | OUTPUT error { yybadtoken(yychar, "list expression"); }
+ | OUTPUT error { $$ = nil;
+ yybadtoken(yychar, "list expression"); }
| OUTPUT ')' o_elems '\n'
error { $$ = nil;
yybadtoken(yychar, "output clause"); }
@@ -394,9 +401,11 @@ var : IDENT { $$ = list(var, intern(string_own($1)),
nil, $1, nao); }
| var_op '{' IDENT '}' elem { $$ = list(var, intern(string_own($3)),
$5, $1, nao); }
- | var_op '{' IDENT regex '}' { yyerror("longest match "
+ | var_op '{' IDENT regex '}' { $$ = nil;
+ yyerror("longest match "
"not useable with regex"); }
- | var_op '{' IDENT NUMBER '}' { yyerror("longest match "
+ | var_op '{' IDENT NUMBER '}' { $$ = nil;
+ yyerror("longest match "
"not useable with "
"fixed width match"); }
| IDENT error { $$ = nil;
@@ -488,10 +497,12 @@ newl : '\n'
strlit : '"' '"' { $$ = null_string; }
| '"' litchars '"' { $$ = lit_char_helper($2); }
- | '"' error { yybadtoken(yychar, "string literal"); }
+ | '"' error { $$ = nil;
+ yybadtoken(yychar, "string literal"); }
;
-chrlit : '\'' '\'' { yyerror("empty character literal"); }
+chrlit : '\'' '\'' { $$ = nil;
+ yyerror("empty character literal"); }
{ $$ = nil; }
| '\'' litchars '\'' { $$ = car($2);
if (cdr($2))