前端编译原理简述

拥有回忆 提交于 2019-11-26 06:04:03

最近几年的项目技术难点都和编译原理,抽象语法树,代码编辑器 有关系。现在时间有点空,先从基础了解起来,让有些交互和提示能够更智能些。

     编译原理 其实就是 让计算机懂的 “437+734” 这样的字符串编程 sum 437, 734 计算机懂得的机器码。实际场景中可能是从一种高级语言编译成一种低级语言。

     编译过程份成2个步骤:

     1.词法分析

       词法分析就是 通过定义的正则表达式,把输入的字符串变成一个个标记(token)。

       “437+734”    =>  NUM PLUS NUM

 

     2.语法分析

        根据定于的语法,把上边的token通过移进/归约自动机,一步步的移入,规约,变成抽象语法树,最终产生结构。

        文法 E => NUM PLUS NUM  => sum(437, 734);

 

         前端的语法生成器还是有瞒多的 https://tomassetti.me/parsing-in-javascript/,不同的语法生成器支持的文法也有些差别

         项目中用到的是JISON库,这个库支持(lr0, slr, lr1, ll, lalr)文法。可以通过debugger的方式去理解编译原理的过程http://nolanlawson.github.io/jison-debugger/

     3.jison使用

         使用起来很简单,官网的文档也比较详细, http://zaa.ch/jison/docs/。定义jison文件,通过 node 命令 "jison  文件"生成编译js;

         

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!