cparse.py revision 2632
12632Sstever@eecs.umich.edu# ----------------------------------------------------------------------------- 22632Sstever@eecs.umich.edu# cparse.py 32632Sstever@eecs.umich.edu# 42632Sstever@eecs.umich.edu# Simple parser for ANSI C. Based on the grammar in K&R, 2nd Ed. 52632Sstever@eecs.umich.edu# ----------------------------------------------------------------------------- 62632Sstever@eecs.umich.edu 72632Sstever@eecs.umich.eduimport yacc 82632Sstever@eecs.umich.eduimport clex 92632Sstever@eecs.umich.edu 102632Sstever@eecs.umich.edu# Get the token map 112632Sstever@eecs.umich.edutokens = clex.tokens 122632Sstever@eecs.umich.edu 132632Sstever@eecs.umich.edu# translation-unit: 142632Sstever@eecs.umich.edu 152632Sstever@eecs.umich.edudef p_translation_unit_1(t): 162632Sstever@eecs.umich.edu 'translation_unit : external_declaration' 172632Sstever@eecs.umich.edu pass 182632Sstever@eecs.umich.edu 192632Sstever@eecs.umich.edudef p_translation_unit_2(t): 202632Sstever@eecs.umich.edu 'translation_unit : translation_unit external_declaration' 212632Sstever@eecs.umich.edu pass 222632Sstever@eecs.umich.edu 232632Sstever@eecs.umich.edu# external-declaration: 242632Sstever@eecs.umich.edu 252632Sstever@eecs.umich.edudef p_external_declaration_1(t): 262632Sstever@eecs.umich.edu 'external_declaration : function_definition' 272632Sstever@eecs.umich.edu pass 282632Sstever@eecs.umich.edu 292632Sstever@eecs.umich.edudef p_external_declaration_2(t): 302632Sstever@eecs.umich.edu 'external_declaration : declaration' 312632Sstever@eecs.umich.edu pass 322632Sstever@eecs.umich.edu 332632Sstever@eecs.umich.edu# function-definition: 342632Sstever@eecs.umich.edu 352632Sstever@eecs.umich.edudef p_function_definition_1(t): 362632Sstever@eecs.umich.edu 'function_definition : declaration_specifiers declarator declaration_list compound_statement' 372632Sstever@eecs.umich.edu pass 382632Sstever@eecs.umich.edu 392632Sstever@eecs.umich.edudef p_function_definition_2(t): 402632Sstever@eecs.umich.edu 'function_definition : declarator declaration_list compound_statement' 412632Sstever@eecs.umich.edu pass 422632Sstever@eecs.umich.edu 432632Sstever@eecs.umich.edudef p_function_definition_3(t): 442632Sstever@eecs.umich.edu 'function_definition : declarator compound_statement' 452632Sstever@eecs.umich.edu pass 462632Sstever@eecs.umich.edu 472632Sstever@eecs.umich.edudef p_function_definition_4(t): 482632Sstever@eecs.umich.edu 'function_definition : declaration_specifiers declarator compound_statement' 492632Sstever@eecs.umich.edu pass 502632Sstever@eecs.umich.edu 512632Sstever@eecs.umich.edu# declaration: 522632Sstever@eecs.umich.edu 532632Sstever@eecs.umich.edudef p_declaration_1(t): 542632Sstever@eecs.umich.edu 'declaration : declaration_specifiers init_declarator_list SEMI' 552632Sstever@eecs.umich.edu pass 562632Sstever@eecs.umich.edu 572632Sstever@eecs.umich.edudef p_declaration_2(t): 582632Sstever@eecs.umich.edu 'declaration : declaration_specifiers SEMI' 592632Sstever@eecs.umich.edu pass 602632Sstever@eecs.umich.edu 612632Sstever@eecs.umich.edu# declaration-list: 622632Sstever@eecs.umich.edu 632632Sstever@eecs.umich.edudef p_declaration_list_1(t): 642632Sstever@eecs.umich.edu 'declaration_list : declaration' 652632Sstever@eecs.umich.edu pass 662632Sstever@eecs.umich.edu 672632Sstever@eecs.umich.edudef p_declaration_list_2(t): 682632Sstever@eecs.umich.edu 'declaration_list : declaration_list declaration ' 692632Sstever@eecs.umich.edu pass 702632Sstever@eecs.umich.edu 712632Sstever@eecs.umich.edu# declaration-specifiers 722632Sstever@eecs.umich.edudef p_declaration_specifiers_1(t): 732632Sstever@eecs.umich.edu 'declaration_specifiers : storage_class_specifier declaration_specifiers' 742632Sstever@eecs.umich.edu pass 752632Sstever@eecs.umich.edu 762632Sstever@eecs.umich.edudef p_declaration_specifiers_2(t): 772632Sstever@eecs.umich.edu 'declaration_specifiers : type_specifier declaration_specifiers' 782632Sstever@eecs.umich.edu pass 792632Sstever@eecs.umich.edu 802632Sstever@eecs.umich.edudef p_declaration_specifiers_3(t): 812632Sstever@eecs.umich.edu 'declaration_specifiers : type_qualifier declaration_specifiers' 822632Sstever@eecs.umich.edu pass 832632Sstever@eecs.umich.edu 842632Sstever@eecs.umich.edudef p_declaration_specifiers_4(t): 852632Sstever@eecs.umich.edu 'declaration_specifiers : storage_class_specifier' 862632Sstever@eecs.umich.edu pass 872632Sstever@eecs.umich.edu 882632Sstever@eecs.umich.edudef p_declaration_specifiers_5(t): 892632Sstever@eecs.umich.edu 'declaration_specifiers : type_specifier' 902632Sstever@eecs.umich.edu pass 912632Sstever@eecs.umich.edu 922632Sstever@eecs.umich.edudef p_declaration_specifiers_6(t): 932632Sstever@eecs.umich.edu 'declaration_specifiers : type_qualifier' 942632Sstever@eecs.umich.edu pass 952632Sstever@eecs.umich.edu 962632Sstever@eecs.umich.edu# storage-class-specifier 972632Sstever@eecs.umich.edudef p_storage_class_specifier(t): 982632Sstever@eecs.umich.edu '''storage_class_specifier : AUTO 992632Sstever@eecs.umich.edu | REGISTER 1002632Sstever@eecs.umich.edu | STATIC 1012632Sstever@eecs.umich.edu | EXTERN 1022632Sstever@eecs.umich.edu | TYPEDEF 1032632Sstever@eecs.umich.edu ''' 1042632Sstever@eecs.umich.edu pass 1052632Sstever@eecs.umich.edu 1062632Sstever@eecs.umich.edu# type-specifier: 1072632Sstever@eecs.umich.edudef p_type_specifier(t): 1082632Sstever@eecs.umich.edu '''type_specifier : VOID 1092632Sstever@eecs.umich.edu | CHAR 1102632Sstever@eecs.umich.edu | SHORT 1112632Sstever@eecs.umich.edu | INT 1122632Sstever@eecs.umich.edu | LONG 1132632Sstever@eecs.umich.edu | FLOAT 1142632Sstever@eecs.umich.edu | DOUBLE 1152632Sstever@eecs.umich.edu | SIGNED 1162632Sstever@eecs.umich.edu | UNSIGNED 1172632Sstever@eecs.umich.edu | struct_or_union_specifier 1182632Sstever@eecs.umich.edu | enum_specifier 1192632Sstever@eecs.umich.edu | TYPEID 1202632Sstever@eecs.umich.edu ''' 1212632Sstever@eecs.umich.edu pass 1222632Sstever@eecs.umich.edu 1232632Sstever@eecs.umich.edu# type-qualifier: 1242632Sstever@eecs.umich.edudef p_type_qualifier(t): 1252632Sstever@eecs.umich.edu '''type_qualifier : CONST 1262632Sstever@eecs.umich.edu | VOLATILE''' 1272632Sstever@eecs.umich.edu pass 1282632Sstever@eecs.umich.edu 1292632Sstever@eecs.umich.edu# struct-or-union-specifier 1302632Sstever@eecs.umich.edu 1312632Sstever@eecs.umich.edudef p_struct_or_union_specifier_1(t): 1322632Sstever@eecs.umich.edu 'struct_or_union_specifier : struct_or_union ID LBRACE struct_declaration_list RBRACE' 1332632Sstever@eecs.umich.edu pass 1342632Sstever@eecs.umich.edu 1352632Sstever@eecs.umich.edudef p_struct_or_union_specifier_2(t): 1362632Sstever@eecs.umich.edu 'struct_or_union_specifier : struct_or_union LBRACE struct_declaration_list RBRACE' 1372632Sstever@eecs.umich.edu pass 1382632Sstever@eecs.umich.edu 1392632Sstever@eecs.umich.edudef p_struct_or_union_specifier_3(t): 1402632Sstever@eecs.umich.edu 'struct_or_union_specifier : struct_or_union ID' 1412632Sstever@eecs.umich.edu pass 1422632Sstever@eecs.umich.edu 1432632Sstever@eecs.umich.edu# struct-or-union: 1442632Sstever@eecs.umich.edudef p_struct_or_union(t): 1452632Sstever@eecs.umich.edu '''struct_or_union : STRUCT 1462632Sstever@eecs.umich.edu | UNION 1472632Sstever@eecs.umich.edu ''' 1482632Sstever@eecs.umich.edu pass 1492632Sstever@eecs.umich.edu 1502632Sstever@eecs.umich.edu# struct-declaration-list: 1512632Sstever@eecs.umich.edu 1522632Sstever@eecs.umich.edudef p_struct_declaration_list_1(t): 1532632Sstever@eecs.umich.edu 'struct_declaration_list : struct_declaration' 1542632Sstever@eecs.umich.edu pass 1552632Sstever@eecs.umich.edu 1562632Sstever@eecs.umich.edudef p_struct_declaration_list_2(t): 1572632Sstever@eecs.umich.edu 'struct_declaration_list : struct_declarator_list struct_declaration' 1582632Sstever@eecs.umich.edu pass 1592632Sstever@eecs.umich.edu 1602632Sstever@eecs.umich.edu# init-declarator-list: 1612632Sstever@eecs.umich.edu 1622632Sstever@eecs.umich.edudef p_init_declarator_list_1(t): 1632632Sstever@eecs.umich.edu 'init_declarator_list : init_declarator' 1642632Sstever@eecs.umich.edu pass 1652632Sstever@eecs.umich.edu 1662632Sstever@eecs.umich.edudef p_init_declarator_list_2(t): 1672632Sstever@eecs.umich.edu 'init_declarator_list : init_declarator_list COMMA init_declarator' 1682632Sstever@eecs.umich.edu pass 1692632Sstever@eecs.umich.edu 1702632Sstever@eecs.umich.edu# init-declarator 1712632Sstever@eecs.umich.edu 1722632Sstever@eecs.umich.edudef p_init_declarator_1(t): 1732632Sstever@eecs.umich.edu 'init_declarator : declarator' 1742632Sstever@eecs.umich.edu pass 1752632Sstever@eecs.umich.edu 1762632Sstever@eecs.umich.edudef p_init_declarator_2(t): 1772632Sstever@eecs.umich.edu 'init_declarator : declarator EQUALS initializer' 1782632Sstever@eecs.umich.edu pass 1792632Sstever@eecs.umich.edu 1802632Sstever@eecs.umich.edu# struct-declaration: 1812632Sstever@eecs.umich.edu 1822632Sstever@eecs.umich.edudef p_struct_declaration(t): 1832632Sstever@eecs.umich.edu 'struct_declaration : specifier_qualifier_list struct_declarator_list SEMI' 1842632Sstever@eecs.umich.edu pass 1852632Sstever@eecs.umich.edu 1862632Sstever@eecs.umich.edu# specifier-qualifier-list: 1872632Sstever@eecs.umich.edu 1882632Sstever@eecs.umich.edudef p_specifier_qualifier_list_1(t): 1892632Sstever@eecs.umich.edu 'specifier_qualifier_list : type_specifier specifier_qualifier_list' 1902632Sstever@eecs.umich.edu pass 1912632Sstever@eecs.umich.edu 1922632Sstever@eecs.umich.edudef p_specifier_qualifier_list_2(t): 1932632Sstever@eecs.umich.edu 'specifier_qualifier_list : type_specifier' 1942632Sstever@eecs.umich.edu pass 1952632Sstever@eecs.umich.edu 1962632Sstever@eecs.umich.edudef p_specifier_qualifier_list_3(t): 1972632Sstever@eecs.umich.edu 'specifier_qualifier_list : type_qualifier specifier_qualifier_list' 1982632Sstever@eecs.umich.edu pass 1992632Sstever@eecs.umich.edu 2002632Sstever@eecs.umich.edudef p_specifier_qualifier_list_4(t): 2012632Sstever@eecs.umich.edu 'specifier_qualifier_list : type_qualifier' 2022632Sstever@eecs.umich.edu pass 2032632Sstever@eecs.umich.edu 2042632Sstever@eecs.umich.edu# struct-declarator-list: 2052632Sstever@eecs.umich.edu 2062632Sstever@eecs.umich.edudef p_struct_declarator_list_1(t): 2072632Sstever@eecs.umich.edu 'struct_declarator_list : struct_declarator' 2082632Sstever@eecs.umich.edu pass 2092632Sstever@eecs.umich.edu 2102632Sstever@eecs.umich.edudef p_struct_declarator_list_2(t): 2112632Sstever@eecs.umich.edu 'struct_declarator_list : struct_declarator_list COMMA struct_declarator' 2122632Sstever@eecs.umich.edu pass 2132632Sstever@eecs.umich.edu 2142632Sstever@eecs.umich.edu# struct-declarator: 2152632Sstever@eecs.umich.edu 2162632Sstever@eecs.umich.edudef p_struct_declarator_1(t): 2172632Sstever@eecs.umich.edu 'struct_declarator : declarator' 2182632Sstever@eecs.umich.edu pass 2192632Sstever@eecs.umich.edu 2202632Sstever@eecs.umich.edudef p_struct_declarator_2(t): 2212632Sstever@eecs.umich.edu 'struct_declarator : declarator COLON constant_expression' 2222632Sstever@eecs.umich.edu pass 2232632Sstever@eecs.umich.edu 2242632Sstever@eecs.umich.edudef p_struct_declarator_3(t): 2252632Sstever@eecs.umich.edu 'struct_declarator : COLON constant_expression' 2262632Sstever@eecs.umich.edu pass 2272632Sstever@eecs.umich.edu 2282632Sstever@eecs.umich.edu# enum-specifier: 2292632Sstever@eecs.umich.edu 2302632Sstever@eecs.umich.edudef p_enum_specifier_1(t): 2312632Sstever@eecs.umich.edu 'enum_specifier : ENUM ID LBRACE enumerator_list RBRACE' 2322632Sstever@eecs.umich.edu pass 2332632Sstever@eecs.umich.edu 2342632Sstever@eecs.umich.edudef p_enum_specifier_2(t): 2352632Sstever@eecs.umich.edu 'enum_specifier : ENUM LBRACE enumerator_list RBRACE' 2362632Sstever@eecs.umich.edu pass 2372632Sstever@eecs.umich.edu 2382632Sstever@eecs.umich.edudef p_enum_specifier_3(t): 2392632Sstever@eecs.umich.edu 'enum_specifier : ENUM ID' 2402632Sstever@eecs.umich.edu pass 2412632Sstever@eecs.umich.edu 2422632Sstever@eecs.umich.edu# enumerator_list: 2432632Sstever@eecs.umich.edudef p_enumerator_list_1(t): 2442632Sstever@eecs.umich.edu 'enumerator_list : enumerator' 2452632Sstever@eecs.umich.edu pass 2462632Sstever@eecs.umich.edu 2472632Sstever@eecs.umich.edudef p_enumerator_list_2(t): 2482632Sstever@eecs.umich.edu 'enumerator_list : enumerator_list COMMA enumerator' 2492632Sstever@eecs.umich.edu pass 2502632Sstever@eecs.umich.edu 2512632Sstever@eecs.umich.edu# enumerator: 2522632Sstever@eecs.umich.edudef p_enumerator_1(t): 2532632Sstever@eecs.umich.edu 'enumerator : ID' 2542632Sstever@eecs.umich.edu pass 2552632Sstever@eecs.umich.edu 2562632Sstever@eecs.umich.edudef p_enumerator_2(t): 2572632Sstever@eecs.umich.edu 'enumerator : ID EQUALS constant_expression' 2582632Sstever@eecs.umich.edu pass 2592632Sstever@eecs.umich.edu 2602632Sstever@eecs.umich.edu# declarator: 2612632Sstever@eecs.umich.edu 2622632Sstever@eecs.umich.edudef p_declarator_1(t): 2632632Sstever@eecs.umich.edu 'declarator : pointer direct_declarator' 2642632Sstever@eecs.umich.edu pass 2652632Sstever@eecs.umich.edu 2662632Sstever@eecs.umich.edudef p_declarator_2(t): 2672632Sstever@eecs.umich.edu 'declarator : direct_declarator' 2682632Sstever@eecs.umich.edu pass 2692632Sstever@eecs.umich.edu 2702632Sstever@eecs.umich.edu# direct-declarator: 2712632Sstever@eecs.umich.edu 2722632Sstever@eecs.umich.edudef p_direct_declarator_1(t): 2732632Sstever@eecs.umich.edu 'direct_declarator : ID' 2742632Sstever@eecs.umich.edu pass 2752632Sstever@eecs.umich.edu 2762632Sstever@eecs.umich.edudef p_direct_declarator_2(t): 2772632Sstever@eecs.umich.edu 'direct_declarator : LPAREN declarator RPAREN' 2782632Sstever@eecs.umich.edu pass 2792632Sstever@eecs.umich.edu 2802632Sstever@eecs.umich.edudef p_direct_declarator_3(t): 2812632Sstever@eecs.umich.edu 'direct_declarator : direct_declarator LBRACKET constant_expression_opt RBRACKET' 2822632Sstever@eecs.umich.edu pass 2832632Sstever@eecs.umich.edu 2842632Sstever@eecs.umich.edudef p_direct_declarator_4(t): 2852632Sstever@eecs.umich.edu 'direct_declarator : direct_declarator LPAREN parameter_type_list RPAREN ' 2862632Sstever@eecs.umich.edu pass 2872632Sstever@eecs.umich.edu 2882632Sstever@eecs.umich.edudef p_direct_declarator_5(t): 2892632Sstever@eecs.umich.edu 'direct_declarator : direct_declarator LPAREN identifier_list RPAREN ' 2902632Sstever@eecs.umich.edu pass 2912632Sstever@eecs.umich.edu 2922632Sstever@eecs.umich.edudef p_direct_declarator_6(t): 2932632Sstever@eecs.umich.edu 'direct_declarator : direct_declarator LPAREN RPAREN ' 2942632Sstever@eecs.umich.edu pass 2952632Sstever@eecs.umich.edu 2962632Sstever@eecs.umich.edu# pointer: 2972632Sstever@eecs.umich.edudef p_pointer_1(t): 2982632Sstever@eecs.umich.edu 'pointer : TIMES type_qualifier_list' 2992632Sstever@eecs.umich.edu pass 3002632Sstever@eecs.umich.edu 3012632Sstever@eecs.umich.edudef p_pointer_2(t): 3022632Sstever@eecs.umich.edu 'pointer : TIMES' 3032632Sstever@eecs.umich.edu pass 3042632Sstever@eecs.umich.edu 3052632Sstever@eecs.umich.edudef p_pointer_3(t): 3062632Sstever@eecs.umich.edu 'pointer : TIMES type_qualifier_list pointer' 3072632Sstever@eecs.umich.edu pass 3082632Sstever@eecs.umich.edu 3092632Sstever@eecs.umich.edudef p_pointer_4(t): 3102632Sstever@eecs.umich.edu 'pointer : TIMES pointer' 3112632Sstever@eecs.umich.edu pass 3122632Sstever@eecs.umich.edu 3132632Sstever@eecs.umich.edu# type-qualifier-list: 3142632Sstever@eecs.umich.edu 3152632Sstever@eecs.umich.edudef p_type_qualifier_list_1(t): 3162632Sstever@eecs.umich.edu 'type_qualifier_list : type_qualifier' 3172632Sstever@eecs.umich.edu pass 3182632Sstever@eecs.umich.edu 3192632Sstever@eecs.umich.edudef p_type_qualifier_list_2(t): 3202632Sstever@eecs.umich.edu 'type_qualifier_list : type_qualifier_list type_qualifier' 3212632Sstever@eecs.umich.edu pass 3222632Sstever@eecs.umich.edu 3232632Sstever@eecs.umich.edu# parameter-type-list: 3242632Sstever@eecs.umich.edu 3252632Sstever@eecs.umich.edudef p_parameter_type_list_1(t): 3262632Sstever@eecs.umich.edu 'parameter_type_list : parameter_list' 3272632Sstever@eecs.umich.edu pass 3282632Sstever@eecs.umich.edu 3292632Sstever@eecs.umich.edudef p_parameter_type_list_2(t): 3302632Sstever@eecs.umich.edu 'parameter_type_list : parameter_list COMMA ELLIPSIS' 3312632Sstever@eecs.umich.edu pass 3322632Sstever@eecs.umich.edu 3332632Sstever@eecs.umich.edu# parameter-list: 3342632Sstever@eecs.umich.edu 3352632Sstever@eecs.umich.edudef p_parameter_list_1(t): 3362632Sstever@eecs.umich.edu 'parameter_list : parameter_declaration' 3372632Sstever@eecs.umich.edu pass 3382632Sstever@eecs.umich.edu 3392632Sstever@eecs.umich.edudef p_parameter_list_2(t): 3402632Sstever@eecs.umich.edu 'parameter_list : parameter_list COMMA parameter_declaration' 3412632Sstever@eecs.umich.edu pass 3422632Sstever@eecs.umich.edu 3432632Sstever@eecs.umich.edu# parameter-declaration: 3442632Sstever@eecs.umich.edudef p_parameter_declaration_1(t): 3452632Sstever@eecs.umich.edu 'parameter_declaration : declaration_specifiers declarator' 3462632Sstever@eecs.umich.edu pass 3472632Sstever@eecs.umich.edu 3482632Sstever@eecs.umich.edudef p_parameter_declaration_2(t): 3492632Sstever@eecs.umich.edu 'parameter_declaration : declaration_specifiers abstract_declarator_opt' 3502632Sstever@eecs.umich.edu pass 3512632Sstever@eecs.umich.edu 3522632Sstever@eecs.umich.edu# identifier-list: 3532632Sstever@eecs.umich.edudef p_identifier_list_1(t): 3542632Sstever@eecs.umich.edu 'identifier_list : ID' 3552632Sstever@eecs.umich.edu pass 3562632Sstever@eecs.umich.edu 3572632Sstever@eecs.umich.edudef p_identifier_list_2(t): 3582632Sstever@eecs.umich.edu 'identifier_list : identifier_list COMMA ID' 3592632Sstever@eecs.umich.edu pass 3602632Sstever@eecs.umich.edu 3612632Sstever@eecs.umich.edu# initializer: 3622632Sstever@eecs.umich.edu 3632632Sstever@eecs.umich.edudef p_initializer_1(t): 3642632Sstever@eecs.umich.edu 'initializer : assignment_expression' 3652632Sstever@eecs.umich.edu pass 3662632Sstever@eecs.umich.edu 3672632Sstever@eecs.umich.edudef p_initializer_2(t): 3682632Sstever@eecs.umich.edu '''initializer : LBRACE initializer_list RBRACE 3692632Sstever@eecs.umich.edu | LBRACE initializer_list COMMA RBRACE''' 3702632Sstever@eecs.umich.edu pass 3712632Sstever@eecs.umich.edu 3722632Sstever@eecs.umich.edu# initializer-list: 3732632Sstever@eecs.umich.edu 3742632Sstever@eecs.umich.edudef p_initializer_list_1(t): 3752632Sstever@eecs.umich.edu 'initializer_list : initializer' 3762632Sstever@eecs.umich.edu pass 3772632Sstever@eecs.umich.edu 3782632Sstever@eecs.umich.edudef p_initializer_list_2(t): 3792632Sstever@eecs.umich.edu 'initializer_list : initializer_list COMMA initializer' 3802632Sstever@eecs.umich.edu pass 3812632Sstever@eecs.umich.edu 3822632Sstever@eecs.umich.edu# type-name: 3832632Sstever@eecs.umich.edu 3842632Sstever@eecs.umich.edudef p_type_name(t): 3852632Sstever@eecs.umich.edu 'type_name : specifier_qualifier_list abstract_declarator_opt' 3862632Sstever@eecs.umich.edu pass 3872632Sstever@eecs.umich.edu 3882632Sstever@eecs.umich.edudef p_abstract_declarator_opt_1(t): 3892632Sstever@eecs.umich.edu 'abstract_declarator_opt : empty' 3902632Sstever@eecs.umich.edu pass 3912632Sstever@eecs.umich.edu 3922632Sstever@eecs.umich.edudef p_abstract_declarator_opt_2(t): 3932632Sstever@eecs.umich.edu 'abstract_declarator_opt : abstract_declarator' 3942632Sstever@eecs.umich.edu pass 3952632Sstever@eecs.umich.edu 3962632Sstever@eecs.umich.edu# abstract-declarator: 3972632Sstever@eecs.umich.edu 3982632Sstever@eecs.umich.edudef p_abstract_declarator_1(t): 3992632Sstever@eecs.umich.edu 'abstract_declarator : pointer ' 4002632Sstever@eecs.umich.edu pass 4012632Sstever@eecs.umich.edu 4022632Sstever@eecs.umich.edudef p_abstract_declarator_2(t): 4032632Sstever@eecs.umich.edu 'abstract_declarator : pointer direct_abstract_declarator' 4042632Sstever@eecs.umich.edu pass 4052632Sstever@eecs.umich.edu 4062632Sstever@eecs.umich.edudef p_abstract_declarator_3(t): 4072632Sstever@eecs.umich.edu 'abstract_declarator : direct_abstract_declarator' 4082632Sstever@eecs.umich.edu pass 4092632Sstever@eecs.umich.edu 4102632Sstever@eecs.umich.edu# direct-abstract-declarator: 4112632Sstever@eecs.umich.edu 4122632Sstever@eecs.umich.edudef p_direct_abstract_declarator_1(t): 4132632Sstever@eecs.umich.edu 'direct_abstract_declarator : LPAREN abstract_declarator RPAREN' 4142632Sstever@eecs.umich.edu pass 4152632Sstever@eecs.umich.edu 4162632Sstever@eecs.umich.edudef p_direct_abstract_declarator_2(t): 4172632Sstever@eecs.umich.edu 'direct_abstract_declarator : direct_abstract_declarator LBRACKET constant_expression_opt RBRACKET' 4182632Sstever@eecs.umich.edu pass 4192632Sstever@eecs.umich.edu 4202632Sstever@eecs.umich.edudef p_direct_abstract_declarator_3(t): 4212632Sstever@eecs.umich.edu 'direct_abstract_declarator : LBRACKET constant_expression_opt RBRACKET' 4222632Sstever@eecs.umich.edu pass 4232632Sstever@eecs.umich.edu 4242632Sstever@eecs.umich.edudef p_direct_abstract_declarator_4(t): 4252632Sstever@eecs.umich.edu 'direct_abstract_declarator : direct_abstract_declarator LPAREN parameter_type_list_opt RPAREN' 4262632Sstever@eecs.umich.edu pass 4272632Sstever@eecs.umich.edu 4282632Sstever@eecs.umich.edudef p_direct_abstract_declarator_5(t): 4292632Sstever@eecs.umich.edu 'direct_abstract_declarator : LPAREN parameter_type_list_opt RPAREN' 4302632Sstever@eecs.umich.edu pass 4312632Sstever@eecs.umich.edu 4322632Sstever@eecs.umich.edu# Optional fields in abstract declarators 4332632Sstever@eecs.umich.edu 4342632Sstever@eecs.umich.edudef p_constant_expression_opt_1(t): 4352632Sstever@eecs.umich.edu 'constant_expression_opt : empty' 4362632Sstever@eecs.umich.edu pass 4372632Sstever@eecs.umich.edu 4382632Sstever@eecs.umich.edudef p_constant_expression_opt_2(t): 4392632Sstever@eecs.umich.edu 'constant_expression_opt : constant_expression' 4402632Sstever@eecs.umich.edu pass 4412632Sstever@eecs.umich.edu 4422632Sstever@eecs.umich.edudef p_parameter_type_list_opt_1(t): 4432632Sstever@eecs.umich.edu 'parameter_type_list_opt : empty' 4442632Sstever@eecs.umich.edu pass 4452632Sstever@eecs.umich.edu 4462632Sstever@eecs.umich.edudef p_parameter_type_list_opt_2(t): 4472632Sstever@eecs.umich.edu 'parameter_type_list_opt : parameter_type_list' 4482632Sstever@eecs.umich.edu pass 4492632Sstever@eecs.umich.edu 4502632Sstever@eecs.umich.edu# statement: 4512632Sstever@eecs.umich.edu 4522632Sstever@eecs.umich.edudef p_statement(t): 4532632Sstever@eecs.umich.edu ''' 4542632Sstever@eecs.umich.edu statement : labeled_statement 4552632Sstever@eecs.umich.edu | expression_statement 4562632Sstever@eecs.umich.edu | compound_statement 4572632Sstever@eecs.umich.edu | selection_statement 4582632Sstever@eecs.umich.edu | iteration_statement 4592632Sstever@eecs.umich.edu | jump_statement 4602632Sstever@eecs.umich.edu ''' 4612632Sstever@eecs.umich.edu pass 4622632Sstever@eecs.umich.edu 4632632Sstever@eecs.umich.edu# labeled-statement: 4642632Sstever@eecs.umich.edu 4652632Sstever@eecs.umich.edudef p_labeled_statement_1(t): 4662632Sstever@eecs.umich.edu 'labeled_statement : ID COLON statement' 4672632Sstever@eecs.umich.edu pass 4682632Sstever@eecs.umich.edu 4692632Sstever@eecs.umich.edudef p_labeled_statement_2(t): 4702632Sstever@eecs.umich.edu 'labeled_statement : CASE constant_expression COLON statement' 4712632Sstever@eecs.umich.edu pass 4722632Sstever@eecs.umich.edu 4732632Sstever@eecs.umich.edudef p_labeled_statement_3(t): 4742632Sstever@eecs.umich.edu 'labeled_statement : DEFAULT COLON statement' 4752632Sstever@eecs.umich.edu pass 4762632Sstever@eecs.umich.edu 4772632Sstever@eecs.umich.edu# expression-statement: 4782632Sstever@eecs.umich.edudef p_expression_statement(t): 4792632Sstever@eecs.umich.edu 'expression_statement : expression_opt SEMI' 4802632Sstever@eecs.umich.edu pass 4812632Sstever@eecs.umich.edu 4822632Sstever@eecs.umich.edu# compound-statement: 4832632Sstever@eecs.umich.edu 4842632Sstever@eecs.umich.edudef p_compound_statement_1(t): 4852632Sstever@eecs.umich.edu 'compound_statement : LBRACE declaration_list statement_list RBRACE' 4862632Sstever@eecs.umich.edu pass 4872632Sstever@eecs.umich.edu 4882632Sstever@eecs.umich.edudef p_compound_statement_2(t): 4892632Sstever@eecs.umich.edu 'compound_statement : LBRACE statement_list RBRACE' 4902632Sstever@eecs.umich.edu pass 4912632Sstever@eecs.umich.edu 4922632Sstever@eecs.umich.edudef p_compound_statement_3(t): 4932632Sstever@eecs.umich.edu 'compound_statement : LBRACE declaration_list RBRACE' 4942632Sstever@eecs.umich.edu pass 4952632Sstever@eecs.umich.edu 4962632Sstever@eecs.umich.edudef p_compound_statement_4(t): 4972632Sstever@eecs.umich.edu 'compound_statement : LBRACE RBRACE' 4982632Sstever@eecs.umich.edu pass 4992632Sstever@eecs.umich.edu 5002632Sstever@eecs.umich.edu# statement-list: 5012632Sstever@eecs.umich.edu 5022632Sstever@eecs.umich.edudef p_statement_list_1(t): 5032632Sstever@eecs.umich.edu 'statement_list : statement' 5042632Sstever@eecs.umich.edu pass 5052632Sstever@eecs.umich.edu 5062632Sstever@eecs.umich.edudef p_statement_list_2(t): 5072632Sstever@eecs.umich.edu 'statement_list : statement_list statement' 5082632Sstever@eecs.umich.edu pass 5092632Sstever@eecs.umich.edu 5102632Sstever@eecs.umich.edu# selection-statement 5112632Sstever@eecs.umich.edu 5122632Sstever@eecs.umich.edudef p_selection_statement_1(t): 5132632Sstever@eecs.umich.edu 'selection_statement : IF LPAREN expression RPAREN statement' 5142632Sstever@eecs.umich.edu pass 5152632Sstever@eecs.umich.edu 5162632Sstever@eecs.umich.edudef p_selection_statement_2(t): 5172632Sstever@eecs.umich.edu 'selection_statement : IF LPAREN expression RPAREN statement ELSE statement ' 5182632Sstever@eecs.umich.edu pass 5192632Sstever@eecs.umich.edu 5202632Sstever@eecs.umich.edudef p_selection_statement_3(t): 5212632Sstever@eecs.umich.edu 'selection_statement : SWITCH LPAREN expression RPAREN statement ' 5222632Sstever@eecs.umich.edu pass 5232632Sstever@eecs.umich.edu 5242632Sstever@eecs.umich.edu# iteration_statement: 5252632Sstever@eecs.umich.edu 5262632Sstever@eecs.umich.edudef p_iteration_statement_1(t): 5272632Sstever@eecs.umich.edu 'iteration_statement : WHILE LPAREN expression RPAREN statement' 5282632Sstever@eecs.umich.edu pass 5292632Sstever@eecs.umich.edu 5302632Sstever@eecs.umich.edudef p_iteration_statement_2(t): 5312632Sstever@eecs.umich.edu 'iteration_statement : FOR LPAREN expression_opt SEMI expression_opt SEMI expression_opt RPAREN statement ' 5322632Sstever@eecs.umich.edu pass 5332632Sstever@eecs.umich.edu 5342632Sstever@eecs.umich.edudef p_iteration_statement_3(t): 5352632Sstever@eecs.umich.edu 'iteration_statement : DO statement WHILE LPAREN expression RPAREN SEMI' 5362632Sstever@eecs.umich.edu pass 5372632Sstever@eecs.umich.edu 5382632Sstever@eecs.umich.edu# jump_statement: 5392632Sstever@eecs.umich.edu 5402632Sstever@eecs.umich.edudef p_jump_statement_1(t): 5412632Sstever@eecs.umich.edu 'jump_statement : GOTO ID SEMI' 5422632Sstever@eecs.umich.edu pass 5432632Sstever@eecs.umich.edu 5442632Sstever@eecs.umich.edudef p_jump_statement_2(t): 5452632Sstever@eecs.umich.edu 'jump_statement : CONTINUE SEMI' 5462632Sstever@eecs.umich.edu pass 5472632Sstever@eecs.umich.edu 5482632Sstever@eecs.umich.edudef p_jump_statement_3(t): 5492632Sstever@eecs.umich.edu 'jump_statement : BREAK SEMI' 5502632Sstever@eecs.umich.edu pass 5512632Sstever@eecs.umich.edu 5522632Sstever@eecs.umich.edudef p_jump_statement_4(t): 5532632Sstever@eecs.umich.edu 'jump_statement : RETURN expression_opt SEMI' 5542632Sstever@eecs.umich.edu pass 5552632Sstever@eecs.umich.edu 5562632Sstever@eecs.umich.edudef p_expression_opt_1(t): 5572632Sstever@eecs.umich.edu 'expression_opt : empty' 5582632Sstever@eecs.umich.edu pass 5592632Sstever@eecs.umich.edu 5602632Sstever@eecs.umich.edudef p_expression_opt_2(t): 5612632Sstever@eecs.umich.edu 'expression_opt : expression' 5622632Sstever@eecs.umich.edu pass 5632632Sstever@eecs.umich.edu 5642632Sstever@eecs.umich.edu# expression: 5652632Sstever@eecs.umich.edudef p_expression_1(t): 5662632Sstever@eecs.umich.edu 'expression : assignment_expression' 5672632Sstever@eecs.umich.edu pass 5682632Sstever@eecs.umich.edu 5692632Sstever@eecs.umich.edudef p_expression_2(t): 5702632Sstever@eecs.umich.edu 'expression : expression COMMA assignment_expression' 5712632Sstever@eecs.umich.edu pass 5722632Sstever@eecs.umich.edu 5732632Sstever@eecs.umich.edu# assigment_expression: 5742632Sstever@eecs.umich.edudef p_assignment_expression_1(t): 5752632Sstever@eecs.umich.edu 'assignment_expression : conditional_expression' 5762632Sstever@eecs.umich.edu pass 5772632Sstever@eecs.umich.edu 5782632Sstever@eecs.umich.edudef p_assignment_expression_2(t): 5792632Sstever@eecs.umich.edu 'assignment_expression : unary_expression assignment_operator assignment_expression' 5802632Sstever@eecs.umich.edu pass 5812632Sstever@eecs.umich.edu 5822632Sstever@eecs.umich.edu# assignment_operator: 5832632Sstever@eecs.umich.edudef p_assignment_operator(t): 5842632Sstever@eecs.umich.edu ''' 5852632Sstever@eecs.umich.edu assignment_operator : EQUALS 5862632Sstever@eecs.umich.edu | TIMESEQUAL 5872632Sstever@eecs.umich.edu | DIVEQUAL 5882632Sstever@eecs.umich.edu | MODEQUAL 5892632Sstever@eecs.umich.edu | PLUSEQUAL 5902632Sstever@eecs.umich.edu | MINUSEQUAL 5912632Sstever@eecs.umich.edu | LSHIFTEQUAL 5922632Sstever@eecs.umich.edu | RSHIFTEQUAL 5932632Sstever@eecs.umich.edu | ANDEQUAL 5942632Sstever@eecs.umich.edu | OREQUAL 5952632Sstever@eecs.umich.edu | XOREQUAL 5962632Sstever@eecs.umich.edu ''' 5972632Sstever@eecs.umich.edu pass 5982632Sstever@eecs.umich.edu 5992632Sstever@eecs.umich.edu# conditional-expression 6002632Sstever@eecs.umich.edudef p_conditional_expression_1(t): 6012632Sstever@eecs.umich.edu 'conditional_expression : logical_or_expression' 6022632Sstever@eecs.umich.edu pass 6032632Sstever@eecs.umich.edu 6042632Sstever@eecs.umich.edudef p_conditional_expression_2(t): 6052632Sstever@eecs.umich.edu 'conditional_expression : logical_or_expression CONDOP expression COLON conditional_expression ' 6062632Sstever@eecs.umich.edu pass 6072632Sstever@eecs.umich.edu 6082632Sstever@eecs.umich.edu# constant-expression 6092632Sstever@eecs.umich.edu 6102632Sstever@eecs.umich.edudef p_constant_expression(t): 6112632Sstever@eecs.umich.edu 'constant_expression : conditional_expression' 6122632Sstever@eecs.umich.edu pass 6132632Sstever@eecs.umich.edu 6142632Sstever@eecs.umich.edu# logical-or-expression 6152632Sstever@eecs.umich.edu 6162632Sstever@eecs.umich.edudef p_logical_or_expression_1(t): 6172632Sstever@eecs.umich.edu 'logical_or_expression : logical_and_expression' 6182632Sstever@eecs.umich.edu pass 6192632Sstever@eecs.umich.edu 6202632Sstever@eecs.umich.edudef p_logical_or_expression_2(t): 6212632Sstever@eecs.umich.edu 'logical_or_expression : logical_or_expression LOR logical_and_expression' 6222632Sstever@eecs.umich.edu pass 6232632Sstever@eecs.umich.edu 6242632Sstever@eecs.umich.edu# logical-and-expression 6252632Sstever@eecs.umich.edu 6262632Sstever@eecs.umich.edudef p_logical_and_expression_1(t): 6272632Sstever@eecs.umich.edu 'logical_and_expression : inclusive_or_expression' 6282632Sstever@eecs.umich.edu pass 6292632Sstever@eecs.umich.edu 6302632Sstever@eecs.umich.edudef p_logical_and_expression_2(t): 6312632Sstever@eecs.umich.edu 'logical_and_expression : logical_and_expression LAND inclusive_or_expression' 6322632Sstever@eecs.umich.edu pass 6332632Sstever@eecs.umich.edu 6342632Sstever@eecs.umich.edu# inclusive-or-expression: 6352632Sstever@eecs.umich.edu 6362632Sstever@eecs.umich.edudef p_inclusive_or_expression_1(t): 6372632Sstever@eecs.umich.edu 'inclusive_or_expression : exclusive_or_expression' 6382632Sstever@eecs.umich.edu pass 6392632Sstever@eecs.umich.edu 6402632Sstever@eecs.umich.edudef p_inclusive_or_expression_2(t): 6412632Sstever@eecs.umich.edu 'inclusive_or_expression : inclusive_or_expression OR exclusive_or_expression' 6422632Sstever@eecs.umich.edu pass 6432632Sstever@eecs.umich.edu 6442632Sstever@eecs.umich.edu# exclusive-or-expression: 6452632Sstever@eecs.umich.edu 6462632Sstever@eecs.umich.edudef p_exclusive_or_expression_1(t): 6472632Sstever@eecs.umich.edu 'exclusive_or_expression : and_expression' 6482632Sstever@eecs.umich.edu pass 6492632Sstever@eecs.umich.edu 6502632Sstever@eecs.umich.edudef p_exclusive_or_expression_2(t): 6512632Sstever@eecs.umich.edu 'exclusive_or_expression : exclusive_or_expression XOR and_expression' 6522632Sstever@eecs.umich.edu pass 6532632Sstever@eecs.umich.edu 6542632Sstever@eecs.umich.edu# AND-expression 6552632Sstever@eecs.umich.edu 6562632Sstever@eecs.umich.edudef p_and_expression_1(t): 6572632Sstever@eecs.umich.edu 'and_expression : equality_expression' 6582632Sstever@eecs.umich.edu pass 6592632Sstever@eecs.umich.edu 6602632Sstever@eecs.umich.edudef p_and_expression_2(t): 6612632Sstever@eecs.umich.edu 'and_expression : and_expression AND equality_expression' 6622632Sstever@eecs.umich.edu pass 6632632Sstever@eecs.umich.edu 6642632Sstever@eecs.umich.edu 6652632Sstever@eecs.umich.edu# equality-expression: 6662632Sstever@eecs.umich.edudef p_equality_expression_1(t): 6672632Sstever@eecs.umich.edu 'equality_expression : relational_expression' 6682632Sstever@eecs.umich.edu pass 6692632Sstever@eecs.umich.edu 6702632Sstever@eecs.umich.edudef p_equality_expression_2(t): 6712632Sstever@eecs.umich.edu 'equality_expression : equality_expression EQ relational_expression' 6722632Sstever@eecs.umich.edu pass 6732632Sstever@eecs.umich.edu 6742632Sstever@eecs.umich.edudef p_equality_expression_3(t): 6752632Sstever@eecs.umich.edu 'equality_expression : equality_expression NE relational_expression' 6762632Sstever@eecs.umich.edu pass 6772632Sstever@eecs.umich.edu 6782632Sstever@eecs.umich.edu 6792632Sstever@eecs.umich.edu# relational-expression: 6802632Sstever@eecs.umich.edudef p_relational_expression_1(t): 6812632Sstever@eecs.umich.edu 'relational_expression : shift_expression' 6822632Sstever@eecs.umich.edu pass 6832632Sstever@eecs.umich.edu 6842632Sstever@eecs.umich.edudef p_relational_expression_2(t): 6852632Sstever@eecs.umich.edu 'relational_expression : relational_expression LT shift_expression' 6862632Sstever@eecs.umich.edu pass 6872632Sstever@eecs.umich.edu 6882632Sstever@eecs.umich.edudef p_relational_expression_3(t): 6892632Sstever@eecs.umich.edu 'relational_expression : relational_expression GT shift_expression' 6902632Sstever@eecs.umich.edu pass 6912632Sstever@eecs.umich.edu 6922632Sstever@eecs.umich.edudef p_relational_expression_4(t): 6932632Sstever@eecs.umich.edu 'relational_expression : relational_expression LE shift_expression' 6942632Sstever@eecs.umich.edu pass 6952632Sstever@eecs.umich.edu 6962632Sstever@eecs.umich.edudef p_relational_expression_5(t): 6972632Sstever@eecs.umich.edu 'relational_expression : relational_expression GE shift_expression' 6982632Sstever@eecs.umich.edu pass 6992632Sstever@eecs.umich.edu 7002632Sstever@eecs.umich.edu# shift-expression 7012632Sstever@eecs.umich.edu 7022632Sstever@eecs.umich.edudef p_shift_expression_1(t): 7032632Sstever@eecs.umich.edu 'shift_expression : additive_expression' 7042632Sstever@eecs.umich.edu pass 7052632Sstever@eecs.umich.edu 7062632Sstever@eecs.umich.edudef p_shift_expression_2(t): 7072632Sstever@eecs.umich.edu 'shift_expression : shift_expression LSHIFT additive_expression' 7082632Sstever@eecs.umich.edu pass 7092632Sstever@eecs.umich.edu 7102632Sstever@eecs.umich.edudef p_shift_expression_3(t): 7112632Sstever@eecs.umich.edu 'shift_expression : shift_expression RSHIFT additive_expression' 7122632Sstever@eecs.umich.edu pass 7132632Sstever@eecs.umich.edu 7142632Sstever@eecs.umich.edu# additive-expression 7152632Sstever@eecs.umich.edu 7162632Sstever@eecs.umich.edudef p_additive_expression_1(t): 7172632Sstever@eecs.umich.edu 'additive_expression : multiplicative_expression' 7182632Sstever@eecs.umich.edu pass 7192632Sstever@eecs.umich.edu 7202632Sstever@eecs.umich.edudef p_additive_expression_2(t): 7212632Sstever@eecs.umich.edu 'additive_expression : additive_expression PLUS multiplicative_expression' 7222632Sstever@eecs.umich.edu pass 7232632Sstever@eecs.umich.edu 7242632Sstever@eecs.umich.edudef p_additive_expression_3(t): 7252632Sstever@eecs.umich.edu 'additive_expression : additive_expression MINUS multiplicative_expression' 7262632Sstever@eecs.umich.edu pass 7272632Sstever@eecs.umich.edu 7282632Sstever@eecs.umich.edu# multiplicative-expression 7292632Sstever@eecs.umich.edu 7302632Sstever@eecs.umich.edudef p_multiplicative_expression_1(t): 7312632Sstever@eecs.umich.edu 'multiplicative_expression : cast_expression' 7322632Sstever@eecs.umich.edu pass 7332632Sstever@eecs.umich.edu 7342632Sstever@eecs.umich.edudef p_multiplicative_expression_2(t): 7352632Sstever@eecs.umich.edu 'multiplicative_expression : multiplicative_expression TIMES cast_expression' 7362632Sstever@eecs.umich.edu pass 7372632Sstever@eecs.umich.edu 7382632Sstever@eecs.umich.edudef p_multiplicative_expression_3(t): 7392632Sstever@eecs.umich.edu 'multiplicative_expression : multiplicative_expression DIVIDE cast_expression' 7402632Sstever@eecs.umich.edu pass 7412632Sstever@eecs.umich.edu 7422632Sstever@eecs.umich.edudef p_multiplicative_expression_4(t): 7432632Sstever@eecs.umich.edu 'multiplicative_expression : multiplicative_expression MOD cast_expression' 7442632Sstever@eecs.umich.edu pass 7452632Sstever@eecs.umich.edu 7462632Sstever@eecs.umich.edu# cast-expression: 7472632Sstever@eecs.umich.edu 7482632Sstever@eecs.umich.edudef p_cast_expression_1(t): 7492632Sstever@eecs.umich.edu 'cast_expression : unary_expression' 7502632Sstever@eecs.umich.edu pass 7512632Sstever@eecs.umich.edu 7522632Sstever@eecs.umich.edudef p_cast_expression_2(t): 7532632Sstever@eecs.umich.edu 'cast_expression : LPAREN type_name RPAREN cast_expression' 7542632Sstever@eecs.umich.edu pass 7552632Sstever@eecs.umich.edu 7562632Sstever@eecs.umich.edu# unary-expression: 7572632Sstever@eecs.umich.edudef p_unary_expression_1(t): 7582632Sstever@eecs.umich.edu 'unary_expression : postfix_expression' 7592632Sstever@eecs.umich.edu pass 7602632Sstever@eecs.umich.edu 7612632Sstever@eecs.umich.edudef p_unary_expression_2(t): 7622632Sstever@eecs.umich.edu 'unary_expression : PLUSPLUS unary_expression' 7632632Sstever@eecs.umich.edu pass 7642632Sstever@eecs.umich.edu 7652632Sstever@eecs.umich.edudef p_unary_expression_3(t): 7662632Sstever@eecs.umich.edu 'unary_expression : MINUSMINUS unary_expression' 7672632Sstever@eecs.umich.edu pass 7682632Sstever@eecs.umich.edu 7692632Sstever@eecs.umich.edudef p_unary_expression_4(t): 7702632Sstever@eecs.umich.edu 'unary_expression : unary_operator cast_expression' 7712632Sstever@eecs.umich.edu pass 7722632Sstever@eecs.umich.edu 7732632Sstever@eecs.umich.edudef p_unary_expression_5(t): 7742632Sstever@eecs.umich.edu 'unary_expression : SIZEOF unary_expression' 7752632Sstever@eecs.umich.edu pass 7762632Sstever@eecs.umich.edu 7772632Sstever@eecs.umich.edudef p_unary_expression_6(t): 7782632Sstever@eecs.umich.edu 'unary_expression : SIZEOF LPAREN type_name RPAREN' 7792632Sstever@eecs.umich.edu pass 7802632Sstever@eecs.umich.edu 7812632Sstever@eecs.umich.edu#unary-operator 7822632Sstever@eecs.umich.edudef p_unary_operator(t): 7832632Sstever@eecs.umich.edu '''unary_operator : AND 7842632Sstever@eecs.umich.edu | TIMES 7852632Sstever@eecs.umich.edu | PLUS 7862632Sstever@eecs.umich.edu | MINUS 7872632Sstever@eecs.umich.edu | NOT 7882632Sstever@eecs.umich.edu | LNOT ''' 7892632Sstever@eecs.umich.edu pass 7902632Sstever@eecs.umich.edu 7912632Sstever@eecs.umich.edu# postfix-expression: 7922632Sstever@eecs.umich.edudef p_postfix_expression_1(t): 7932632Sstever@eecs.umich.edu 'postfix_expression : primary_expression' 7942632Sstever@eecs.umich.edu pass 7952632Sstever@eecs.umich.edu 7962632Sstever@eecs.umich.edudef p_postfix_expression_2(t): 7972632Sstever@eecs.umich.edu 'postfix_expression : postfix_expression LBRACKET expression RBRACKET' 7982632Sstever@eecs.umich.edu pass 7992632Sstever@eecs.umich.edu 8002632Sstever@eecs.umich.edudef p_postfix_expression_3(t): 8012632Sstever@eecs.umich.edu 'postfix_expression : postfix_expression LPAREN argument_expression_list RPAREN' 8022632Sstever@eecs.umich.edu pass 8032632Sstever@eecs.umich.edu 8042632Sstever@eecs.umich.edudef p_postfix_expression_4(t): 8052632Sstever@eecs.umich.edu 'postfix_expression : postfix_expression LPAREN RPAREN' 8062632Sstever@eecs.umich.edu pass 8072632Sstever@eecs.umich.edu 8082632Sstever@eecs.umich.edudef p_postfix_expression_5(t): 8092632Sstever@eecs.umich.edu 'postfix_expression : postfix_expression PERIOD ID' 8102632Sstever@eecs.umich.edu pass 8112632Sstever@eecs.umich.edu 8122632Sstever@eecs.umich.edudef p_postfix_expression_6(t): 8132632Sstever@eecs.umich.edu 'postfix_expression : postfix_expression ARROW ID' 8142632Sstever@eecs.umich.edu pass 8152632Sstever@eecs.umich.edu 8162632Sstever@eecs.umich.edudef p_postfix_expression_7(t): 8172632Sstever@eecs.umich.edu 'postfix_expression : postfix_expression PLUSPLUS' 8182632Sstever@eecs.umich.edu pass 8192632Sstever@eecs.umich.edu 8202632Sstever@eecs.umich.edudef p_postfix_expression_8(t): 8212632Sstever@eecs.umich.edu 'postfix_expression : postfix_expression MINUSMINUS' 8222632Sstever@eecs.umich.edu pass 8232632Sstever@eecs.umich.edu 8242632Sstever@eecs.umich.edu# primary-expression: 8252632Sstever@eecs.umich.edudef p_primary_expression(t): 8262632Sstever@eecs.umich.edu '''primary_expression : ID 8272632Sstever@eecs.umich.edu | constant 8282632Sstever@eecs.umich.edu | SCONST 8292632Sstever@eecs.umich.edu | LPAREN expression RPAREN''' 8302632Sstever@eecs.umich.edu pass 8312632Sstever@eecs.umich.edu 8322632Sstever@eecs.umich.edu# argument-expression-list: 8332632Sstever@eecs.umich.edudef p_argument_expression_list(t): 8342632Sstever@eecs.umich.edu '''argument_expression_list : assignment_expression 8352632Sstever@eecs.umich.edu | argument_expression_list COMMA assignment_expression''' 8362632Sstever@eecs.umich.edu pass 8372632Sstever@eecs.umich.edu 8382632Sstever@eecs.umich.edu# constant: 8392632Sstever@eecs.umich.edudef p_constant(t): 8402632Sstever@eecs.umich.edu '''constant : ICONST 8412632Sstever@eecs.umich.edu | FCONST 8422632Sstever@eecs.umich.edu | CCONST''' 8432632Sstever@eecs.umich.edu pass 8442632Sstever@eecs.umich.edu 8452632Sstever@eecs.umich.edu 8462632Sstever@eecs.umich.edudef p_empty(t): 8472632Sstever@eecs.umich.edu 'empty : ' 8482632Sstever@eecs.umich.edu pass 8492632Sstever@eecs.umich.edu 8502632Sstever@eecs.umich.edudef p_error(t): 8512632Sstever@eecs.umich.edu print "Whoa. We're hosed" 8522632Sstever@eecs.umich.edu 8532632Sstever@eecs.umich.eduimport profile 8542632Sstever@eecs.umich.edu# Build the grammar 8552632Sstever@eecs.umich.eduprofile.run("yacc.yacc()") 8562632Sstever@eecs.umich.edu 8572632Sstever@eecs.umich.edu 8582632Sstever@eecs.umich.edu 8592632Sstever@eecs.umich.edu 860