void Imperative_logicalexpr(out Node node) { node = null; Imperative_RangeExpr(out node); while (StartOf(14)) { Operator op; Imperative_relop(out op); DesignScript.Parser.Imperative.IDEHelpNode operatorPos = new DesignScript.Parser.Imperative.IDEHelpNode() { Col = t.col, Line = t.line, Value = t.val, Type = DesignScript.Parser.Imperative.IDEHelpNode.HelpNodeType.PunctuationNode }; Node rhsNode = null; Imperative_RangeExpr(out rhsNode); DesignScript.Parser.Imperative.BinaryExpressionNode bNode = new DesignScript.Parser.Imperative.BinaryExpressionNode(); bNode.LeftNode = node; bNode.RightNode = rhsNode; bNode.Optr = op; bNode.Col = node.Col; bNode.Line = node.Line; bNode.OperatorPos = operatorPos; node = bNode; } }
void Imperative_term(out Node node) { node = null; Imperative_interimfactor(out node); while (la.kind == 58 || la.kind == 59 || la.kind == 60) { Operator op; Imperative_mulop(out op); DesignScript.Parser.Imperative.IDEHelpNode operatorPos = new DesignScript.Parser.Imperative.IDEHelpNode() { Col = t.col, Line = t.line, Value = t.val, Type = DesignScript.Parser.Imperative.IDEHelpNode.HelpNodeType.PunctuationNode }; Node rhsNode = null; Imperative_interimfactor(out rhsNode); DesignScript.Parser.Imperative.BinaryExpressionNode bNode = new DesignScript.Parser.Imperative.BinaryExpressionNode(); bNode.LeftNode = node; bNode.RightNode = rhsNode; bNode.Optr = op; bNode.Col = node.Col; bNode.Line = node.Line; bNode.OperatorPos = operatorPos; node = bNode; } }
void Imperative_assignstmt(out Node node) { node = null; Node lhsNode = null; isLeft = true; Imperative_DecoratedIdentifier(out lhsNode); node = lhsNode; isLeft = false; if (!(lhsNode is DesignScript.Parser.Imperative.PostFixNode)) { DesignScript.Parser.Imperative.IDEHelpNode operatorPos = null; Expect(53); if (t.val == "=") operatorPos = new DesignScript.Parser.Imperative.IDEHelpNode() { Col = t.col, Line = t.line, Value = t.val, Type = DesignScript.Parser.Imperative.IDEHelpNode.HelpNodeType.PunctuationNode }; DesignScript.Parser.Imperative.IDEHelpNode endline = null; Node rhsNode = null; if (la.val == "[") { Imperative_languageblock(out rhsNode); } else if (HasMoreAssignmentStatements()) { Imperative_assignstmt(out rhsNode); } else if (StartOf(18)) { Imperative_expr(out rhsNode); Expect(20); if (t.kind == _endline) endline = new DesignScript.Parser.Imperative.IDEHelpNode() { Col = t.col, Line = t.line, Value = t.val, Type = DesignScript.Parser.Imperative.IDEHelpNode.HelpNodeType.PunctuationNode }; } else SynErr(112); DesignScript.Parser.Imperative.BinaryExpressionNode bNode = new DesignScript.Parser.Imperative.BinaryExpressionNode(); bNode.LeftNode = lhsNode; bNode.RightNode = rhsNode; bNode.Optr = Operator.assign; bNode.OperatorPos = operatorPos; bNode.Col = lhsNode.Col; bNode.Line = lhsNode.Line; bNode.EndlinePos = endline; node = bNode; } }