[antlr-interest] Empty AST entry stops parsing

Kevin Twidle kpt at doc.ic.ac.uk
Tue Sep 15 04:41:39 PDT 2009


I have been using my PonderTalk (Smalltalk like) language for a while now
and I have just noticed that leaving a block empty causes a parser error.
This is with ANTLRWorks 1.2.3. I have refined the grammar to show the point.
The problem line is ^(statements). With that taken out the parsing works.
grammar Trial;

options {
output = AST;
        k = 2;
}

start : sentences EOF
 ;
sentences
: sentence? (DOT sentences)?
 -> sentence? sentences?
;
sentence: WORD | block;
block : '[' sentences ']'
-> ^(sentences)
 ;

WORD : LETTER LETTER+;
LETTER : 'a'..'z';
DOT : '.';

The following input works as expected:
hello. [ block ]. goodbye

The following  just terminates the parser after processing the ']' with no
AST being produced at all:
hello. [ ] . goodbye

There are no errors. However with my PonderTalk parser I get

Exception thrown: rule sentences

org.antlr.runtime.tree.RewriteEmptyStreamException: rule sentences

at org.antlr.runtime.tree.RewriteRuleElementStream._next(
RewriteRuleElementStream.java:158)

at org.antlr.runtime.tree.RewriteRuleElementStream.nextTree(
RewriteRuleElementStream.java:145)

at net.ponder2.parser.PonderTalkParser.block(PonderTalkParser.java:1061)

at net.ponder2.parser.PonderTalkParser.object(PonderTalkParser.java:693)

at net.ponder2.parser.PonderTalkParser.objectMessage(
PonderTalkParser.java:470)

at net.ponder2.parser.PonderTalkParser.sentence(PonderTalkParser.java:323)

at net.ponder2.parser.PonderTalkParser.sentence(PonderTalkParser.java:341)

at net.ponder2.parser.PonderTalkParser.sentences(PonderTalkParser.java:194)

at net.ponder2.parser.PonderTalkParser.start(PonderTalkParser.java:129)

at net.ponder2.parser.P2Compiler.parse(P2Compiler.java:495)

at net.ponder2.parser.P2Compiler.parse(P2Compiler.java:440)

at net.ponder2.ShellInstance.doPonderTalk(ShellInstance.java:211)

at net.ponder2.ShellInstance.run(ShellInstance.java:163)

at java.lang.Thread.run(Thread.java:613)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.antlr.org/pipermail/antlr-interest/attachments/20090915/83300cf2/attachment.html 


More information about the antlr-interest mailing list