【发布时间】:2021-04-11 18:11:53
【问题描述】:
是否有一种已知算法可以返回给定语法和修剪输入的可能语法树?
例如,当给定 JSON 语法和输入 ",1 时,有效输出将是
["", 1] 的语法树,因为这是一个有效的 JSON 语法树,而 ",1 是 ["",1] 的子字符串。 ",1" 也是一个有效的输出。
给定一个简单的数学表达式语法和字符串1)-,它可以输出(1)-0,因为它是一个包含子字符串1)-的有效表达式。
【问题讨论】:
-
您或许可以修改 CYK 解析算法以找到与给定片段一致的解析。
-
如果子字符串拆分了复杂的文字值(例如带引号的字符串或嵌套注释),尝试解析实用语言的子字符串可能会非常麻烦,因为您不确定要解析的子字符串是否以文字片段。 OP 的 ",1" 示例是一个有趣的案例;您可以为 ["",1] 争论,但您也可以为 [",1"] 争论。为了避免这种困难,您可能应该考虑根据以下方式定义语言语法单个字符。
标签: algorithm parsing grammar tokenize