We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
之前看到一篇较完整的关于如何使用JavaScript实现一门编程语言的博文,虽然作者本人(UglifyJS作者)声称是简单的教程,但里面很多概念思考还是很值得学习,比如对continuation的讨论,yield以及reset/shift等的实现讨论等。所以尝试将全部文章译成中文,供更多对语言原理感兴趣的同学学习,翻译过程尽量保证原文风格,但限于Markdown语法的支持,后续章节一些定制化的脚本功能不能在线实时交互,原文请查看。
整篇译文的目录章节如下:
这是一本关于如何实现一门编程语言的教程。如果你曾经写过解释器(interpreter)或者编译器(compiler),那么本教程对你来说可能不会涉及新的知识概念。但如果你是使用正则表达式(regexps)来分析一门编程语言,还是建议你至少可以阅读解析章节。 让我们写出错误更少的代码!
本教程是按照由浅入深的编写顺序。除非你对某个主题已经非常了解,否则不推荐跳跃式阅读。如果对某些概念不能理解,随时可以参考之前的章节。同时非常期望得到你的问题和反馈!
本教程的目标受众是普通的JavaScript和NodeJS程序员。
这期间我会讨论到为什么Lisp是一门如此伟大的语言。不过,我们实现的语言不是Lisp。除了宏(macros)功能之外,它几乎和Scheme一样强大,拥有更丰富的语法(众所周知的经典中缀表达式)。但Lisp强大之处也正是宏(macros),是其它语言不能征服的终极堡垒(除非他们叫做Lisp方言)。【是的,我知道SweetJS...,但也差了一点】
首先,让我们来创造一门编程语言吧。
The text was updated successfully, but these errors were encountered:
No branches or pull requests
之前看到一篇较完整的关于如何使用JavaScript实现一门编程语言的博文,虽然作者本人(UglifyJS作者)声称是简单的教程,但里面很多概念思考还是很值得学习,比如对continuation的讨论,yield以及reset/shift等的实现讨论等。所以尝试将全部文章译成中文,供更多对语言原理感兴趣的同学学习,翻译过程尽量保证原文风格,但限于Markdown语法的支持,后续章节一些定制化的脚本功能不能在线实时交互,原文请查看。
整篇译文的目录章节如下:
前言
这是一本关于如何实现一门编程语言的教程。如果你曾经写过解释器(interpreter)或者编译器(compiler),那么本教程对你来说可能不会涉及新的知识概念。但如果你是使用正则表达式(regexps)来分析一门编程语言,还是建议你至少可以阅读解析章节。 让我们写出错误更少的代码!
本教程是按照由浅入深的编写顺序。除非你对某个主题已经非常了解,否则不推荐跳跃式阅读。如果对某些概念不能理解,随时可以参考之前的章节。同时非常期望得到你的问题和反馈!
本教程的目标受众是普通的JavaScript和NodeJS程序员。
我们将会学到什么
这期间我会讨论到为什么Lisp是一门如此伟大的语言。不过,我们实现的语言不是Lisp。除了宏(macros)功能之外,它几乎和Scheme一样强大,拥有更丰富的语法(众所周知的经典中缀表达式)。但Lisp强大之处也正是宏(macros),是其它语言不能征服的终极堡垒(除非他们叫做Lisp方言)。【是的,我知道SweetJS...,但也差了一点】
首先,让我们来创造一门编程语言吧。
The text was updated successfully, but these errors were encountered: