The following grammar compiles fine under ANTLR 3.1.3 except if you use the 
-debug option, in which case it throws an exception during generation. 
Exception trace follows.

The culprit line is:
message: unhSegment bgmSegment segment+ linLoop untSegment -> ^(MESSAGE 
unhSegment bgmSegment segment+ linLoop untSegment) ;

On this line, I added linLoop on both sides. linLoop in turn references 
segment+, which I suspect might be the problem. However, this grammar appears 
to generate okay when -debug is off. (The grammar is functionally flawed, but 
in any case it should not cause an exception for ANTLR to generate the parser 
from it.)


Thanks,
Rob

====

grammar Test;

options {
  language = 'CSharp2' ;
  output = AST ;
}

tokens {
    INTERCHANGE;
    GROUP;
    MESSAGE;
    LOOP;
    SECTION;
    SEGMENT;
    ELEMENT;
    COMPONENT;
}

file        : interchange EOF -> interchange;

interchange: unaSegment? unbSegment group unzSegment -> ^(INTERCHANGE 
unaSegment? unbSegment group unzSegment) ;
group: ungSegment message+ uneSegment -> ^(GROUP ungSegment message+ 
uneSegment) ;
message: unhSegment bgmSegment segment+ linLoop untSegment -> ^(MESSAGE 
unhSegment bgmSegment segment+ linLoop untSegment) ;

linLoop: linSection+ -> ^(LOOP linSection+) ;
linSection: linSegment segment+ -> ^(SECTION linSegment segment+ ) ;

bgmSegment: tagBGM elements -> ^(SEGMENT tagBGM elements) ;
linSegment: tagLIN elements -> ^(SEGMENT tagLIN elements) ;

tagBGM    : { input.LT(1).Text == "BGM" }? TEXT ;
tagLIN    : { input.LT(1).Text == "LIN" }? TEXT ;


unaSegment: tagUNA elements -> ^(SEGMENT tagUNA elements) ;
unbSegment: tagUNB elements -> ^(SEGMENT tagUNB elements) ;
ungSegment: tagUNG elements -> ^(SEGMENT tagUNG elements) ;
unhSegment: tagUNH elements -> ^(SEGMENT tagUNH elements) ;
untSegment: tagUNT elements -> ^(SEGMENT tagUNT elements) ;
uneSegment: tagUNE elements -> ^(SEGMENT tagUNE elements) ;
unzSegment: tagUNZ elements -> ^(SEGMENT tagUNZ elements) ;

tagUNA    : { input.LT(1).Text == "UNA" }? TEXT ;
tagUNB    : { input.LT(1).Text == "UNB" }? TEXT ;
tagUNG    : { input.LT(1).Text == "UNG" }? TEXT ;
tagUNH    : { input.LT(1).Text == "UNH" }? TEXT ;
tagUNT    : { input.LT(1).Text == "UNT" }? TEXT ;
tagUNE    : { input.LT(1).Text == "UNE" }? TEXT ;
tagUNZ    : { input.LT(1).Text == "UNZ" }? TEXT ;

segment: tag elements -> ^(SEGMENT tag elements);
//{ Console.WriteLine("Found segment: " + $tag.text); } 
tag    :    TEXT
    ;

ignoredLine    : unknownDiscriminator! elements! ;

unknownDiscriminator: TEXT;

        
elements        : element* terminator! ;
element        : ELEMENT_SEPARATOR t=components? -> ^(ELEMENT $t?) ;
components    : comp1 comp2* ;

comp2        : COMPONENT_SEPARATOR t=TEXT? -> ^(COMPONENT $t?)
    ;

comp1        : t=TEXT -> ^(COMPONENT $t)
        | COMPONENT_SEPARATOR t=TEXT? -> ^(COMPONENT) ^(COMPONENT $t?) ;

terminator    : SEGMENT_TERMINATOR ;

//terminator    : (EOL | WS)+ ;

SEGMENT_TERMINATOR: '\'';
ELEMENT_SEPARATOR: '+';
COMPONENT_SEPARATOR:  ':';
//TEXT: ('a'..'z'|'A'..'Z'|'0'..'9'|' '|'-'|','|'.'|'/'|'?')+ ;
TEXT: ('a'..'z'|'A'..'Z'|'0'..'9'|' '|'-'|','|'.'|'/'|ESCAPE)+ ;
fragment ESCAPE : '?' . ;

WS: ('\r'? '\n')+ { $channel = 99; }  ;

