1029 C Language Grammar

Source: Internet
Author: User

Program-

External_declaration

| Program External_declaration

< programs > < external declarations > | < programs > < external declarations >

External_declaration-Function_definition

| Declaration

< external declarations > < function definitions > | < statement >

Function_definition, Type_specifier declarator compound_statement

< function definition > < specifier type > < declaration > < Compound statement >

Type_specifier

VOID

| CHAR

| Int

| FLOAT

< Descriptor Types > < empty classes > | < character > | < floating-point >

Declarator

Pointer direct_declarator

| Direct_declarator

< declarations > < pointers > < direct specifiers > | < direct specifiers >

Pointerà

‘*‘

| ' * ' pointer

< hands > <*> | <* hands >

Direct_declarator

IDENTIFIER

|direct_declarator ' ['] '

|direct_declarator ' [' constant_expression '] '

| IDENTIFIER ' (' parameter_list ') '

| IDENTIFIER ' (') '

|direct_declarator ', ' identifier_list

< direct specifiers > < identifiers > |  < direct specifier ' ['] ' > |  < direct identifier ' [' constant expression '] ' > |  < identifiers ' (' parameter list ') ' > |  < identifiers ' (') ' > | < direct specifier '; ' Identification list >

Identifier_list

: IDENTIFIER

| Identifier_list ', ' identifier

< identification list > < identifiers > | < identification list '; ' Identifiers >

Constant_expressionà

Conditional_expression

< constant expression >-< constant expression >

Parameter_listà

Parameter_declaration

| Parameter_list ', ' parameter_declaration

< parameter list > < parameter declaration > | < parameter list '; ' parameter declaration >


Parameter_declarationà

Declaration_specifiers IDENTIFIER

< parameter declaration >->< ' descriptor ' declaration ' identifier ' >

Compound_statementà

‘{‘ ‘}‘

| ' {' Statement_list '} '

| ' {' Declaration_list statement_list '} '

< compound statement >-> < ' {'} ' > | < ' {' statement list '} ' > | < ' {' Declare ' statement list '} ' >

Declaration_listà

Declaration

| Declaration_list Declaration

< declarations _ list > < identifiers > | < identification list identifiers >

Declarationà

Init_declarator

| Init_declarator_list ', ' init_declarator

< identifiers > < initialize the identifier > |< initialize Identifiers ', ' Initialize identifiers >

Init_declaratorà

Declarator

| declarator ' = ' initializer

< initialization identifiers > < identifiers > | < identifier ' = ' initializer >

Initializerà

Assignment_expression

| ' {' Initializer_list '} '

| ' {' Initializer_list ', '} '

< initializers > < Assignment expressions > | < ' {' Initialize list '} ' > | < ' {' initialization list ', '} ' >

Initializer_listà

Initializer

| Initializer_list ', ' initializer

< initialization list > < initialize >| < initialize list ', ' initializer >

Statement_listà

Statement

| Statement_list statement

< statement Tables > < statements > | < statement table Statements >

Statementà

| Compound_statement

| Expression_statement

| Selection_statement

| Iteration_statement

| Jump_statement

< statements > |< compound statements > |< expression Statements >|< SELECT statements >|< iteration statements >|< jump statements >

Expression_statementà

‘;‘

| expression '; '

< expression statements >-< '; ' > |< expression '; ' >

Selection_statement

: IF ' (' expression ') ' statement

| IF ' (' expression ') ' statement ELSE statement

< SELECT 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

< 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

: ' & '

| ‘*‘

| +

| ‘-‘

| ~

| ‘!‘

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à

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

Direct_abstract_declaratorà

' (' abstract_declarator ') '

| ‘[‘ ‘]‘

| ' [' constant_expression '] '

| Direct_abstract_declarator ' ['] '

| Direct_abstract_declarator ' [' constant_expression '] '

| ‘(‘ ‘)‘

| ' (' parameter_type_list ') '

| Direct_abstract_declarator ' (') '

| Direct_abstract_declarator ' (' parameter_type_list ') '

Labeled_statementà

IDENTIFIER ': ' Statement

| Case constant_expression ': ' Statement

| DEFAULT ': ' Statement

1029 C Language Grammar

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.