繁体   English   中英

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

[英]Developing a parser in JavaScript(Esprima.JS) that parses Haskell Language in Mozilla AST format

目前,我正在开发使用JavaScript解析Haskell Language的解析器。我正在研究Esprima.JS,并希望以此为基础来解析Haskell Language。根据我的理解,我需要以数字等基本部分开始(如何在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格式。我们将为您提供帮助。

不用实现自己的Haskell解析器,而是重用现有的解析器:有许多用Haskell编写的Haskell解析器:

然后,您可以使用GHCJS将其编译为JavaScript,它是GHC的变体,可以将几乎所有的Haskell编译为JavaScript。

然后,您可以直接从“常规” JavaScript代码中调用GHCJS生成的JavaScript代码。

由GHCJS生成的最终JS代码并非旨在为人类可读,并且比手写JS大得多(但Google Closure Compiler减轻了一点),但性能相当。

至于Mozilla AST格式,您可以在Haskell代码中将生成的数据结构转换为可被JS调用,然后将其转换为Mozilla AST,或直接在Haskell代码中转换为Mozilla AST。 当然,您可能最终会写很多Haskell代码,这可能不是您想要的,但是考虑到您首先要解析Haskell,我假设您不是它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM