Grammar Analysis 2

Source: Internet
Author: User

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

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.