首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在上下文无关的语法中进行左因子分解?

如何在上下文无关的语法中进行左因子分解?
EN

Stack Overflow用户
提问于 2012-03-03 04:46:01
回答 1查看 3.8K关注 0票数 5

据我所知,在下面的例子中,需要使用左分解来构建自顶向下的解析器。但是很难理解如何做到这一点?有人能帮帮我吗?谢谢。

代码语言:javascript
运行
复制
s = a | b
b = c d
c = (e | f) g
e = a | h
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-06 02:41:10

每个非终结符在这里只被引用一次,所以我们可以将整个语法放在一个表达式中:

代码语言:javascript
运行
复制
s = a | ((a | h | f) g d)

所以我们有两个基本的变化,终端a可选地后跟g,然后d,或者h或f中的一个总是后跟g,然后d。

所以我们有

代码语言:javascript
运行
复制
s =  b' | c'
b' = a | a g d
c' = (h | f) g d

或者,将通用的g d序列放入自己的产品中。

代码语言:javascript
运行
复制
s =  b' | c'
b' = a | a e'
c' = (h | f) e'
e' = g d

然后,我们可以通过引入E(空)选项,将a作为b‘中的公共起始符号:

代码语言:javascript
运行
复制
s =  b'' | c'
b'' = a (e' | E)
c' = (h | f) e'
e' = g d

语法现在是明确的。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9540117

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档