1

上下文敏感的 '%' ..... eol 评论

我从这里描述的 PDF 语法开始

https://github.com/caradoc-org/caradoc/blob/master/doc/grammar/grammar.pdf

这似乎缺乏 eol 评论的定义。

PDF 具有以 '%' 字符开头的行尾注释,但 string_literal (和另一个规则流)除外。

string_literal = "(" string_content ")";

其中 string_content 可以包含“%”字符和 eol,但不能包含“()”等。PDF 语言也有一些特殊情况,否则看起来像注释,例如

'%PDF-1.5' eol;

或者

"%%EOF" [eol];

有没有办法处理 tatsu 语法中的上下文敏感性?

4

1 回答 1

1

在此答案中,我将远离“上下文敏感”,因为该短语在语言理论中具有意义。

PEG 完全能够解析另一种语言中的子语言(例如 Python 字符串格式化表达式)。

事实上,原始的 PEG 定义并没有使用分词器,因为 PEG 语法可以解析分词子语言。

如果您想到子语法,那么上下文由知道必须调用子语法的规则提供。

使用 TatSu,有一些功能允许在解析(Buffer类)之前进行标记化,以提高效率和便利性,但使用这些功能不是强制性的。

唯一不能作为语法中的语法轻松处理的情况是具有宏功能的预处理,因为在解析内部语法的文本之前需要一个解释阶段。

于 2019-11-04T00:31:39.003 回答