怎么寫一個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)!它們和編譯器沒有半毛錢關系 , 只不過 , 它們的某一個應用場景是和編譯器有關罷了 。