【发布时间】:2017-04-20 01:49:07
【问题描述】:
如何为代码块编写cfg? 我知道如何为正则表达式编写 cfg,但如果我们必须为以下输入编写 cfg,即
int a = 0 ;
怎么做?
【问题讨论】:
-
取决于“代码块”的含义。例如,C++ 不能用 CFG 描述。
-
@Iluvatar 通过“代码块”,我的意思是 C++ 代码。谢谢顺便说一句!
如何为代码块编写cfg? 我知道如何为正则表达式编写 cfg,但如果我们必须为以下输入编写 cfg,即
int a = 0 ;
怎么做?
【问题讨论】:
暂时坚持 C。
一个块由一个语句(本质上是一行)或一个花括号、一个变量声明列表、一个语句或块列表以及另一个花括号组成。
所以首先假设 int 是唯一允许的变量类型,l 没有全局变量或参数,并且算术表达式的赋值(例如 a = 2 *b +c;)是唯一允许的语句类型。
然后将 if 语句添加到您的语法中,然后是 while 循环。最后是带参数的函数调用。
那么你基本上已经掌握了 C 类型语言的语法,剩下的只是细节(C typedef 还有一个尴尬的问题,当你终于可以添加它们时,你会遇到这个问题)。
【讨论】: