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) |
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?
Return to the
comp.compilers page.
Search the
comp.compilers archives again.