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
这么说常量表达式还能包含函数?常量表达式到底是如何定义的。
望求解答,谢谢!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
麻烦自己对照着抄一下,人工转化一下
http://www.antlr.org/grammar/1153358328744/c.g
ANSI C的antlr描述
换个写法也许可以明白:
define function_definition
[NL] [decl_specifiers] [declarator] [opt KR_parameter_decls]
[compound_statement] [NL]
end define
define KR_parameter_decls
[NL] [IN] [repeat declaration+] [EX]
end define
明白了,谢谢了
资料不错,怎样转换呢?
不知道
觉得ANTLR和yacc描述挺像的,自己的大脑转换一下