请根据C11标准的文法集推导代码 int main() { printf("Hello world!\n"); return 0; }
时间: 2024-06-03 20:08:25 浏览: 6
1. 首先是程序的起始符号program:
program -> external_declaration
2. 然后是外部声明external_declaration:
external_declaration -> function_definition
3. 接着是函数定义function_definition:
function_definition -> type_specifier declarator compound_statement
4. 其中,类型说明符type_specifier是int:
type_specifier -> int
5. 函数名为main,因此声明符declarator为main():
declarator -> direct_declarator
direct_declarator -> direct_declarator ()
direct_declarator -> identifier
6. 函数体compound_statement包含printf语句和返回语句:
compound_statement -> { block_item_list }
block_item_list -> block_item
block_item_list -> block_item_list block_item
block_item -> statement
statement -> expression_statement
expression_statement -> expression ;
expression -> assignment_expression
assignment_expression -> conditional_expression
conditional_expression -> logical_or_expression
logical_or_expression -> logical_and_expression
logical_and_expression -> inclusive_or_expression
inclusive_or_expression -> exclusive_or_expression
exclusive_or_expression -> and_expression
and_expression -> equality_expression
equality_expression -> relational_expression
relational_expression -> shift_expression
shift_expression -> additive_expression
additive_expression -> multiplicative_expression
multiplicative_expression -> cast_expression
cast_expression -> unary_expression
unary_expression -> postfix_expression
postfix_expression -> primary_expression
primary_expression -> identifier
primary_expression -> constant
constant -> integer_constant
integer_constant -> 0
7. printf语句为:
identifier -> printf
expression -> "Hello world!\n"
8. 返回语句为:
statement -> return expression ;
expression -> 0