Exemplo n.º 1
0
        public override void Init(AstContext context, ParseTreeNode treeNode)
        {
            base.Init(context, treeNode);

            ConditionNode = (AstNode)treeNode.FirstChild().AstNode;
            ResultNode    = (AstNode)treeNode.LastChild().AstNode;
        }
Exemplo n.º 2
0
        public override void Init(AstContext context, ParseTreeNode treeNode)
        {
            base.Init(context, treeNode);
            var op = treeNode.FirstChild().FindTokenAndGetText();

            Op       = op;
            Argument = (AstNode)treeNode.LastChild().AstNode;
        }
Exemplo n.º 3
0
        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)";
        }
Exemplo n.º 4
0
        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)";
        }
Exemplo n.º 5
0
        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);
                }
            }
        }
Exemplo n.º 6
0
        /// <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));
            }
        }
Exemplo n.º 7
0
 public override void Init(AstContext context, ParseTreeNode treeNode)
 {
     base.Init(context, treeNode);
     AddChild("expression", treeNode.FirstChild());
     Expression = (AstNode)treeNode.FirstChild().AstNode;
 }