📄 cparse.py
字号:
# Optional fields in abstract declaratorsdef p_constant_expression_opt_1(t): 'constant_expression_opt : empty' passdef p_constant_expression_opt_2(t): 'constant_expression_opt : constant_expression' passdef p_parameter_type_list_opt_1(t): 'parameter_type_list_opt : empty' passdef p_parameter_type_list_opt_2(t): 'parameter_type_list_opt : parameter_type_list' pass# statement:def p_statement(t): ''' statement : labeled_statement | expression_statement | compound_statement | selection_statement | iteration_statement | jump_statement ''' pass# labeled-statement:def p_labeled_statement_1(t): 'labeled_statement : ID COLON statement' passdef p_labeled_statement_2(t): 'labeled_statement : CASE constant_expression COLON statement' passdef p_labeled_statement_3(t): 'labeled_statement : DEFAULT COLON statement' pass# expression-statement:def p_expression_statement(t): 'expression_statement : expression_opt SEMI' pass# compound-statement:def p_compound_statement_1(t): 'compound_statement : LBRACE declaration_list statement_list RBRACE' passdef p_compound_statement_2(t): 'compound_statement : LBRACE statement_list RBRACE' passdef p_compound_statement_3(t): 'compound_statement : LBRACE declaration_list RBRACE' passdef p_compound_statement_4(t): 'compound_statement : LBRACE RBRACE' pass# statement-list:def p_statement_list_1(t): 'statement_list : statement' passdef p_statement_list_2(t): 'statement_list : statement_list statement' pass# selection-statementdef p_selection_statement_1(t): 'selection_statement : IF LPAREN expression RPAREN statement' passdef p_selection_statement_2(t): 'selection_statement : IF LPAREN expression RPAREN statement ELSE statement ' passdef p_selection_statement_3(t): 'selection_statement : SWITCH LPAREN expression RPAREN statement ' pass# iteration_statement:def p_iteration_statement_1(t): 'iteration_statement : WHILE LPAREN expression RPAREN statement' passdef p_iteration_statement_2(t): 'iteration_statement : FOR LPAREN expression_opt SEMI expression_opt SEMI expression_opt RPAREN statement ' passdef p_iteration_statement_3(t): 'iteration_statement : DO statement WHILE LPAREN expression RPAREN SEMI' pass# jump_statement:def p_jump_statement_1(t): 'jump_statement : GOTO ID SEMI' passdef p_jump_statement_2(t): 'jump_statement : CONTINUE SEMI' passdef p_jump_statement_3(t): 'jump_statement : BREAK SEMI' passdef p_jump_statement_4(t): 'jump_statement : RETURN expression_opt SEMI' passdef p_expression_opt_1(t): 'expression_opt : empty' passdef p_expression_opt_2(t): 'expression_opt : expression' pass# expression:def p_expression_1(t): 'expression : assignment_expression' passdef p_expression_2(t): 'expression : expression COMMA assignment_expression' pass# assigment_expression:def p_assignment_expression_1(t): 'assignment_expression : conditional_expression' passdef p_assignment_expression_2(t): 'assignment_expression : unary_expression assignment_operator assignment_expression' pass# assignment_operator:def p_assignment_operator(t): ''' assignment_operator : EQUALS | TIMESEQUAL | DIVEQUAL | MODEQUAL | PLUSEQUAL | MINUSEQUAL | LSHIFTEQUAL | RSHIFTEQUAL | ANDEQUAL | OREQUAL | XOREQUAL ''' pass# conditional-expressiondef p_conditional_expression_1(t): 'conditional_expression : logical_or_expression' passdef p_conditional_expression_2(t): 'conditional_expression : logical_or_expression CONDOP expression COLON conditional_expression ' pass# constant-expressiondef p_constant_expression(t): 'constant_expression : conditional_expression' pass# logical-or-expressiondef p_logical_or_expression_1(t): 'logical_or_expression : logical_and_expression' passdef p_logical_or_expression_2(t): 'logical_or_expression : logical_or_expression LOR logical_and_expression' pass# logical-and-expressiondef p_logical_and_expression_1(t): 'logical_and_expression : inclusive_or_expression' passdef p_logical_and_expression_2(t): 'logical_and_expression : logical_and_expression LAND inclusive_or_expression' pass# inclusive-or-expression:def p_inclusive_or_expression_1(t): 'inclusive_or_expression : exclusive_or_expression' passdef p_inclusive_or_expression_2(t): 'inclusive_or_expression : inclusive_or_expression OR exclusive_or_expression' pass# exclusive-or-expression:def p_exclusive_or_expression_1(t): 'exclusive_or_expression : and_expression' passdef p_exclusive_or_expression_2(t): 'exclusive_or_expression : exclusive_or_expression XOR and_expression' pass# AND-expressiondef p_and_expression_1(t): 'and_expression : equality_expression' passdef p_and_expression_2(t): 'and_expression : and_expression AND equality_expression' pass# equality-expression:def p_equality_expression_1(t): 'equality_expression : relational_expression' passdef p_equality_expression_2(t): 'equality_expression : equality_expression EQ relational_expression' passdef p_equality_expression_3(t): 'equality_expression : equality_expression NE relational_expression' pass# relational-expression:def p_relational_expression_1(t): 'relational_expression : shift_expression' passdef p_relational_expression_2(t): 'relational_expression : relational_expression LT shift_expression' passdef p_relational_expression_3(t): 'relational_expression : relational_expression GT shift_expression' passdef p_relational_expression_4(t): 'relational_expression : relational_expression LE shift_expression' passdef p_relational_expression_5(t): 'relational_expression : relational_expression GE shift_expression' pass# shift-expressiondef p_shift_expression_1(t): 'shift_expression : additive_expression' passdef p_shift_expression_2(t): 'shift_expression : shift_expression LSHIFT additive_expression' passdef p_shift_expression_3(t): 'shift_expression : shift_expression RSHIFT additive_expression' pass# additive-expressiondef p_additive_expression_1(t): 'additive_expression : multiplicative_expression' passdef p_additive_expression_2(t): 'additive_expression : additive_expression PLUS multiplicative_expression' passdef p_additive_expression_3(t): 'additive_expression : additive_expression MINUS multiplicative_expression' pass# multiplicative-expressiondef p_multiplicative_expression_1(t): 'multiplicative_expression : cast_expression' passdef p_multiplicative_expression_2(t): 'multiplicative_expression : multiplicative_expression TIMES cast_expression' passdef p_multiplicative_expression_3(t): 'multiplicative_expression : multiplicative_expression DIVIDE cast_expression' passdef p_multiplicative_expression_4(t): 'multiplicative_expression : multiplicative_expression MOD cast_expression' pass# cast-expression:def p_cast_expression_1(t): 'cast_expression : unary_expression' passdef p_cast_expression_2(t): 'cast_expression : LPAREN type_name RPAREN cast_expression' pass# unary-expression:def p_unary_expression_1(t): 'unary_expression : postfix_expression' passdef p_unary_expression_2(t): 'unary_expression : PLUSPLUS unary_expression' passdef p_unary_expression_3(t): 'unary_expression : MINUSMINUS unary_expression' passdef p_unary_expression_4(t): 'unary_expression : unary_operator cast_expression' passdef p_unary_expression_5(t): 'unary_expression : SIZEOF unary_expression' passdef p_unary_expression_6(t): 'unary_expression : SIZEOF LPAREN type_name RPAREN' pass #unary-operatordef p_unary_operator(t): '''unary_operator : AND | TIMES | PLUS | MINUS | NOT | LNOT ''' pass# postfix-expression:def p_postfix_expression_1(t): 'postfix_expression : primary_expression' passdef p_postfix_expression_2(t): 'postfix_expression : postfix_expression LBRACKET expression RBRACKET' passdef p_postfix_expression_3(t): 'postfix_expression : postfix_expression LPAREN argument_expression_list RPAREN' passdef p_postfix_expression_4(t): 'postfix_expression : postfix_expression LPAREN RPAREN' passdef p_postfix_expression_5(t): 'postfix_expression : postfix_expression PERIOD ID' passdef p_postfix_expression_6(t): 'postfix_expression : postfix_expression ARROW ID' passdef p_postfix_expression_7(t): 'postfix_expression : postfix_expression PLUSPLUS' passdef p_postfix_expression_8(t): 'postfix_expression : postfix_expression MINUSMINUS' pass# primary-expression:def p_primary_expression(t): '''primary_expression : ID | constant | SCONST | LPAREN expression RPAREN''' pass# argument-expression-list:def p_argument_expression_list(t): '''argument_expression_list : assignment_expression | argument_expression_list COMMA assignment_expression''' pass# constant:def p_constant(t): '''constant : ICONST | FCONST | CCONST''' passdef p_empty(t): 'empty : ' passdef p_error(t): print "Whoa. We're hosed"import profile# Build the grammarprofile.run("yacc.yacc()")
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -