怎么写一个js解释器

1.如何使用浏览器自带的JS解释器编写多行代码第一步 , 打开浏览器 , 随便打开一个网页 , 如百度首页
按F12快捷键后 , 在网页的右面或者下面会出现如图所示的调试窗口 , 
浏览器自带的console控制台有提示的功能哦 , 初学前端的同学一定都不熟悉js函数 , 可以用这个提示哦
第一个我们要做的是在控制台打印“helloworld”程序
但是当我们想连续输出两行打印语句发现在控制台里按住回车键以后是直接解释执行 , 根本无法连续编写两行代码
其实 , 只是一个技巧 , 但是好多人却不知道 , 初学前端的朋友也不知怎么搜索解决 , 当我们想换行的时候 , 按住shift键以后 , 再按回车 , 即可出现上图的效果 。最后安利一个功能:当想重复输入某个语句的时候 , 只需要按向上的箭头就可以快速生成已经编译的语句
2.javascript解释器是什么就是执行你的javascript代码的东东 , 就像你的java代码由JVM执行 , javascript是由javascript解释器执行 , 浏览器中一般都会包含这个
每个浏览器的并不一样 , 一般都包含在各浏览器的内核中
浏览器内核一般包含两个引擎:页面排版引擎 和 JS引擎
IE的 使用的自己的Trident 内核
FireFox 是Gecko内核
Opera 是Presto内核
Safari 使用的Webkit 内核
Chrome 是Google自己的 javascript V8引擎 而其页面排版采用的Webkit 内核
3.如何愉快地写个小parser如何愉快地写个小parser 在前几日的文章『软件随想录』里 , 我随性写了一句:「现在似乎已经不是lex/yacc 或 bison/flex的时代了 。
我亲眼看见一个同事在费力地用perl一行行解析某个系统的数据文件 , 却压根没想到写个BNF 。BNF对他来说 , 不是一种选择 。
」 很多同学不解 , 问我:lex/yacc不是写编译器 [1] 的么?我又不发明新的语言 , 它们对我有什么用?从这个问题里 , 我们可以见到国内本科教育荼毒之深 。象牙塔里的讲编译原理的老师们 , 估计用lex/yacc也就是写过个毫无用处的toy language , 然后把自己的一知半解传递给了他们的学生 , 学生们学得半通不通 , 兴趣索然 , 考完试之后便把死记硬背的内容如数奉还给了老师 。
别笑 , 我还真就是这么过来的 。我用lex/yacc干的唯一一件事 , 就是TMD设计一个语言 。
这世间的语言如此之多 , 实在容不下我等庸人再设计一门蹩脚的 , 捉急的 , 没有颜值 , 没有性能的语言 。况且2000年左右的时候还没有LLVM这种神器 , 也没有github这样的冥想盆去「偷」别人的思想 , 设计出来的蹩脚语言只能到语法分析这一步就停下来 , 没有任何实际用处 。
后来lex/yacc进化成flex/bison , 在工作中我也无意中翻看了一本orelley叫『Flex & Bison』的书 , 这书的副标题赫然写着:text processing tools 。书的内容还是挺教条的 , 和实际的工作内容略微脱节 , 可text processing tools这个说法戳中了我:是啊 , 词法分析 - lexical parsing(lex/flex) , 语法分析 - grammar parsing(yacc/bison)只是更好的文本处理工具(parser) , 是个高效处理带有语法的文本的DSL(Domain Specific Language)!它们和编译器没有半毛钱关系 , 只不过 , 它们的某一个应用场景是和编译器有关罢了 。