首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >C ++上下文无关或上下文无关文法?

C ++上下文无关或上下文无关文法?

提问于 2017-12-22 12:04:22
回答 2关注 0查看 1.3K

我经常听到C ++是一种上下文敏感语言的说法。以下面的例子:

a b(c);

这是一个变量定义或函数声明?这取决于符号的含义c。如果c是一个变量,则a b(c);定义一个名为btype 的变量a。它是直接初始化的c。但是如果c是一个类型,那么a b(c);声明一个名为的函数b,c并返回一个a。

如果你查找上下文无关语言的定义,它将基本上告诉你,所有的语法规则都必须包含一个只包含一个非终结符号的左边。另一方面,上下文敏感的语法允许在左侧的任意字符串的终端和非终端符号。

通过浏览“C ++编程语言”的附录A,我找不到一个单独的文法规则,除了左边的一个非终端符号之外,还有其他的东西。这意味着C ++是上下文无关的。(当然,上下文无关语言也是上下文敏感的,上下文无关语言构成上下文敏感语言的一个子集,但这不是重点。)

那么,C ++是上下文无关的还是上下文有关文法?

回答

和开发者交流更多问题细节吧,去 写回答
相关文章

相似问题

相关问答用户
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档