【问题标题】:Context free grammar for an expression表达式的上下文无关文法
【发布时间】:2017-04-20 01:49:07
【问题描述】:

如何为代码块编写cfg? 我知道如何为正则表达式编写 cfg,但如果我们必须为以下输入编写 cfg,即

int a = 0 ;

怎么做?

【问题讨论】:

  • 取决于“代码块”的含义。例如,C++ 不能用 CFG 描述。
  • @Iluvatar 通过“代码块”,我的意思是 C++ 代码。谢谢顺便说一句!

标签: context-free-grammar


【解决方案1】:

暂时坚持 C。

一个块由一个语句(本质上是一行)或一个花括号、一个变量声明列表、一个语句或块列表以及另一个花括号组成。

所以首先假设 int 是唯一允许的变量类型,l 没有全局变量或参数,并且算术表达式的赋值(例如 a = 2 *b +c;)是唯一允许的语句类型。

然后将 if 语句添加到您的语法中,然后是 while 循环。最后是带参数的函数调用。

那么你基本上已经掌握了 C 类型语言的语法,剩下的只是细节(C typedef 还有一个尴尬的问题,当你终于可以添加它们时,你会遇到这个问题)。

【讨论】:

    猜你喜欢
    • 2016-04-11
    • 2021-06-29
    • 2014-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多