thautwarm / Site-32

thautwarm's blog page.
https://thautwarm.github.io/Site-32/
7 stars 1 forks source link

parsing/lexing #9

Open thautwarm opened 3 years ago

thautwarm commented 3 years ago

it has been implemented: https://github.com/qntm/greenery 解决了我三年半前做parser框架的lexer检查问题。 中文生态在这种细节上还是很差劲,有种wikipedia中文的意思。

thautwarm commented 2 years ago

GLR可以用来处理歧义文法,当解析结束后如果GLR仍不能消除出歧义,我们应该报出最早的歧义。 这个做法是,从语法森林开始向下递归,每第一次碰到一个子节点包含歧义,递归停止,并记录该节点。 如果得到一个以上这样的节点,raise exception,汇报所有发现的歧义节点,位置、和歧义原因等;如果一个都没得到,表示歧义已经被resolve,直接reduce成普通语法树返回。