在JavaScript中开发解析器(Esprima.JS),以Mozilla AST格式解析Haskell语言

时间:2014-03-09 08:51:15

标签: javascript parsing haskell esprima.js

目前我正在开发一个解析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格式。任何帮助都将受到赞赏。

1 个答案:

答案 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,我假设你不是敌人它