示例#1
0
def p_Type(p):
    '''
    Type : NUMBER_TYPE
         | STRING_TYPE
         | BOOL_TYPE
         | NOTHING_TYPE
         | FunctionType
         | ListType
         | MapType
         | StructType

         | ENDPOINT 

         | EXTERNAL StructType
         | EXTERNAL NUMBER_TYPE
         | EXTERNAL STRING_TYPE
         | EXTERNAL BOOL_TYPE
         | EXTERNAL ListType
         | EXTERNAL MapType
         '''

    p[0] = AstNode(AST_TYPE,p.lineno(1),p.lexpos(1));    
    if len(p) == 2:
        typeIndex = 1;
    else:
        typeIndex = 2;

    if isinstance(p[typeIndex],basestring):
        p[0].value = p[typeIndex];
    else:
        # means that has function, list type, or struct type
        p[0] = p[typeIndex];

    if len(p) == 3:
        p[0].external = True;