首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UU-Parsinglib在启用某些规则时会大大减慢

UU-Parsinglib在启用某些规则时会大大减慢
EN

Stack Overflow用户
提问于 2013-12-31 13:43:28
回答 1查看 115关注 0票数 3

我正在用uu-parsinglib编写编译器,我看到了一件非常奇怪的事情。我定义了一个pChoice组合子,如下所示:

代码语言:javascript
复制
pChoice    = foldr (<<|>) pFail

(注意,我使用的是贪婪的<<|>)。

让我们考虑以下代码:

代码语言:javascript
复制
pFactor i = pChoice [ Expr.Var    <$> pVar
                    , Expr.Lit    <$> pLit True
                    , L.pParensed (pExpr i)
                    -- , Expr.Tuple  <$> pTuple (pOpE i)
                    -- , Expr.List   <$> pLst   (pListE i)
                    ]

每个元素都以不同的字符开头- Expr.Var以字母开头,Expr.Lit以数字开头,L.pParensed以括号(开头,Expr.Tuple以括号{开头,Expr.List以括号[开头。

我有一个很大的测试代码,其中没有元组和列表。代码在0.15s中解析。当我取消对上面几行的注释时,时间会增加到0.65s。这是400%的减速...这怎么可能呢?我只使用贪婪的运算符,我确信解析器不会处理TupleList部分,因为在整个代码中既没有元组也没有列表。

如果您需要更多代码或定义,我当然会将其发布。

EN

回答 1

Stack Overflow用户

发布于 2014-01-19 08:54:35

我认为问题的原因可能在于您对pFactor进行了参数化。这将导致每次调用这样的解析器来构建一个新的解析器,这将需要时间。最好一劳永逸地创建这样的解析器,并在实际的解析过程中共享它们。我不知道你是如何使用这个解析器的,我不能再回答你的问题了。

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

https://stackoverflow.com/questions/20852392

复制
相关文章

相似问题

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