C语言语法的一系列问题。。
function_definition: declaration_specifiers declarator declaration_list compound_statement
| declaration_specifiers declarator compound_statement
| declarator declaration_list compound_statement
| declarator compound_statement
针对划线部分谁能给我提供C的实例吗?尤其是declaration_list 这块有点弄不明白
还有
direct_declarator
: IDENTIFIER
| '(' declarator ')'
| direct_declarator '[' constant_expression ']'
| direct_declarator '[' ']'
| direct_declarator '(' parameter_type_list ')'
| direct_declarator '(' identifier_list ')'
identifier_list
: IDENTIFIER
| identifier_list ',' IDENTIFIER
中direct_declarator '(' identifier_list ')'有点不明白
难道函数定义中有可以有这样的形式
函数名称(表识符,表识符,表识符)
最后一个问题是
constant_expression 所谓的常量表达式,但从语法定义来看它还包含
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
这么说常量表达式还能包含函数?常量表达式到底是如何定义的。
望求解答,谢谢! 麻烦自己对照着抄一下,人工转化一下:mrgreen:
http://www.antlr.org/grammar/1153358328744/c.g
ANSI C的antlr描述 换个写法也许可以明白:
define function_definition
end define
define KR_parameter_decls
end define 明白了,谢谢了:em02:
回复 #2 prolj 的帖子
资料不错,怎样转换呢?回复 #5 a02123230 的帖子
:em06: 不知道觉得ANTLR和yacc描述挺像的,自己的大脑转换一下:em05:
页:
[1]