回答
Jison仿照GNU Bison语法分析器生成器。它采用类似Bison或JSON格式的语言语法,并输出该语言的JavaScript解析器。如果你想制作基于另一种着名语言的解释器,那么可以在某处可以调整Jison的地方使用Bison语法。 我发现从头开始使用DSL非常简单。
为什么你会认为实现JavaScript语言的基本概念从根本上依赖于JavaScript?大多数情况下,它只是一种编程语言和类似标准编译器的方法;一个“仅仅”编译成JavaScript而不是机器指令。
下面是使用非常简单的元编译方法编写编译器的教程。它恰巧将JavaScript作为开始的地方,但它也不是致力于JavaScript。本教程基于Val Schorre撰写的关于“MetaII”的论文,这是一种编译器...,日期为(是的,你读得对)。我学会了如何从本文建立我的第一个编译器(但不使用JavaScript :),它仍然是一个有价值的技术:
Meta II Compiler Tutorial targeting JavaScript
如果你想要的东西更直接,考虑writing a recursive descent parser by hand.。在你写了一些这些之后,你会非常欣赏MetaII的天才。
Downvoter:建议性的反馈将是首选,而不是你的显性“旗”。我没有看到这个回应是什么,它没有直接解决OP对于用JavaScript来“构建语言”的方法的要求,因为这正是引用的教程所做的。 – 2011-05-20 23:47:53
我认为这非常相关。解析器是将语言解释为机器级理解的东西。如果OP想要对解析器有任何实际的权力,他将需要知道如何编写一个编译器;否则,他将无法独立完成他的项目。他将在教程请求后发布教程请求,并继续使用文档不完整的意大利面条代码进行缓慢爬取。如果他编写了一个编译器,他可以在睡梦中编写代码。 – 2012-08-02 13:44:27
我会先看看更多编译为javascript的语言,然后看看他们做了什么。这里有一个列表:https://github.com/jashkenas/coffee-script/wiki/List-of-languages-that-compile-to-JS
查看该页面底部的解析器生成器列表,使事情变得更容易一些,比如jison和peg.js.
编写替代语言编译为JavaScript时有一定的限制或障碍,因为JavaScript不是为其他语言设计的“字节码”或运行库。没有静态类型或类系统,例如,像在java和C#中一样。如果你只是做一些小的修改来修复JavaScript的问题,比如coffeescript和其他链接,那么类似这样的东西不是问题,但是更大的问题是为什么不仅仅是为了咖啡或类似的语言。
- 1. 用JavaScript编写的JavaScript解析器
- 2. 用JavaScript编写的Java解析器
- 3. 用Wisent编写解析器
- 4. 为javascript代码编写解析器
- 5. 试图编写解析器
- 6. 用PHP编写的SSI解析器?
- 7. 用Prolog编写的RegEx解析器
- 8. 用JAVA编写的COBOL解析器
- 9. 用javascript编写的搜索表达式解析器
- 10. 是否有任何用Javascript编写的开源JSDoc解析器?
- 11. Python解析器模块教程
- 12. 编写通用XML解析器
- 13. 技术用于在JavaScript编写XML解析器
- 14. Bada 2.0 JSON解析教程
- 15. 用于PhoneGap应用程序的JavaScript解析JSON解析器
- 16. 编写我自己的float解析器
- 17. 为haskell中的人编写解析器
- 18. 编写一个简单的解析器
- 19. 使用DOM分析器解析和编辑HTML解析器
- 20. 使用Ant解析和编写JSON
- 21. 编写解析器和编译器的最佳编程语言是什么?
- 22. 使用Javascript的解析器XML数据
- 23. GraphQL。如何编写解析器
- 24. 编写混合语言解析器
- 25. 如何在java中编写JavaScript解析器
- 26. 使用Javascript解析
- 27. 使用java解析器编写else if语句
- 28. 如何使用Geotools编写GML解析器?
- 29. 是否可以使用AWK编写语言解析器?
- 30. 如何使用opencsv编写java csv解析器
CoffeeScript不是基于Node.js(“核心编译器,但不依赖于节点”),它不是DSL。 – Andrey 2011-05-03 19:37:53
感谢您的澄清。 – exupero 2011-05-03 20:09:41
http://zaach.github.com/jison/ – Andrey 2011-05-03 20:16:33