C_grammar_old (Грамматики языков Си и С++), страница 2
Описание файла
Файл "C_grammar_old" внутри архива находится в следующих папках: Грамматики языков Си и С++, Грамматика Си под yacc. Текстовый-файл из архива "Грамматики языков Си и С++", который расположен в категории "". Всё это находится в предмете "практикум (прикладное программное обеспечение и системы программирования)" из 4 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .
Просмотр 2 страницы текстового-файла онлайн
conditional_expression =
logical_or_expression
| logical_or_expression '?' expression ':' conditional_expression
.
assignment_expression =
conditional_expression
| unary_expression assignment_operator assignment_expression
.
assignment_operator =
'='
| MUL_ASSIGN
| DIV_ASSIGN
| MOD_ASSIGN
| ADD_ASSIGN
| SUB_ASSIGN
| LEFT_ASSIGN
| RIGHT_ASSIGN
| AND_ASSIGN
| XOR_ASSIGN
| OR_ASSIGN
.
expression =
assignment_expression
| expression ',' assignment_expression
.
constant_expression =
conditional_expression
.
declaration =
declaration_specifiers ';'
| declaration_specifiers init_declarator_list ';'
.
declaration_specifiers =
storage_class_specifier
| storage_class_specifier declaration_specifiers
| type_specifier
| type_specifier declaration_specifiers
| type_qualifier
| type_qualifier declaration_specifiers
.
init_declarator_list =
init_declarator
| init_declarator_list ',' init_declarator
.
init_declarator =
declarator
| declarator '=' initializer
.
storage_class_specifier =
TYPEDEF
| EXTERN
| STATIC
| AUTO
| REGISTER
.
type_specifier =
VOID
| CHAR
| SHORT
| INT
| LONG
| FLOAT
| DOUBLE
| SIGNED
| UNSIGNED
| struct_or_union_specifier
| enum_specifier
| TYPE_NAME
.
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
.
declarator =
pointer direct_declarator
| direct_declarator
.
direct_declarator =
IDENTIFIER
| '(' declarator ')'
| direct_declarator '[' constant_expression ']'
| direct_declarator '[' ']'
| direct_declarator '(' parameter_type_list ')'
| direct_declarator '(' identifier_list ')'
| direct_declarator '(' ')'
.
pointer =
'*'
| '*' type_qualifier_list
| '*' pointer
| '*' type_qualifier_list pointer
.
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
.
parameter_declaration =
declaration_specifiers declarator
| declaration_specifiers abstract_declarator
| declaration_specifiers
.
identifier_list =
IDENTIFIER
| identifier_list ',' IDENTIFIER
.
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 ')'
.
initializer =
assignment_expression
| '{' initializer_list '}'
| '{' initializer_list ',' '}'
.
initializer_list =
initializer
| initializer_list ',' initializer
.
statement =
labeled_statement
| compound_statement
| expression_statement
| selection_statement
| iteration_statement
| jump_statement
.
labeled_statement =
IDENTIFIER ':' statement
| CASE constant_expression ':' statement
| DEFAULT ':' statement
.
compound_statement =
'{' '}'
| '{' statement_list '}'
| '{' declaration_list '}'
| '{' declaration_list statement_list '}'
.
declaration_list =
declaration
| declaration_list declaration
.
statement_list =
statement
| statement_list statement
.
expression_statement =
';'
| expression ';'
.
selection_statement =
IF '(' expression ')' statement
| IF '(' expression ')' statement ELSE statement
| SWITCH '(' expression ')' statement
.
iteration_statement =
WHILE '(' expression ')' statement
| DO statement WHILE '(' expression ')' ';'
| FOR '(' expression_statement expression_statement ')' statement
| FOR '(' expression_statement expression_statement expression ')' statement
.
jump_statement =
GOTO IDENTIFIER ';'
| CONTINUE ';'
| BREAK ';'
| RETURN ';'
| RETURN expression ';'
.
translation_unit =
external_declaration
| translation_unit external_declaration
.
external_declaration =
function_definition
| declaration
.
function_definition =
declaration_specifiers declarator declaration_list compound_statement
| declaration_specifiers declarator compound_statement
| declarator declaration_list compound_statement
| declarator compound_statement
.
END translation_unit .