Parsing 如何处理具有多个派生树的语法选择集

Parsing 如何处理具有多个派生树的语法选择集,parsing,natural-language-processing,Parsing,Natural Language Processing,我需要为具有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->lambda={c,d,e} B->cC={c} B->lambda={d,e} C->d={d}

我需要为具有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->lambda={c,d,e}

B->cC={c}

B->lambda={d,e}

C->d={d}

C->lambda={d}

我有两个问题:

1) 我不知道写什么来在解析表或实际的解析代码中定义lambda

2) 如果lambda表达式依赖于字符串中后面的内容,那么当前标记将确定弹出的内容,对吗?例如,如果S转到ABCe,并且当前令牌是b,那么我会推(e)和推(C)吗?我刚才也意识到了lambdas的其他功能。B的选择集是相互包含的。因此,例如,只有当A处的当前令牌是b时,我才会按下“b”,如果当前令牌是c、d或e,我就会弹出()。我真的不知道该怎么写,这只是我的思考过程。但是是否允许使用选择集来代替实际的语法规则