programà//Program
External_declaration//External declaration
| Program External_declaration
external_declarationà//external declarations
Function_definition//function definition
| Declaration//Disclaimer
Function_definitionàtype_specifier declarator compound_statement
Type Descriptor declaration Compound statement
Type_specifierà
VOID
| CHAR
| Int
| FLOAT
Declarator
pointer direct_declarator//pointer direct specifier
| Direct_declarator
pointerà//pointer
‘*‘
| ' * ' pointer
Direct_declarator//Direct specifier
IDENTIFIER//Identifiers
|direct_declarator ' ['] '////direct specifier
|direct_declarator ' [' constant_expression '] '//constant expression
| IDENTIFIER ' (' parameter_list ') '//Parameter list
| IDENTIFIER ' (') '
|direct_declarator ', ' identifier_list//Identifier list
Identifier_list//Identifier list
: IDENTIFIER//identifier
| Identifier_list ', ' identifier
CONSTANT_EXPRESSIONÀ//constant expression
Conditional_expression//conditional expression
parameter_listà//parameter Table
Parameter_declaration//Parameter declaration
| Parameter_list ', ' parameter_declaration
Parameter Table parameter declaration
parameter_declarationà//parameter declaration
Declaration_specifiers IDENTIFIER
Declaration Description Identifier
compound_statementà//Compound statement
‘{‘ ‘}‘
| ' {' statement_list '} '//Statement list
| ' {' Declaration_list statement_list '} '
Declaration List Statement List
declaration_listà//Declaration List
Declaration
| Declaration_list Declaration
declarationà//statement
Init_declarator//initialization declarator
| Init_declarator_list ', ' init_declarator
Initialize declarator list
Init_declaratorà
Declaratory//Declarator
| declarator ' = ' initializer//initialization
initializerà//initialization
Assignment_expression//Assignment expression
| ' {' initializer_list '} '//Initialize list
| ' {' Initializer_list ', '} '
initializer_listà//Initialization List
Initializer
| Initializer_list ', ' initializer
statement_listà//Statement List
Statement
| Statement_list statement
Statementà
| Compound_statement//Compound statement
| Expression_statement//Expression statements
| Selection_statement//SELECT statement
| Iteration_statement//Looping statements
| Jump_statement//Jump statement
expression_statementà//expression Statements
‘;‘
| expression '; ' An expression
Selection_statement//SELECT statement
: IF ' (' expression ') ' statement
| IF ' (' expression ') ' statement ELSE statement
iteration_statementà//Loop Statements
While ' (' expression ') ' statement
| For ' (' expression_statement expression_statement ') ' statement
| For ' (' expression_statement expression_statement expression ') ' statement
Jump_statement//Jump statement
| CONTINUE '; '
| Break '; '
| RETURN '; '
| RETURN expression '; '
Expression
: assignment_expression//Assignment expression
| Expression ', ' assignment_expression
assignment_expressionà//-value Assignment expression
Conditional_expression//conditional expression
| Unary_expression Assignment_operator assignment_expression
Unary expression assignment operator assignment expression
conditional_expressionà//conditional expression
Logical_or_expression//logic or expression
| Logical_or_expression '? ' expression ': ' Conditional_expression
Logical OR expression conditional expressions
Logical_or_expressionà
Logical_and_expression//Logic and
| Logical_or_expression Or_op logical_and_expression
Logical_and_expression//Logic and
: inclusive_or_expression//containment or expression
| Logical_and_expression And_op inclusive_or_expression
Inclusive_or_expressionà
Exclusive_or_expression//unique or expression
| Inclusive_or_expression ' | ' exclusive_or_expression
Exclusive_or_expression//unique or expression
: and_expression
| Exclusive_or_expression ' ^ ' and_expression
And_expression
: equality_expression//equal expression
| And_expression ' & ' equality_expression
Equality_expression//Equal expression
: relational_expression//relationship
| Equality_expression Eq_op relational_expression
| Equality_expression Ne_op relational_expression
Relational_expression//Relationship
: Shift_expression//Mobile
| Relational_expression ' < ' shift_expression
| Relational_expression ' > ' shift_expression
| Relational_expression Le_op shift_expression
| Relational_expression Ge_op shift_expression
Shift_expression//Mobile
: Additive_expression//Add-on expression
| Shift_expression Left_op additive_expression
| Shift_expression Right_op additive_expression
Additive_expression//Add-on expression
: multiplicative_expression//multiplication
| Additive_expression ' + ' multiplicative_expression
| Additive_expression '-' multiplicative_expression
Multiplicative_expression//multiplication type
: cast_expression//Conversion expression
| Multiplicative_expression ' * ' cast_expression
| Multiplicative_expression '/' cast_expression
| Multiplicative_expression '% ' cast_expression
Cast_expression//Conversion expressions
: unary_expression//unary expression
| ' (' type_name ') ' Cast_expression
Unary_expression//Unary expression
: postfix_expression//suffix expression
| Inc_op unary_expression//unary-expression
| Dec_op unary_expression
| Unary_operator cast_expression//conversion expressions
| SIZEOF unary_expression
| SIZEOF ' (' type_name ') '//type name
postfix_expressionà//suffix expression
: Primary_expression//Main performance
| Postfix_expression ' [' expression '] '
| Postfix_expression ' (') '
| Postfix_expression ' (' argument_expression_list ') '
List of argument expressions
| Postfix_expression '. ' IDENTIFIER//Identifiers
| Postfix_expression Ptr_op IDENTIFIER
| Postfix_expression Inc_op
| Postfix_expression Dec_op
primary_expressionà//Main Performance
IDENTIFIER
| CONSTANT
| String_literal
| ' (' expression ') argument_expression_list//Parameter expression list
: assignment_expression
| Argument_expression_list ', ' assignment_expression
Unary_operator//Unary operators
: ' & '
| ‘*‘
| +
| ‘-‘
| ~
| ‘!‘
assignment_operatorà//assignment operator
=
| Mul_assign
| Div_assign
| Mod_assign
| Add_assign
| Sub_assign
| Left_assign
| Right_assign
| And_assign
| Xor_assign
| Or_assign
storage_class_specifierà//Storage Class Description
TYPEDEF
| EXTERN
| STATIC
| AUTO
| REGISTER
Struct_or_union_specifier//struct or union specifier
: Struct_or_union IDENTIFIER ' {' struct_declaration_list '} '
Structure Declaration table
| Struct_or_union ' {' struct_declaration_list '} '
| Struct_or_union IDENTIFIER
Struct_or_union
: STRUCT
| UNION
Struct_declaration_list//Structure Declaration table
: struct_declaration//Structure declaration
| Struct_declaration_list struct_declaration
Struct_declaration//Structure 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à//Structure Declaration table
Struct_declarator//Structure declaration
| Struct_declarator_list ', ' struct_declarator
Struct_declaratorà: declarator
| ': ' Constant_expression
| Declarator ': ' constant_expression
Enum_specifierà//Enumeration Description
Enum ' {' enumerator_list '} '//enum list
| Enum IDENTIFIER ' {' enumerator_list '} '//enum list
| ENUM IDENTIFIER
ENUMERATOR_LISTÀ//Enumeration 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 Type list
Parameter_list
| Parameter_list ', ' ellipsis
parameter_listà//parameter Type list
: parameter_declaration//Parameter type description
| Parameter_list ', ' parameter_declaration
Type_nameà
Specifier_qualifier_list
| Specifier_qualifier_list Abstract_declarator
Abstract declarator
abstract_declaratorà//abstract declarator
Pointer
| Direct_abstract_declarator
| Pointer direct_abstract_declarator
direct_abstract_declaratorà//Direct Abstract Declaration
' (' abstract_declarator ') '//abstract declarator
| ‘[‘ ‘]‘
| ' [' constant_expression '] '//constant expression
| Direct_abstract_declarator ' ['] '
| Direct_abstract_declarator ' [' constant_expression '] '
| ‘(‘ ‘)‘
| ' (' parameter_type_list ') '//Parameter type list
| Direct_abstract_declarator ' (') '
| Direct_abstract_declarator ' (' parameter_type_list ') '
labeled_statementà//Label Statements
IDENTIFIER ': ' Statement
| Case constant_expression ': ' statement//constant expression
| DEFAULT ': ' Statement
Grammar Analysis 2