Sorry – pressed send too quickly ;-)
I meant to say that while the theory states this, I don’t believe that it is
possible to construct a practical grammar in ANTLR that would do it. ANTLR uses
LL(1) for this. It may be possible to hack this, but otherwise the construct I
have (and you have now I look at it more closely J, is what you would do in
ANTLR. There may be options for this in the future though as there are two
methodologies for parsing expressions without recursion that are contemplated,
mostly for avoiding lots of recursive method calls for expression parsing in
the Java target. These work by keeping state as they go basically.
Jim
From: [email protected]
[mailto:[email protected]] On Behalf Of Jim Idle
Sent: Saturday, December 12, 2009 10:38 AM
To: [email protected]
Subject: Re: [antlr-interest] eliminating left-recursion in the PAREN grammar
grammar T;
program
: LPAREN program? RPAREN
;
LPAREN : '(';
RPAREN : ')';
WS : (' '|'\t'|'\n'|'\r')+ { skip(); } ;
Jim
From: [email protected]
[mailto:[email protected]] On Behalf Of Hans-Martin Adorf
Sent: Saturday, December 12, 2009 9:14 AM
To: [email protected]
Subject: [antlr-interest] eliminating left-recursion in the PAREN grammar
Folks,
I am working with a toy grammar as a stepping stone for more complicated
grammars. It is a grammar for the well-known PAREN language consisting only of
matched nested parantheses. In other words the language consists of non-empty
strings of the form "()", "(())", "()()", etc.
The grammar I am toying with reads
grammar PAREN;
tokens {
L = '(' ;
R = ')' ;
}
s : L R | L s R | s s;
ANTLR has the foreseeable problem with left-recursion. I was able to fix the
grammar for use with ANTLR by using an EBNF-notation
grammar ParenEBNF;
tokens {
L = '(' ;
R = ')' ;
}
s : L s? R s? ;
However, I would still be interested in a purely recursive grammar that avoids
left-recursion. Theory states that it should be possible to rewrite the grammar
such that it avoids left-recursion (and iterations). But I am lacking the
skills to achieve this, despite the apparent simplicity of the language above.
Any hints are welcome.
Regards
Hans-Martin Adorf
--
You received this message because you are subscribed to the Google Groups
"il-antlr-interest" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/il-antlr-interest?hl=en.
List: http://www.antlr.org/mailman/listinfo/antlr-interest
Unsubscribe:
http://www.antlr.org/mailman/options/antlr-interest/your-email-address