目前我正在开发一个解析Haskell语言的JavaScript解析器。我正在研究Esprima.JS,并希望在它之上构建解析Haskell语言。根据我的理解,我需要从一个基本开始部分这样的数字(如何在Haskell语言中使用)操作员然后推进选项。我是新手,任何资源帮助都适合我
我正在遵循Esprima.js
的这种模式Token={
//Haskell
PosToken:10
//Should i have to declare all tokens of Haskell over here
};
TokenName={};
TokenName[Toke.PosToken]='PosToken';
//Should i have to all tokens of Haskell Overhere
FnExprTokens=[//Assignment and other operators];
Syntax={
//Haskell Expressions
HsExp:'HsExp',
HsStmt:'HsStmt',
HsFieldUpdate: 'HsFieldUpdate',
//and so on for other expression types
};
PropertyKind={};
//Error Messages
Messages={
};
Regex={};
我应该遵循这个过程还是改进其他事情。如果我想在Esprima.js(http://esprima.org/)上构建,那么流程是否相同。 Esprima.js很容易跟随acorn.js(尽管代码行少,速度快一点)。我想将Haskell解析为Mozilla AST格式。任何帮助都将受到赞赏。
答案 0 :(得分:1)
如何重用现有的Haskell解析器而不是实现自己的Haskell解析器:在Haskell中编写了许多Haskell解析器:
然后,您可以使用GHCJS将其编译为JavaScript,这是GHC的一种变体,可将几乎所有Haskell编译为JavaScript。
然后,您可以从“常规”JavaScript代码中调用生成的GHCJS代码。
GHCJS生成的JS代码并不是人类可读的,而且它也比手写的JS大得多(但是Google Closure Compiler稍微减轻了一点),但表现相当好。
对于Mozilla AST格式,您可以在Haskell代码中将结果数据结构转换为JS,然后将其转换为Mozilla AST,或者直接在Haskell代码中转换为Mozilla AST。当然你最终可能最终编写了很多Haskell代码,这些代码可能是你想要的,也可能不是你想要的,但是考虑到你首先试图解析Haskell,我假设你不是敌人它