void Imperative_vardecl(out Node node) { DesignScript.Parser.Imperative.VarDeclNode varDeclNode = new DesignScript.Parser.Imperative.VarDeclNode(); Expect(1); varDeclNode.Line = t.line; varDeclNode.Col = t.col; varDeclNode.name.setValue(t.col, t.line, t.val); if (t.kind == _ident) varDeclNode.name.setValue(t.col, t.line, t.val); if (la.kind == 54) { DesignScript.Parser.Imperative.TypeNode IDEType = new DesignScript.Parser.Imperative.TypeNode(); Imperative_TypeRestriction(out IDEType); varDeclNode.IDEArgumentType = IDEType; } if (la.kind == 53) { Get(); if (t.val == "=") varDeclNode.equal.setValue(t.col, t.line, t.val); Node rhsNode = null; Imperative_expr(out rhsNode); varDeclNode.NameNode = rhsNode; } node = varDeclNode; }
void Imperative_TypeRestriction(out DesignScript.Parser.Imperative.TypeNode IDEType) { IDEType = new DesignScript.Parser.Imperative.TypeNode(); ExpectWeak(54, 11); if (t.val == ":") IDEType.colon.setValue(t.col, t.line, t.val); if (StartOf(12)) { if (la.kind == 37) { Get(); } else if (la.kind == 38) { Get(); } else if (la.kind == 39) { Get(); } else { Get(); } IDEType.BuildInTypeSetValue(t.val, t.line, t.col); } else if (la.kind == 1) { Get(); IDEType.UserDefinedTypeSetValue(t.val, t.line, t.col); } else SynErr(131); while (la.kind == 7) { string openBracket = null; string closeBracket = null; if (la.val == "[") openBracket = la.val; int bracket_line = la.line; int bracket_col = la.col; Get(); if (la.val == "]") closeBracket = la.val; Expect(8); if (openBracket != null && closeBracket != null) IDEType.AddBracket(openBracket, bracket_line, bracket_col, closeBracket, t.line, t.col); if (la.kind == 21) { Get(); IDEType.op.setValue(t.col, t.line, t.val); string multiDimOpenBracket = null; string multiDimCloseBracket = null; if (la.val == "[") multiDimOpenBracket = la.val; int bracket2_line = la.line; int bracket2_col = la.col; Expect(7); if (la.val == "]") multiDimCloseBracket = la.val; Expect(8); if (multiDimOpenBracket != null && multiDimCloseBracket != null) IDEType.AddMultiDimNodes(multiDimOpenBracket, bracket2_line, bracket2_col, multiDimCloseBracket, t.line, t.col); } } }