Re: Grammar with low-precedence postfix operator?

Robert Jacobson <rljacobson@gmail.com>
Sat, 7 Feb 2015 10:30:43 -0800 (PST)

          From comp.compilers

Related articles
Grammar with low-precedence postfix operator? rljacobson@gmail.com (Robert Jacobson) (2015-02-05)
Re: Grammar with low-precedence postfix operator? kaz@kylheku.com (Kaz Kylheku) (2015-02-05)
Re: Grammar with low-precedence postfix operator? anton@mips.complang.tuwien.ac.at (2015-02-07)
Re: Grammar with low-precedence postfix operator? rljacobson@gmail.com (Robert Jacobson) (2015-02-07)
Re: Grammar with low-precedence postfix operator? monnier@iro.umontreal.ca (Stefan Monnier) (2015-02-08)
Re: Grammar with low-precedence postfix operator? kaz@kylheku.com (Kaz Kylheku) (2015-02-09)
Re: Grammar with low-precedence postfix operator? DrDiettrich1@netscape.net (Hans-Peter Diettrich) (2015-02-09)
Re: Grammar with low-precedence postfix operator? jgk@panix.com (2015-02-10)
Re: Grammar with low-precedence postfix operator? kaz@kylheku.com (Kaz Kylheku) (2015-02-11)
Re: Grammar with low-precedence postfix operator? rljacobson@gmail.com (Robert Jacobson) (2015-02-21)
| List of all articles for this month |
From: Robert Jacobson <rljacobson@gmail.com>
Newsgroups: comp.compilers
Date: Sat, 7 Feb 2015 10:30:43 -0800 (PST)
Organization: Compilers Central
References: 15-02-006 15-02-010
Injection-Date: Sat, 07 Feb 2015 18:30:43 +0000
Keywords: parse, design
Posted-Date: 08 Feb 2015 03:53:29 EST

Thanks for the response. I'll have to digest this for a bit.


On Friday, 6 February 2015 22:12:10 UTC-5, Kaz Kylheku wrote:
> On 2015-02-05, Robert Jacobson <rljacobson@gmail.com> wrote:
> > I'm trying to write an ANTLR4 grammar for a language with a low precedence
> > postfix operator (Wolfram Language with '&', but I use a simple toy grammar
> > below). I'm struggling with finding the right pattern to express this > > language.
>
> I suspect this is not nicely solvable by LALR type tools. Only with hacks.


But if I abandon implicit multiplication, collapse the grammar to a single
rule, and let ANTLR handle operator precedence, ANTLR produces a parser that
works. (I haven't made an attempt at a yacc grammar.) Perhaps this is because
ANTLR produces ALL(*) parsers.




> If you want 2+2++^3 to mean (2+2)++^3, that means that you need
> a special low-precedence versions of ^ (and other operators) for that
> case, so the ++ expression can be a constituent of something.
>
> Try something along these lines. This Yacc grammar only gives me one
> shift-reduce conflicts, on account of the empty production rule for
> pp_factor_continue. I didn't test it; I only skimmed through the state
> transitions in y.output:




I'll experiment with this, but this strategy strikes me as impractical for
large grammars because you'd need to duplicate a significant portion of the
grammar for the low-precedence versions of operators that can follow ++, yes?


Post a followup to this message

Return to the comp.compilers page.
Search the comp.compilers archives again.