OK, here is what I have been able to verify about my problem.

The problem occurs in my ObjC.stg templates and the offending template is:
/** Define a rule label including default value */
ruleLabelDef(label) ::= <%
<ruleLabelType(referencedRule=label.referencedRule)> <label.label.text> = 
<initValue(typeName=ruleLabelType(referencedRule=label.referencedRule))>;<\n>
%>

It is invoked here:
ruleLabelDefs() ::= <<
<[ruleDescriptor.tokenLabels, ruleDescriptor.tokenListLabels,
 ruleDescriptor.wildcardTreeLabels,ruleDescriptor.wildcardTreeListLabels]
   :{it | <labelType> *<it.label.text> = nil;}; separator="\n">
<[ruleDescriptor.tokenListLabels,ruleDescriptor.ruleListLabels,ruleDescriptor.wildcardTreeListLabels]
   :{it | AMutableArray *list_<it.label.text> = nil;}; separator="\n"
<ruleDescriptor.ruleLabels:ruleLabelDef(); separator="\n">
<ruleDescriptor.ruleListLabels:{ll|ANTLRParserRuleReturnScope *<ll.label.text> 
= nil;}; separator="\n"

and

ruleLabelDefs() is invoked from:
synpredRule(ruleName, ruleDescriptor, block, description, nakedBlock) ::= ...

and also from:
rule(ruleName,ruleDescriptor,block,emptyRule,description,exceptions,finally,memoize)
 ::=

The templates "ruleLabelDef(label)" is identical to the template in Java.stg as 
is the invocation of it
"<ruleDescriptor.ruleLabels:ruleLabelDef(); separator="\n">"

The wierd thing is that it works in the context of rule(...) but not in the 
context of synpred(...).

I can't find where synpred(...) and rule(...) are invoked??? Does anybody 
know???

Thanks,
Alan
---

Alan Condit
1085 Tierra Ct.
Woodburn, OR 97071

Email -- acon...@ipns.com
Home-Office (503) 982-0906


_______________________________________________
antlr-dev mailing list
antlr-dev@antlr.org
http://www.antlr.org/mailman/listinfo/antlr-dev

Reply via email to