[antlr-interest] Scopes and C runtime

Jim Idle jimi at intersystems.com
Wed Dec 6 10:47:05 PST 2006


Looks like a change in the template such that the way I generate the scope reference requires an attribute to be available that is not available when a global scope is defined. I will add it to my list.

Are you sure you need a global scope? ;-)

Jim

-----Original Message-----
From: antlr-interest-bounces at antlr.org [mailto:antlr-interest-bounces at antlr.org] On Behalf Of Gavin Lambert
Sent: Tuesday, December 05, 2006 11:34 PM
To: Antlr Interest
Subject: [antlr-interest] Scopes and C runtime

In 3.0b5 (using the C runtime included with that version), if I 
try using a global named scope then ANTLR throws an exception 
while generating the parser.

eg:
grammar Message;
options {
   language = C;
}
scope MessageData {
   enum MessageType msgType;
}
// ...
messageDefn
scope MessageData;
   : someRule | someOtherRule
   ;

This goes away if I remove the reference to the scope in the 
rule.  And dynamic scopes appear to work fine.  Below is the error 
that this produces:

error(10):  internal error: Class java.lang.String has no such 
attribute: name in template context [outputFile parser 
genericParser(...) rule ruleInitializations anonymous <invoke 
scopeTop arg context>] : java.lang.NoSuchFieldException: name
java.lang.Class.getField(Unknown Source)
org.antlr.stringtemplate.language.ASTExpr.rawGetObjectProperty(ASTExpr.java:489)
org.antlr.stringtemplate.language.ASTExpr.getObjectProperty(ASTExpr.java:385)
org.antlr.stringtemplate.language.ActionEvaluator.attribute(ActionEvaluator.java:351)
org.antlr.stringtemplate.language.ActionEvaluator.expr(ActionEvaluator.java:136)
org.antlr.stringtemplate.language.ActionEvaluator.argumentAssignment(ActionEvaluator.java:905)
org.antlr.stringtemplate.language.ActionEvaluator.argList(ActionEvaluator.java:850)
org.antlr.stringtemplate.language.ASTExpr.evaluateArguments(ASTExpr.java:790)
org.antlr.stringtemplate.language.ASTExpr.getTemplateInclude(ASTExpr.java:609)
org.antlr.stringtemplate.language.ActionEvaluator.templateInclude(ActionEvaluator.java:470)
org.antlr.stringtemplate.language.ActionEvaluator.expr(ActionEvaluator.java:142)
org.antlr.stringtemplate.language.ActionEvaluator.action(ActionEvaluator.java:84)
org.antlr.stringtemplate.language.ASTExpr.write(ASTExpr.java:138)
org.antlr.stringtemplate.StringTemplate.write(StringTemplate.java:792)
org.antlr.stringtemplate.language.ASTExpr.write(ASTExpr.java:666)
org.antlr.stringtemplate.language.ASTExpr.write(ASTExpr.java:687)
org.antlr.stringtemplate.language.ASTExpr.writeAttribute(ASTExpr.java:624)
org.antlr.stringtemplate.language.ActionEvaluator.action(ActionEvaluator.java:86)
org.antlr.stringtemplate.language.ASTExpr.write(ASTExpr.java:138)
org.antlr.stringtemplate.StringTemplate.write(StringTemplate.java:792)
org.antlr.stringtemplate.language.ASTExpr.write(ASTExpr.java:666)
org.antlr.stringtemplate.language.ASTExpr.writeAttribute(ASTExpr.java:624)
org.antlr.stringtemplate.language.ActionEvaluator.action(ActionEvaluator.java:86)
org.antlr.stringtemplate.language.ASTExpr.write(ASTExpr.java:138)
org.antlr.stringtemplate.StringTemplate.write(StringTemplate.java:792)
org.antlr.stringtemplate.language.ASTExpr.write(ASTExpr.java:666)
org.antlr.stringtemplate.language.ASTExpr.write(ASTExpr.java:687)
org.antlr.stringtemplate.language.ASTExpr.writeAttribute(ASTExpr.java:624)
org.antlr.stringtemplate.language.ActionEvaluator.action(ActionEvaluator.java:86)
org.antlr.stringtemplate.language.ASTExpr.write(ASTExpr.java:138)
org.antlr.stringtemplate.StringTemplate.write(StringTemplate.java:792)
org.antlr.stringtemplate.language.ASTExpr.write(ASTExpr.java:666)
org.antlr.stringtemplate.language.ASTExpr.writeAttribute(ASTExpr.java:624)
org.antlr.stringtemplate.language.ActionEvaluator.action(ActionEvaluator.java:86)
org.antlr.stringtemplate.language.ASTExpr.write(ASTExpr.java:138)
org.antlr.stringtemplate.StringTemplate.write(StringTemplate.java:792)
org.antlr.stringtemplate.language.ASTExpr.write(ASTExpr.java:666)
org.antlr.stringtemplate.language.ASTExpr.writeAttribute(ASTExpr.java:624)
org.antlr.stringtemplate.language.ActionEvaluator.action(ActionEvaluator.java:86)
org.antlr.stringtemplate.language.ASTExpr.write(ASTExpr.java:138)
org.antlr.stringtemplate.StringTemplate.write(StringTemplate.java:792)
org.antlr.stringtemplate.StringTemplate.toString(StringTemplate.java:1727)
org.antlr.codegen.CodeGenerator.write(CodeGenerator.java:1083)
org.antlr.codegen.CTarget.genRecognizerFile(CTarget.java:53)
org.antlr.codegen.CodeGenerator.genRecognizer(CodeGenerator.java:429)
org.antlr.Tool.processGrammar(Tool.java:329)
org.antlr.Tool.process(Tool.java:266)
org.antlr.Tool.main(Tool.java:69)


-- 
No virus found in this incoming message.
Checked by AVG Free Edition.
Version: 7.5.430 / Virus Database: 268.15.7/569 - Release Date: 12/5/2006 3:00 AM
 

-- 
No virus found in this outgoing message.
Checked by AVG Free Edition.
Version: 7.5.432 / Virus Database: 268.15.9/573 - Release Date: 12/5/2006 4:07 PM
 


More information about the antlr-interest mailing list