本文整理汇总了C#中StringTemplate.ParseAction方法的典型用法代码示例。如果您正苦于以下问题:C# StringTemplate.ParseAction方法的具体用法?C# StringTemplate.ParseAction怎么用?C# StringTemplate.ParseAction使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类StringTemplate
的用法示例。
在下文中一共展示了StringTemplate.ParseAction方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: action
//throws RecognitionException, TokenStreamException
public void action(
StringTemplate self
)
{
IToken a = null;
IToken i = null;
IToken rr = null;
IToken rd = null;
try { // for error handling
switch ( LA(1) )
{
case ACTION:
{
a = LT(1);
match(ACTION);
string indent = ((ChunkToken)a).Indentation;
ASTExpr c = self.ParseAction(a.getText());
c.Indentation = indent;
self.AddChunk(c);
break;
}
case IF:
{
i = LT(1);
match(IF);
ConditionalExpr c = (ConditionalExpr)self.ParseAction(i.getText());
// create and precompile the subtemplate
StringTemplate subtemplate =
new StringTemplate(self.Group, null);
subtemplate.EnclosingInstance = self;
subtemplate.Name = i.getText() + "_subtemplate";
self.AddChunk(c);
template(subtemplate);
if ( c!=null ) c.Subtemplate = subtemplate;
{
switch ( LA(1) )
{
case ELSE:
{
match(ELSE);
// create and precompile the subtemplate
StringTemplate elseSubtemplate =
new StringTemplate(self.Group, null);
elseSubtemplate.EnclosingInstance = self;
elseSubtemplate.Name = "else_subtemplate";
template(elseSubtemplate);
if ( c!=null ) c.ElseSubtemplate = elseSubtemplate;
break;
}
case ENDIF:
{
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
match(ENDIF);
break;
}
case REGION_REF:
{
rr = LT(1);
match(REGION_REF);
// define implicit template and
// convert <@r()> to <region__enclosingTemplate__r()>
string regionName = rr.getText();
string mangledRef = null;
bool err = false;
// watch out for <@super.r()>; that does NOT def implicit region
// convert to <super.region__enclosingTemplate__r()>
if ( regionName.StartsWith("super.") ) {
//Console.Out.Writeline("super region ref "+regionName);
string regionRef =
regionName.Substring("super.".Length,regionName.Length-"super.".Length);
string templateScope =
self.Group.GetUnMangledTemplateName(self.Name);
StringTemplate scopeST = self.Group.LookupTemplate(templateScope);
if ( scopeST==null ) {
self.Group.Error("reference to region within undefined template: "+
templateScope);
err=true;
}
if ( !scopeST.ContainsRegionName(regionRef) ) {
self.Group.Error("template "+templateScope+" has no region called "+
regionRef);
err=true;
}
else {
//.........这里部分代码省略.........