Beispiel #1
0
        void Imperative_Ident(out Node node)
        {
            ProtoCore.DSASM.UnaryOperator op = ProtoCore.DSASM.UnaryOperator.None;
            DesignScript.Parser.Imperative.IdentifierNode var = null;

            Expect(1);
            int ltype = (0 == String.Compare(t.val, "return")) ? (int)ProtoCore.PrimitiveType.kTypeReturn : (int)ProtoCore.PrimitiveType.kTypeVar;
            DesignScript.Parser.Imperative.IdentifierNode var2 = new DesignScript.Parser.Imperative.IdentifierNode()
            {
            // TODO Jun: Move the primitive types into a class table
            Col = t.col,
            Line = t.line,
            Name = t.val,
            type = ltype,
            datatype = (ProtoCore.PrimitiveType)ltype
            };
            if (t.val == "return") var2.Return.setValue(t.col, t.line, t.val); else var2.Value = t.val;
            var = var2;

            #if ENABLE_INC_DEC_FIX
            if (la.kind == 66 || la.kind == 67) {
            Imperative_PostFixOp(out op);
            DesignScript.Parser.Imperative.PostFixNode pfNode = new DesignScript.Parser.Imperative.PostFixNode();
                     pfNode.OperatorPos = new DesignScript.Parser.Imperative.IDEHelpNode() { Col = t.col, Line = t.line, Value = t.val, Type = DesignScript.Parser.Imperative.IDEHelpNode.HelpNodeType.PunctuationNode };
            pfNode.Operator = op;
            pfNode.Identifier = var;
                     pfNode.Line = var.Line;
                     pfNode.Col = var.Col;
            var = pfNode;

            }
            #endif
            node = var;
        }
Beispiel #2
0
 void Imperative_functioncall(out Node node)
 {
     Expect(1);
     DesignScript.Parser.Imperative.IdentifierNode function = new DesignScript.Parser.Imperative.IdentifierNode() { Value = t.val, Name = t.val, Col = t.col, Line = t.line };
     List<Node> arglist = new List<Node>();
                           List<DesignScript.Parser.Imperative.IDEHelpNode> argCommaPosList = new List<DesignScript.Parser.Imperative.IDEHelpNode>();
     DesignScript.Parser.Imperative.IDEHelpNode openParenPos = null; DesignScript.Parser.Imperative.IDEHelpNode closeParenPos = null;
     if (la.val == "(") openParenPos = new DesignScript.Parser.Imperative.IDEHelpNode()  { Col = la.col, Line = la.line, Value = la.val, Type = DesignScript.Parser.Imperative.IDEHelpNode.HelpNodeType.PunctuationNode };
     Expect(9);
     if (StartOf(18)) {
     Node argNode = null;
     Imperative_expr(out argNode);
     arglist.Add(argNode);
     while (la.kind == 52) {
         Get();
         DesignScript.Parser.Imperative.IDEHelpNode commaPos = new DesignScript.Parser.Imperative.IDEHelpNode()  { Col = t.col, Line = t.line, Value = t.val, Type = DesignScript.Parser.Imperative.IDEHelpNode.HelpNodeType.PunctuationNode };
         argCommaPosList.Add(commaPos);
         Imperative_expr(out argNode);
         arglist.Add(argNode);
     }
     }
     if (la.val == ")" && openParenPos != null) closeParenPos = new DesignScript.Parser.Imperative.IDEHelpNode()  { Col = la.col, Line = la.line, Value = la.val, Type = DesignScript.Parser.Imperative.IDEHelpNode.HelpNodeType.PunctuationNode }; else if (la.val != ")") openParenPos = null;
     Expect(10);
     DesignScript.Parser.Imperative.FunctionCallNode funcNode = new DesignScript.Parser.Imperative.FunctionCallNode();
     funcNode.Col = function.Col;
     funcNode.Line = function.Line;
                              funcNode.OpenParenPos = openParenPos;
                              funcNode.CloseParenPos = closeParenPos;
                              funcNode.ArgCommaPosList = argCommaPosList;
     funcNode.Function = function;
     funcNode.FormalArguments = arglist;
     node = funcNode;
 }