====
error(10):  internal error: <<OMITTED>>.g : java.util.NoSuchElementException: 
no such attribute: description in template context [out
putFile parser genericParser(...) cyclicDFA if(dfa.specialStateSTs)_subtemplate 
anonymous cyclicDFAState cyclicDFAEdge notPredicate eva
lPredicate(...)]
org.antlr.stringtemplate.StringTemplate.checkNullAttributeAgainstFormalArguments(StringTemplate.java:1276)
org.antlr.stringtemplate.StringTemplate.get(StringTemplate.java:800)
org.antlr.stringtemplate.StringTemplate.get(StringTemplate.java:798)
org.antlr.stringtemplate.StringTemplate.get(StringTemplate.java:798)
org.antlr.stringtemplate.StringTemplate.get(StringTemplate.java:798)
org.antlr.stringtemplate.StringTemplate.get(StringTemplate.java:798)
org.antlr.stringtemplate.StringTemplate.get(StringTemplate.java:798)
org.antlr.stringtemplate.StringTemplate.get(StringTemplate.java:798)
org.antlr.stringtemplate.StringTemplate.get(StringTemplate.java:798)
org.antlr.stringtemplate.StringTemplate.get(StringTemplate.java:798)
org.antlr.stringtemplate.StringTemplate.getAttribute(StringTemplate.java:682)
org.antlr.stringtemplate.language.ActionEvaluator.attribute(ActionEvaluator.java:360)
org.antlr.stringtemplate.language.ActionEvaluator.expr(ActionEvaluator.java:136)
org.antlr.stringtemplate.language.ActionEvaluator.action(ActionEvaluator.java:84)
org.antlr.stringtemplate.language.ASTExpr.write(ASTExpr.java:148)
org.antlr.stringtemplate.StringTemplate.write(StringTemplate.java:700)
org.antlr.stringtemplate.language.ASTExpr.write(ASTExpr.java:722)
org.antlr.stringtemplate.language.ASTExpr.writeAttribute(ASTExpr.java:659)
org.antlr.stringtemplate.language.ActionEvaluator.action(ActionEvaluator.java:86)
org.antlr.stringtemplate.language.ASTExpr.write(ASTExpr.java:148)
org.antlr.stringtemplate.StringTemplate.write(StringTemplate.java:700)
org.antlr.stringtemplate.language.ASTExpr.write(ASTExpr.java:722)
org.antlr.stringtemplate.language.ASTExpr.writeAttribute(ASTExpr.java:659)
org.antlr.stringtemplate.language.ActionEvaluator.action(ActionEvaluator.java:86)
org.antlr.stringtemplate.language.ASTExpr.write(ASTExpr.java:148)
org.antlr.stringtemplate.StringTemplate.write(StringTemplate.java:700)
org.antlr.stringtemplate.language.ASTExpr.write(ASTExpr.java:722)
org.antlr.stringtemplate.language.ASTExpr.write(ASTExpr.java:742)
org.antlr.stringtemplate.language.ASTExpr.writeAttribute(ASTExpr.java:659)
org.antlr.stringtemplate.language.ActionEvaluator.action(ActionEvaluator.java:86)
org.antlr.stringtemplate.language.ASTExpr.write(ASTExpr.java:148)
org.antlr.stringtemplate.StringTemplate.write(StringTemplate.java:700)
org.antlr.stringtemplate.language.ASTExpr.write(ASTExpr.java:722)
org.antlr.stringtemplate.language.ASTExpr.writeAttribute(ASTExpr.java:659)
org.antlr.stringtemplate.language.ActionEvaluator.action(ActionEvaluator.java:86)
org.antlr.stringtemplate.language.ASTExpr.write(ASTExpr.java:148)
org.antlr.stringtemplate.StringTemplate.write(StringTemplate.java:700)
org.antlr.stringtemplate.language.ASTExpr.write(ASTExpr.java:722)
org.antlr.stringtemplate.language.ASTExpr.write(ASTExpr.java:742)
org.antlr.stringtemplate.language.ASTExpr.writeAttribute(ASTExpr.java:659)
org.antlr.stringtemplate.language.ActionEvaluator.action(ActionEvaluator.java:86)
org.antlr.stringtemplate.language.ASTExpr.write(ASTExpr.java:148)
org.antlr.stringtemplate.StringTemplate.write(StringTemplate.java:700)
org.antlr.stringtemplate.language.ConditionalExpr.writeSubTemplate(ConditionalExpr.java:152)
org.antlr.stringtemplate.language.ConditionalExpr.write(ConditionalExpr.java:103)
org.antlr.stringtemplate.StringTemplate.write(StringTemplate.java:700)
org.antlr.stringtemplate.language.ASTExpr.write(ASTExpr.java:722)
org.antlr.stringtemplate.language.ASTExpr.write(ASTExpr.java:742)
org.antlr.stringtemplate.language.ASTExpr.writeAttribute(ASTExpr.java:659)
org.antlr.stringtemplate.language.ActionEvaluator.action(ActionEvaluator.java:86)
org.antlr.stringtemplate.language.ASTExpr.write(ASTExpr.java:148)
org.antlr.stringtemplate.StringTemplate.write(StringTemplate.java:700)
org.antlr.stringtemplate.language.ASTExpr.write(ASTExpr.java:722)
org.antlr.stringtemplate.language.ASTExpr.writeAttribute(ASTExpr.java:659)
org.antlr.stringtemplate.language.ActionEvaluator.action(ActionEvaluator.java:86)
org.antlr.stringtemplate.language.ASTExpr.write(ASTExpr.java:148)
org.antlr.stringtemplate.StringTemplate.write(StringTemplate.java:700)
org.antlr.stringtemplate.language.ASTExpr.write(ASTExpr.java:722)
org.antlr.stringtemplate.language.ASTExpr.writeAttribute(ASTExpr.java:659)
org.antlr.stringtemplate.language.ActionEvaluator.action(ActionEvaluator.java:86)
org.antlr.stringtemplate.language.ASTExpr.write(ASTExpr.java:148)
org.antlr.stringtemplate.StringTemplate.write(StringTemplate.java:700)
org.antlr.codegen.CodeGenerator.write(CodeGenerator.java:1278)
org.antlr.codegen.Target.genRecognizerFile(Target.java:94)
org.antlr.codegen.CodeGenerator.genRecognizer(CodeGenerator.java:463)
org.antlr.Tool.generateRecognizer(Tool.java:607)
org.antlr.Tool.process(Tool.java:429)
org.antlr.Tool.main(Tool.java:91)


_________________________________________________________________
We are your photos. Share us now with Windows Live Photos.
http://go.microsoft.com/?linkid=9666047
--~--~---------~--~----~------------~-------~--~----~
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

Reply via email to