我最近了解到C语言没有上下文无关文法。我也最近了解到gcc曾经使用yacc来解析C语言。yacc实用程序的手册说明{{link3:“被yacc接受的规范类是非常普遍的:带有消歧规则的LALR(1)文法”}},而维基百科指出,LALR文法是确定性上下文无关文法的子集,是上下文无关文法的子集。如果C甚至不是上下文无关的(更不用说是确定性上下文无关语言),但yacc可以解析C,那么yacc可以解析哪些语言类别,而不是具有LALR(1)文法的上下文无关语言子集?
我最近了解到C语言没有上下文无关文法。我也最近了解到gcc曾经使用yacc来解析C语言。yacc实用程序的手册说明{{link3:“被yacc接受的规范类是非常普遍的:带有消歧规则的LALR(1)文法”}},而维基百科指出,LALR文法是确定性上下文无关文法的子集,是上下文无关文法的子集。如果C甚至不是上下文无关的(更不用说是确定性上下文无关语言),但yacc可以解析C,那么yacc可以解析哪些语言类别,而不是具有LALR(1)文法的上下文无关语言子集?
(A)(B)
,这可能是:(B)
强制转换为类型A
。
- 将参数列表(B)
应用于函数表达式(A)
。A
是typedef
名称还是其他内容来不同地分类,然后这些不同分类的标识符可以被单独的语法规则所针对。这就像拥有一个魔法神谕,可以为标记添加语义信息,因此可以应用上下文无关技术。
typedef
等内容。 - Jonathan Leffler