我需要为具有 lambda 表达式和多个派生树的语法编写一个解析表。我很难找到带有 lambda 表达式的语法的解析表示例。我应该如何开始?
我对选择集的尝试如下:
S-> ABCe = {e,b,c,d}。
(A->bB = {b}, A->lambda, B->cC ={c}, A->lambda, B->lambda, C->d = {d}, A->lambda, B- > lambda, C 转到 lambda = {e})。
A-> bB = {b}
A-> λ = {c,d,e}
B-> cC = {c}
B-> λ = {d,e}
C-> d = {d}
C-> λ = {d}
我有两个问题:
1) 我不知道在解析表或实际解析代码中定义 lambda 时要写什么。
2) 如果 lambda 表达式依赖于字符串中的内容,那么当前标记将确定弹出的内容,对吗?例如,如果 S 去 ABCe,并且当前令牌是 b,那么我会 push(e) 和 push(C) 吗?刚才我也意识到了 lambdas 的其他东西。B 的选择集是相互包含的。因此,例如,仅当 A 处的当前令牌是 b 时,我才会推送“B”,如果当前令牌是 c、d 或 e,我只会 pop()。我真的不知道该怎么写,这只是我的思考过程。但是是否允许使用选择集代替实际的语法规则?