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;