zoukankan      html  css  js  c++  java
  • LL(1)文法

    <program>-><external_declaration> | <program> <external_declaration>

    <external_declaration> -><function_definition> | <declaration>

    <function_definition> -><type_specifier> <declarator> <compound_statement>

    <type_specifier>->void | char | int | float

    <declarator>-><pointer direct_declarator> | <direct_declarator>

    <Pointer>->'*'| '*' pointer

    <direct_declarator>-><IDENTIFIER> |<direct_declarator’[‘ ‘]’>
    |<direct_declarator ’[’ constant_expression ’]’>
    | <identifier '(' parameter_list ')'>
    | <IDENTIFIER '(' ')'>|<direct_declarator ‘,’ identifier_list>

    <identifier_list>-><: IDENTIFIER>| <identifier_list ',' IDENTIFIER>

    <constant_expression>-><conditional_expression>

    <parameter_list>-><parameter_declaration>| <parameter_list> <','> <parameter_declaration>

    <parameter_declaration>-><declaration_specifiers><IDENTIFIER>

    <compound_statement>-><'{'< >'}'> | <'{'><statement_list><'}'>| <'{'><declaration_list statement_list ><'}'

    <declaration_list>-><declaration>| <declaration_list><declaration>

    <Declaration>-><init_declarator>| <init_declarator_list>< ','> <init_declarator>

    <init_declarator>-><declarator>| <declarator> <'='> <initializer>

    <Initializer >-><assignment_expression>| <'{'>< initializer_list>< '}>' |< '{'>< initializer_list>< ','> < '}'>

    <initializer_program_list>-><initializer_program>| <initializer_program_list>< ','> <initializer_program>

    <statement_list>-><statement>| <statement_list> <statement>

    <Statement >->| <compound_statement> | <expression_statement> | <selection_statement> | <iteration_statement> | <jump_statement>

    <expression_statement> -> < ';'> | <expression>< ';'>

    <selection_statement> -> <:>< IF>< '('>< expression ><')'> <statement>
    | <if> <'('>< expression ><')'> <statement><else> <statement>

    <iteration_statement>-><while>< '('>< expression ><')'>< statement>
    | <for> <'('>< expression_statement>< expression_statement>< ')'>< statement>
    | <for> <'('>< expression_statement>< expression_statement>< expression ><')'>< statement>

    <jump_statement>-> | CONTINUE< ';'> | BREAK< ';'> | RETURN <';'> | RETURN <expression> <';'>

    <expression>-> <: ><assignment_expression> | <expression> <','> <assignment_expression>

    <assignment_expression>-><conditional_expression>| <unary_expression>< assignment_operator>< assignment_expression>

    <conditional_expression >-> <logical_or_expression>
    | <logical_or_expression>< '?'>< expression ><':'>< conditional_expression>

    <logical_or_expression >->< logical_and_expression> | <logical_or_expression> OR_OP <logical_and_expression>

    <logical_and_expression> -> <:>< inclusive_or_expression> | <logical_and_expression> AND_OP <inclusive_or_expression>

    <inclusive_or_expression>-> <exclusive_or_expression> | <inclusive_or_expression ><'> | <'> <exclusive_or_expression>

    <exclusive_or_expression>-><:> <and_expression>| <exclusive_or_expression> <'><^'> <and_expression>

    <and_expression>-> <:>< equality_expression> | <and_expression ><'><&><'>< equality_expression>

    <equality_expression>-><:>< relational_expression> | <equality_expression >EQ_OP <relational_expression> | <equality_expression> NE_OP <relational_expression>

    <relational_expression><:> <shift_expression> | <relational_expression> <'><<><'> <shift_expression>

    | <relational_expression '>' shift_expression>| <relational_expression LE_OP shift_expression>| <relational_expression GE_OP shift_expression>

    <shift_expression>-> <:>< additive_expression> | <shift_expression LEFT_OP additive_expression> | <shift_expression RIGHT_OP additive_expression>

    <additive_expression>-><:> <multiplicative_expression> 
    | <additive_expression> <'+'> <multiplicative_expression>
    | <additive_expression> <'-'> <multiplicative_expression>

    <multiplicative_expression> -> <:> <cast_expression>
    | <multiplicative_expression> <'*'> <cast_expression>
    | <multiplicative_expression> <'/'> <cast_expression>
    | <multiplicative_expression> <'%'> <cast_expression>

    <cast_expression>-><:>< unary_expression> | <'('>< type_name ><')'>< cast_expression>

    <unary_expression> ->< :> <postfix_expression>
    | <INC_OP unary_expression>
    | <DEC_OP unary_expression>
    | <unary_operator>< cast_expression>
    | <SIZEOF unary_expression>
    | <SIZEOF> '('>< type_name ><')'>

    <postfix_expression >-><:> <primary_expression>
    |< postfix_expression> <'['>< expression ><']'>
    | <postfix_expression ><'('>< ')'>
    | <postfix_expression '(' argument_expression_list ')'>
    | <postfix_expression '.' IDENTIFIER>
    | <postfix_expression PTR_OP IDENTIFIER>
    | <postfix_expression INC_OP>
    | <postfix_expression DEC_OP>

    <primary_expression>->IDENTIFIER | CONSTANT | STRING_LITERAL | <'('>< expression ><')'>

    <argument_expression_list>-> < :>< assignment_expression> | <argument_expression_list> <','> <assignment_expression>

    <unary_operator>-> <:>< '&'> | <'*'> | <'+'> | <'-'>| <'~'> | <'!'>

    <storage_class_specifier >-> TYPEDEF | EXTERN | STATIC | AUTO | REGISTER

    <struct_or_union_specifier> ->< :>< struct_or_union IDENTIFIER>< '{'>< struct_declaration_list>< '}'>
    | <struct_or_union ><'{' ><struct_declaration_list>< '}'>
    | <struct_or_union> IDENTIFIER

    <struct_or_union>-> <: >STRUCT | UNION

    <struct_declaration_list> -> <:>< struct_declaration> | <struct_declaration_list ><struct_declaration>

    <struct_declaration> -><:>< specifier_qualifier_list>< struct_declarator_list>< ';'>

    <specifier_qualifier_list >-> < type_specifier>< specifier_qualifier_list>
    | <type_specifier>
    | <type_qualifier ><specifier_qualifier_list>
    | <type_qualifier>

    <struct_declarator_list>-><struct_declarator>
    | <struct_declarator_list>< ','>< struct_declarator>

    <struct_declarator>-> <:>< declarator> |< ':'>< constant_expression>
    | <declarator ><':'> <constant_expression>

    <enum_specifier >-> < ENUM '{' enumerator_list '}'>
    | <ENUM IDENTIFIER '{' enumerator_list '}'>
    | ENUM IDENTIFIER

    <enumerator_list >-> enumerator | enumerator_list <','> enumerator

    <Enumerator >->IDENTIFIER | IDENTIFIER <'='> <constant_expression>

    <type_qualifier >->CONST | VOLATILE

    <type_qualifier_list>-> <type_qualifier> | <type_qualifier_list> <type_qualifier>

    <parameter_type_list>-> <parameter_list> | <parameter_list ><','> ELLIPSIS

    <parameter_list>-> <:>< parameter_declaration> | <parameter_list>< ','>< parameter_declaration>

    <type_name>->< specifier_qualifier_list> | <specifier_qualifier_list>< abstract_declarator>

    <abstract_declarator>-> pointer | <direct_abstract_declarator> | <pointer direct_abstract_declarator>

  • 相关阅读:
    HDU 5492 Find a path
    codeforce gym 100548H The Problem to Make You Happy
    Topcoder SRM 144 Lottery
    codeforce 165E Compatible Numbers
    codeforce gym 100307H Hack Protection
    区间DP总结
    UESTC 1321 柱爷的恋爱 (区间DP)
    HDU 4283 You Are the One (区间DP)
    HDU 2476 String painter (区间DP)
    UESTC 426 Food Delivery (区间DP)
  • 原文地址:https://www.cnblogs.com/cch-1007/p/6136603.html
Copyright © 2011-2022 走看看