【问题标题】:What use is an incremental SLR parser generator?增量 SLR 解析器生成器有什么用?
【发布时间】:2010-11-08 13:02:42
【问题描述】:

我曾经实现过一个生成增量解析器的 SLR 解析器生成器。解析器可以从头到尾解析一段文本,但是当您删除或插入文本时,它会做最少的工作和对令牌流和语法树的最小更改,而不是从头开始重新解析所有内容。问题是我找不到这个的任何用途?解析器比普通解析器做的工作略多。这样的东西有什么用吗? PS。如果你想知道怎么做,google 'basics of compiler design diku',这是一本免费的书,那么我所要做的就是稍微修改一下算法,让它到处存储解析器的状态,这是额外的工作我上面提到过。

【问题讨论】:

  • "know how,google,它是一本免费的书" 这句话没有任何意义。谷歌找一本关于单反解析的书?
  • 哎呀,我说的是谷歌“编译器设计基础知识 diku”,但我使用的不是 '"' 符号,嗯 '' 我认为他们可能会又消失了。
  • 下次只需编辑您的问题,以便删除麻烦的字符。 (我已经为你做了)。
  • 我考虑过编辑这个问题,但由于有人对此发表了评论,所以留下我认为评论过的原件就不会那么混乱了。这是我不小心说的最有趣的一句糟糕的英语,好吧,反正我今天记得...

标签: parser-generator


【解决方案1】:

显而易见的答案是支持结构化编辑器,其中编辑器拥有的是 AST 而不是文本。这允许编辑器在仅提供部分输入时建议如何继续编辑(例如,在“while”关键字之后,编辑器知道“(”是必要的并且可以建议它;它可以放入完整的“if”语句仅提供关键字后,它可能会在您键入时抱怨输入的语法错误等)

已经建立了很多这样的编辑器,但大多数都没有成功;人们似乎喜欢/讨厌这样做的编辑器。

我所知道的最先进的当前项目是伯克利的Harmonia 项目。他们使用增量解析器的老大哥版本:增量 GLR 解析器。

【讨论】:

    猜你喜欢
    • 2011-02-10
    • 1970-01-01
    • 1970-01-01
    • 2018-09-22
    • 2011-04-12
    • 1970-01-01
    • 1970-01-01
    • 2012-09-13
    相关资源
    最近更新 更多