[antlr-interest] accepting nested code blocks
Indhu Bharathi
indhu.b at s7software.com
Tue Oct 13 10:06:01 PDT 2009
Balanced parenthesis cannot be expressed using regular expression which
means you cannot recognize it using lexer. You need a push down automata
which means you need a parser to recognize it. Try doing it using parser
rules.
Cheers, Indhu
From: antlr-interest-bounces at antlr.org
[mailto:antlr-interest-bounces at antlr.org] On Behalf Of Espák Miklós
Sent: Tuesday, October 13, 2009 10:04 PM
To: antlr-interest at antlr.org
Subject: [antlr-interest] accepting nested code blocks
Hi,
I want to create a lexer rule accepting nested code blocks.
I tried out the example of the Definitive ANTLR Reference (Section 4.3), but
it does not work.
It accepts only such inputs which do not contain any character other than
curly braces. Moreover, one closing brace is enough.
The error is the following:
MismatchedTokenException: line 1:1 mismatched input UNKNOW expecting 125
The original code of the book:
fragment
CODE[boolean stripCurlies]:
'{' ( CODE[stripCurlies] | ~('{' |'}' ) )* '}'
{
if ( stripCurlies ) {
setText(getText().substring(1, getText().length()));
}
}
;
The simplified version of the rule results the same:
fragment
Block: '{' ( Block | ~('{'|'}') )* '}';
I use ANTLR 3.2.
Does anybody have an idea, how to get around this?
Thanks,
Miklos
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.antlr.org/pipermail/antlr-interest/attachments/20091013/94f21a7c/attachment.html
More information about the antlr-interest
mailing list