C语言语法的一系列问题。。

发布于 2022-09-19 12:54:52 字数 2054 浏览 12 评论 0

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

对风讲故事 2022-09-26 12:54:52

麻烦自己对照着抄一下,人工转化一下
http://www.antlr.org/grammar/1153358328744/c.g
ANSI C的antlr描述

仅此而已 2022-09-26 12:54:52

换个写法也许可以明白:
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

围归者 2022-09-26 12:54:52

明白了,谢谢了

心欲静而疯不止 2022-09-26 12:54:52

资料不错,怎样转换呢?

浅黛梨妆こ 2022-09-26 12:54:52

不知道
觉得ANTLR和yacc描述挺像的,自己的大脑转换一下

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文