0

所以,我正在实现一个上下文敏感的句法分析器。这是一种实验性的东西,我需要的东西之一是可用且实用的句法结构来测试它。

例如,无法使用标准 CFG(上下文无关语法)解析以下示例。基本上它允许声明多个不相关数据类型的变量并同时初始化它们。

int bool string number flag str = 1 true "Hello";

如果我省略一些细节,可以这样正式描述:

L = {anbncn | n >= 1}

因此,我希望您能想到尽可能多的类似示例,但是,它们确实应该是实用的。真正的程序员会欣赏的东西。

4

1 回答 1

2

几乎所有二进制格式都具有一定的上下文敏感性,最简单的示例之一是多个元素后跟该长度的无定界数组。(从技术上讲,如果可能的数组长度是有限集,那么这可以由 CFG 解析,但只有数十亿和数十亿的生产规则。)Pascal 和其他语言传统上以这种方式表示字符串。程序员经常使用的另一种上下文相关语法是二维源代码布局,它现在在预处理期间被转换为中间 CFG。对文档另一部分的引用,例如查找标签。图灵完备的宏语言。不确定您的解析器应该识别哪种语言。

于 2015-09-09T18:02:22.517 回答