From 49fa1df6a448459279cfcaa98f26f9d0d584a8ff Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Thu, 17 Aug 2017 19:50:49 -0700 Subject: parser: fix byacc regression related to hash-semi. The "byacc_fool" rule needed a small update when in November 2016 it became involved in newly introduced #; (hash semicolon) syntax for commenting out. The problem is that when a top-level nested list expression is followed by #; then a byacc-generated parser throws a syntax error. This is because the byacc_fool production only generates a n_expr, or empty. Thus only those symbols are allowed which may begin a n_expr. The hash-semicolon token isn't one of them. * parser.y (byacc_fool): Add a production rule which generates a HASH_SEMI. Thus HASH_SEMI is now one of the terminals that may legally follow any sentential form that matches a byacc_fool rule after it. --- parser.y | 1 + 1 file changed, 1 insertion(+) diff --git a/parser.y b/parser.y index 92f223d4..95c8969b 100644 --- a/parser.y +++ b/parser.y @@ -221,6 +221,7 @@ hash_semi_or_i_expr : HASH_SEMI { parser->circ_suppress = 1; } /* Hack needed for Berkeley Yacc */ byacc_fool : n_expr { internal_error("notreached"); } + | HASH_SEMI { internal_error("notreached"); } | { internal_error("notreached"); } ; -- cgit v1.2.3