Beispiel #1
0
 /*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);
 }
Beispiel #2
0
        /*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));
        }