help-bison
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Using %prec to resolve shift-reduce


From: Hans Åberg
Subject: Re: Using %prec to resolve shift-reduce
Date: Wed, 30 Nov 2016 23:02:40 +0100

> On 30 Nov 2016, at 19:54, Simon Richter <address@hidden> wrote:

> I have a grammar for ECMAScript, ...

You might check in the Usenet newsgroup comp.compilers if somebody has done it 
before. 

> ...which has both brace delimited statement
> blocks and brace delimited object literals, and allows expressions to be
> used as statements, which creates conflicting interpretations for "{ }" as
> either an empty block or an empty object.
> 
> The specification clarifies that expression statements may not begin,
> among other things, with a brace, resolving the conflict. If I wanted to
> transform that into rules, I'd have to create two versions of most of the
> rules for expressions, one allowing object literals, one disallowing them.

There are various ways to do that: One is to parse a larger language and 
resolve it in the actions; this way a C++ Yacc grammar has been made. For 
example, making your "statements" variable non-empty, and check what the empty 
brackets are is in the action. Another is setting context switches; for example 
the lexer might return different token symbols for the braces. This method has 
the disadvantage that the parser may or may not make a token lookahead (check 
manual). Also, one might try the GLR parser.





reply via email to

[Prev in Thread] Current Thread [Next in Thread]