Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Parsec或happy(与alex)或uu parsinglib_Parsing_Haskell_Parsec_Happy_Uu Parsinglib - Fatal编程技术网

Parsec或happy(与alex)或uu parsinglib

Parsec或happy(与alex)或uu parsinglib,parsing,haskell,parsec,happy,uu-parsinglib,Parsing,Haskell,Parsec,Happy,Uu Parsinglib,我将编写一个verilog(或vhdl)语言的解析器,并将对解析的数据进行大量操作(某种转换)。我打算解析非常大的文件(完整的Verilog设计,多达10K行),最终我将支持大部分Verilog。我不介意键入,但每当我添加对其他规则的支持时,我不想重写代码的任何部分 在哈斯克尔,你会推荐哪个图书馆?我认识哈斯凯尔,以前玩过Happy。我觉得使用Parsec转换代码中解析的字符串是有可能的(这是一个很好的优点)。我没有使用uu paringlib的经验 那么,要解析verilog/VHDL的完整语

我将编写一个verilog(或vhdl)语言的解析器,并将对解析的数据进行大量操作(某种转换)。我打算解析非常大的文件(完整的Verilog设计,多达10K行),最终我将支持大部分Verilog。我不介意键入,但每当我添加对其他规则的支持时,我不想重写代码的任何部分

在哈斯克尔,你会推荐哪个图书馆?我认识哈斯凯尔,以前玩过Happy。我觉得使用Parsec转换代码中解析的字符串是有可能的(这是一个很好的优点)。我没有使用uu paringlib的经验


那么,要解析verilog/VHDL的完整语法,建议使用哪种语法?我主要关心的是我可以随心所欲地操作解析数据的简单性和“正确性”。速度不是主要考虑的问题。

我个人更喜欢在Alex的帮助下使用Parsec进行词法分析


我更喜欢Parsec而不是Happy,因为1)Parsec是一个库,而Happy是一个程序,如果使用Happy,然后使用Happy编译,您将使用不同的语言编写。2) Parsec提供了上下文敏感的解析功能,这要归功于它的一元接口。您可以使用额外的状态进行上下文相关的解析,然后根据该状态进行检查和决定。或者只是在之前查看一些已解析的值,然后决定下一个解析器等等。(比如
a这是一个庞大的项目。Verilog解析器非常复杂。是的,的确如此。支持Verilog的某些部分足以表明我希望在博士学位期间使用Verilog。但我想在博士学位之后继续使用Verilog。所以这是一项非常长期的投资。我想知道Haskell是否符合要求。我喜欢这种语言。那么,我做了什么你到底做了什么?你对你的选择满意吗?你是说BNFC软件包吗?是的。这个软件包还附带了一个可执行命令。它真的很好。感谢你分享你的Lua解析器。看到Alex的真实情况很有帮助,而不仅仅是文档中的一些玩具示例。这个答案中关于happy的很多细节都是错误的。Happy支持上下文敏感解析(因为解析器可以在任意monad中运行)。Happy不需要Alex,您可以使用任何lexer。您甚至可以在Happy中直接进行词法分析,尽管不建议这样做。