1

我需要为具有 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()。我真的不知道该怎么写,这只是我的思考过程。但是是否允许使用选择集代替实际的语法规则?

4

0 回答 0