有没有办法在达语中进行上下文敏感的解析

时间:2019-11-03 09:05:43

标签: tatsu

上下文敏感的'%'..... 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];

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

1 个答案:

答案 0 :(得分:0)

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

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

事实上,原始的PEG定义不使用,因为PEG语法可以解析令牌子语言。

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

使用TatSu,有一些功能可以使标记化在解析(Buffer类之前)进行以提高效率和便利性,但并非必须使用这些功能。

唯一不能轻易地作为一种语法进行语法处理的情况是具有宏功能的预处理,因为在解析内部语法的文本之前,这些情况需要解释阶段。