![](/img/trans.png)
[英]How it works that Javascript parser is itself written in javascript like ESPRIMA ? Then who parses the javascript of ESPRIMA
[英]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.