本文整理汇总了C#中ITree.GetChild方法的典型用法代码示例。如果您正苦于以下问题:C# ITree.GetChild方法的具体用法?C# ITree.GetChild怎么用?C# ITree.GetChild使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ITree
的用法示例。
在下文中一共展示了ITree.GetChild方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Assign
public void Assign(ITree node)
{
string var_name = node.GetChild(0).ToString();
ITree node_to_solve = node.GetChild(1);
_varStorage[var_name].Assign(Solve(node_to_solve));
}
示例2: WalkInit
private static MethodTree WalkInit(ITree initNode)
{
Debug.Assert(initNode.Type == (int)JavaNodeType.FOR_INIT);
if (initNode.ChildCount == 0)
{
return null;
}
var child = initNode.GetChild(0);
var exprs = new MethodTree();
if (child.Type == (int)JavaNodeType.VAR_DECLARATION)
{
new VarDeclarationTranslator(child).Walk().ForEach(exprs.Add);
}
else
{
for (var i = 0; i < initNode.ChildCount; i++)
{
exprs.Add(new ExpressionTranslator(initNode.GetChild(i)).Walk());
}
}
return exprs;
}
示例3: Parse
public static Statement Parse(ITree tree)
{
if (tree.Text == "FUNCCALL")
{
Expression exp = tree.ParseExpr();
return new ExprStatement(exp);
}
else if (tree.Text == "IF")
{
Expression cond = tree.GetChild("IF_CONDITION").GetOnlyChild().ParseExpr();
ITree actionTree = tree.GetChild("IF_ACTION");
Statement action = actionTree.ParseStmtList();
return new IfStatement(cond, action);
}
else if (tree.Text == "ASSIGNMENT")
{
Expression variable = tree.GetChild(0).ParseExpr();
Expression value = tree.GetChild(1).ParseExpr();
Statement assignment = new AssignmentStatement(variable, value);
return assignment;
}
else if (tree.Text == "Return")
{
Expression exp = tree.GetOnlyChild().ParseExpr();
return new ReturnStatement(exp);
}
else
{
throw new InvalidGameException(tree.FileCoords() + " - Ivalid statement: " + tree.Text);
}
}
示例4: GetName
private static string GetName(ITree tree)
{
if((JavaNodeType)tree.Type == JavaNodeType.DOT)
{
return GetName(tree.GetChild(0)) + "." + GetName(tree.GetChild(1));
}
return tree.Text;
}
示例5: ConstantExpression
public ConstantExpression(ITree tree)
{
var val = tree.GetChild(0).Text;
var node = tree.GetChild(1);
if (val.StartsWith("#"))
{
Value = new StyleColor(val);
}
else
{
Value = new StyleNumber(Convert.ToDecimal(val), node != null ? node.Text : "");
}
}
示例6: ParseVariable
private StyleVariable ParseVariable(ITree tree)
{
var name = tree.GetChild(0).Text;
var variable = new StyleVariable { Name = name };
switch (tree.GetChild(1).Text)
{
case "LITERAL":
variable.Value = new LiteralExpression(tree.GetChild(1));
break;
default:
variable.Value = ParseExpression(tree.GetChild(1).GetChild(0));
break;
}
return variable;
}
示例7: ConvertNode
private static Method.Parameter ConvertNode(ITree node)
{
var parameter = new Method.Parameter();
// modifiers
parameter.Modifiers.AddRange(new LocalModifierListTranslator(node.GetChild(0)).Walk());
// type
parameter.Type = new TypeTranslator(node.GetChild(1)).Walk();
// name
parameter.Name = new IdentifierTranslator(node.GetChild(2)).Walk();
return parameter;
}
示例8: getStringSubTree
private static string getStringSubTree(ITree node, string indent, bool root)
{
if (node == null)
return "";
string result = indent;
if (!root)
{
if (node.ChildIndex < node.Parent.ChildCount - 1)
{
result += MiddleNodeChar + " ";
indent += ConnectChar + " ";
}
else
{
result += LastNodeChar + " ";
indent += " ";
}
}
result += node + "\n";
for (int i = 0; i < node.ChildCount; i++)
result += getStringSubTree(node.GetChild(i), indent, false);
return result;
}
示例9: CreateFromAntlrAst
public static new SetType CreateFromAntlrAst(ITree tree)
{
SetType ret = DefaultBackend.Instance.Factory.CreateSetType();
if (tree.ChildCount>0)
SequenceOrSetType.CreateFromAntlrAst(ret, tree.GetChild(0));
return ret;
}
示例10: Block
public void Block(ITree node)
{
for (int i = 0; i < node.ChildCount; i++)
{
Execute(node.GetChild(i));
}
}
示例11: LiteralExpression
public LiteralExpression(ITree tree)
{
for(int i = 0; i<tree.ChildCount;i++)
{
value += tree.GetChild(i).Text;
}
}
示例12: CreateFromAntlrAst
//^(SEQUENCE_OF_TYPE (SIMPLIFIED_SIZE_CONSTRAINT $sz)? $gen? identifier? type)
public static new SequenceOfType CreateFromAntlrAst(ITree tree)
{
SequenceOfType ret = DefaultBackend.Instance.Factory.CreateSequenceOfType();
for (int i = 0; i < tree.ChildCount; i++)
{
ITree child = tree.GetChild(i);
switch (child.Type)
{
case asn1Parser.SIMPLIFIED_SIZE_CONSTRAINT:
case asn1Parser.CONSTRAINT:
ret.m_AntlrConstraints.Add(child);
break;
case asn1Parser.LID:
ret.m_xmlVarName = child.Text;
break;
case asn1Parser.TYPE_DEF:
ret.m_type = Asn1Type.CreateFromAntlrAst(child);
break;
default:
throw new Exception("Unkown child: " + child.Text + " for node: " + tree.Text);
}
}
return ret;
}
示例13: ExecuteNode
private double ExecuteNode(ITree node)
{
#if false
switch (node.Type)
{
case AstNodeType.INTEGER:
return ((NumAstNode)node).Value;
#if (false)
case AstNodeType.VAR:
VarDescr varDescr = ((VarDefAstNode)node).VarDescr;
if (varDescr.Initialized)
return varDescr.Value;
else
throw new ParserBaseException(string.Format("Значение {0} не определено", varDescr.Name));
#endif
case AstNodeType.ADD:
return ExecuteNode(node.GetChild(0)) + ExecuteNode(node.GetChild(1));
case AstNodeType.SUB:
return ExecuteNode(node.GetChild(0)) - ExecuteNode(node.GetChild(1));
case AstNodeType.MUL:
return ExecuteNode(node.GetChild(0)) * ExecuteNode(node.GetChild(1));
case AstNodeType.DIV:
return ExecuteNode(node.GetChild(0)) * ExecuteNode(node.GetChild(1));
case AstNodeType.ASSIGN:
break;
case AstNodeType.FUNC_CALL:
Console.WriteLine(ExecuteNode(node.GetChild(0)));
break;
case AstNodeType.PROGRAM:
for (int i = 0; i < node.ChildCount; i++)
ExecuteNode(node.GetChild(i));
break;
default:
throw new IntepreterException("Неизвестный тип узла AST-дерева");
}
#endif
return 0;
}
示例14: WalkCond
private static TranslateNode WalkCond(ITree condNode)
{
Debug.Assert(condNode.Type == (int)JavaNodeType.FOR_CONDITION);
return condNode.ChildCount == 1
? new TranslationTranslator(condNode.GetChild(0)).Walk()
: null;
}
示例15: LanguageString
public LanguageString(ITree lidString)
{
if (lidString.Type != BlaiseParser.LID_STRING)
{
//TODO
throw new InvalidOperationException("Parsed tree node was not a multilingual string");
}
if (lidString.ChildCount > 0)
{
this.value = lidString.GetChild(0).Text.Trim(trim);
if (lidString.ChildCount > 1)
{
this.language = lidString.GetChild(1).Text;
}
}
}