public override void Init(AstContext context, ParseTreeNode treeNode) { base.Init(context, treeNode); ConditionNode = (AstNode)treeNode.FirstChild().AstNode; ResultNode = (AstNode)treeNode.LastChild().AstNode; }
public override void Init(AstContext context, ParseTreeNode treeNode) { base.Init(context, treeNode); var op = treeNode.FirstChild().FindTokenAndGetText(); Op = op; Argument = (AstNode)treeNode.LastChild().AstNode; }
public override void Init(AstContext context, ParseTreeNode treeNode) { base.Init(context, treeNode); if (treeNode.FirstChild().FindTokenAndGetText() == "NOT") { Left = AddChild("Arg", treeNode.LastChild()); var opToken = treeNode.FirstChild().Token; Op = opToken.Text; } else { Left = AddChild("Arg", treeNode.ChildNodes[0]); Right = AddChild("Arg", treeNode.ChildNodes[2]); var opToken = treeNode.ChildNodes[1].FindToken(); Op = opToken.Text; } AsString = Op + "(operator)"; }
public override void Init(AstContext context, ParseTreeNode treeNode) { base.Init(context, treeNode); var stringfiedValue = treeNode.FirstChild().FindTokenAndGetText(); bool value; if (!Boolean.TryParse(stringfiedValue, out value)) { var message = $"{stringfiedValue} is not a valid boolean value"; throw new AstException(this, message); } Value = value; AsString = stringfiedValue + "(boolean)"; }
public override void Init(AstContext context, ParseTreeNode treeNode) { base.Init(context, treeNode); FunctionName = treeNode.FirstChild().FindTokenAndGetText(); AsString = FunctionName + "(functionCall)"; _args = new List <AstNode>(); for (int i = 1; i <= treeNode.ChildNodes.Count - 1; i++) { var node = treeNode.ChildNodes[i]; if (node.AstNode != null) { AddChild("Arg", node); _args.Add((AstNode)node.AstNode); } } }
/// <summary> /// Remove superfluous qualification from a node /// </summary> public ParseTreeNode QualifyMinimal(ParseTreeNode reference) { // Check if this reference can be qualified if (!isPrefixableReference(reference)) { return(reference); } var referenced = reference.ChildNodes.First(node => !node.Is(GrammarNames.Prefix)); var prefix = reference.FirstChild(GrammarNames.Prefix); // No prefix, it's already minimal if (prefix == null) { return(reference); } var prefixinfo = prefix.GetPrefixInfo(); var childs = new ParseTreeNodeList(); if (prefixinfo.HasFileName && prefixinfo.FileName != DefinedIn.FileName) { childs.Add(CustomParseTreeNode.NonTerminal(GrammarNames.File, GrammarNames.TokenEnclosedInBrackets, $"[{prefixinfo.FileName}]")); childs.Add(CustomParseTreeNode.Terminal(GrammarNames.TokenSheet, prefixinfo.Sheet)); } else if (prefixinfo.HasSheet && prefixinfo.Sheet != DefinedIn.WorksheetClean) { childs.Add(CustomParseTreeNode.Terminal(GrammarNames.TokenSheet, DefinedIn.Worksheet)); } if (childs.Count > 0) { prefix = CustomParseTreeNode.From(prefix).SetChildNodes(childs); return(CustomParseTreeNode.From(reference).SetChildNodes(prefix, referenced)); } else { return(CustomParseTreeNode.From(reference).SetChildNodes(referenced)); } }
public override void Init(AstContext context, ParseTreeNode treeNode) { base.Init(context, treeNode); AddChild("expression", treeNode.FirstChild()); Expression = (AstNode)treeNode.FirstChild().AstNode; }