/*type: | built-in-type optional-rank-specifier-list | qualified-identifier optional-rank-specifier-list */ private TypeNode types() { printIfDebug("types"); if (pass(typesOptions) && !pass(TokenType.ID)) { var typeToken = token; var primitiveType = built_in_type(); var newMultArrayTypeList = optional_rank_specifier_list(); if (newMultArrayTypeList.Count > 0) { return(new ArrayTypeNode(primitiveType, newMultArrayTypeList, typeToken)); } else { return(primitiveType); } } else if (pass(TokenType.ID)) { var typeToken = token; var typeName = qualified_identifier(); var abstractType = new AbstractTypeNode(typeName, typeToken); var newMultArrayTypeList = optional_rank_specifier_list(); if (newMultArrayTypeList.Count > 0) { return(new ArrayTypeNode(abstractType, newMultArrayTypeList, typeToken)); } else { return(abstractType); } } else { throwError("type expected"); } return(null); }
/*instance-expression: | type instance-expression-factorized */ private InstanceExpressionNode instance_expression() { printIfDebug("instance_expression"); if (!pass(typesOptions)) { throwError("type expected"); } TypeNode type = null; var identifierToken = token; if (pass(TokenType.ID)) { var identifier = qualified_identifier(); // identifier = getFullIdentifierName(identifier); type = new AbstractTypeNode(identifier, identifierToken); } else { type = built_in_type(); // consumeToken(); } return(instance_expression_factorized(type, identifierToken)); }