void Assoc_TypeRestriction(out DesignScript.Parser.Associative.TypeNode IDEType) { IDEType = new DesignScript.Parser.Associative.TypeNode(); ExpectWeak(54, 11); if (t.val == ":") IDEType.colon.SetValue(t.val, t.line, t.col); 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(90); 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.val, t.line, t.col); 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); } } }