当前位置:  开发笔记 > 编程语言 > 正文

Scalas/Haskells解析器组合器是否足够?

如何解决《Scalas/Haskells解析器组合器是否足够?》经验,为你挑选了3个好方法。

我想知道Scalas/Haskells解析器组合器是否足以解析编程语言.更具体地说,语言MiniJava.我正在阅读compiller构建和jflex和java杯是非常痛苦的工作所以我想知道我是否可以/应该使用解析器组合器.MiniJava语法非常小.MiniJavas BNF:http://www.cambridge.org/us/features/052182060X/grammar.html



1> ephemient..:

我从未使用过Scala,但是确定的BNF的存在使得这很容易.

简单地翻译成Haskell的Text.ParserCombinators.Parsec:

goal = do c <- mainClass
          cs <- many classDeclaration
          eof
          return $ c:cs
mainClass = do token "class"
               name <- identifier
               ...

等PArrows翻译是相当琐碎了.你可能会发现在解析器之前有一个明显的lexing阶段会更容易,但你也可以不用.



2> Germán..:

我正在使用Scala的解析器组合来解析PL/SQL代码,它就像一个魅力.



3> mattiast..:

至少Parsec有类似Java语言的内置词法分析器:

lexer = makeTokenParser javaStyle

你必须自己定义保留字.

推荐阅读
mobiledu2402851377
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有