导航:首页 > 源码编译 > 实现前端编译器代码

实现前端编译器代码

发布时间:2023-09-11 04:03:47

‘壹’ 编译器的代码分析

编译器分析(compiler analysis)的对象是前端生成并传递过来的中间代码,现代的优化型编译器(optimizing compiler)常常用好几种层次的中间代码来表示程序,高层的中间代码(high level IR)接近输入的源程序的格式,与输入语言相关(language dependent),包含更多的全局性的信息,和源程序的结构;中层的中间代码(middle level IR)与输入语言无关,低层的中间代码(Low level IR)与机器语言类似。 不同的分析,优化发生在最适合的那一层中间代码上。
常见的编译分析有函数调用树(call tree),控制流程图(Control flow graph),以及在此基础上的 变量定义-使用,使用-定义链(define-use/use-define or u-d/d-u chain),变量别名分析(alias analysis),指针分析(pointer analysis),数据依赖分析(data dependence analysis)等。
程序分析结果是编译器优化(compiler optimization)和程序变形(compiler transformation)的前提条件。常见的优化和变形有:函数内嵌(inlining),无用代码删除(Dead code elimination),标准化循环结构(loop normalization),循环体展开(loop unrolling),循环体合并,分裂(loop fusion,loop fission),数组填充(array padding),等等。 优化和变形的目的是减少代码的长度,提高内存(memory),缓存(cache)的使用率,减少读写磁盘,访问网络数据的频率。更高级的优化甚至可以把序列化的代码(serial code)变成并行运算,多线程的代码(parallelized,multi-threadedcode)。
机器代码的生成是优化变型后的中间代码转换成机器指令的过程。现代编译器主要采用生成汇编代码(assembly code)的策略,而不直接生成二进制的目标代码(binary object code)。即使在代码生成阶段,高级编译器仍然要做很多分析,优化,变形的工作。例如如何分配寄存器(register allocatioin),如何选择合适的机器指令(instruction selection),如何合并几句代码成一句等等。

‘贰’ 编译器前端开发

编译器粗略分为词法分析,语法分析,类型检查,中间代码生成,代码优化,目标代码生成,目标代码优化。把中间代码生成及之前阶段划分问编译器的前端,那么后端与前端是独立的。后端只需要一种中间代码表示,可以是三地址代码或四元式等,而这些都与前端生成的方式无关。也就是不论你前端是用fortran还是c/c++,只要生成了中间代码表示就可以了,后端是不管你是用哪种语言生成的。

‘叁’ 如何实现前端代码打开vscode编辑器

vscode 可安装静态web服务器 Live Server用于运行前端代码,方便调试。最新的 Live Server已支持php动态页面。
安装方法是,点击左侧第五个图标,打开“扩展”页面,在文本框中输入Live Server,点击第一个搜索结果,在右侧页面中点击安装,等待安装完成。
运行方式是,选中项目,点击屏幕下方工具栏中的Go live按钮即可。再点击一次,即停止运行服务器。
Live Server有一些默认配置选项,用户可以修改。点击 文件->首选项->设置, 在右侧页面中找到 Live Server Config,其中列出的是本插件的配置属性。将其复制到右侧,修改属性值,点击保存即可。例如,修改默认的端口,可以复制以下代码到页面的右侧的用户设置中。

1
"liveServer.settings.port": 5501

点击保存,默认的端口就有5500改为5501.
其他设置的含义,查找该插件的说明文档。
注意,VSCode 中的所有设置都是通过json格式的数据配置的。用户可以查找对应的key值,修改其value,从而修改配置属性。

‘肆’ 如何实现在浏览器中拿到代码,再传到后台调用C编译器进行编译运行

后端工具是什么无所谓,你用c照样能搭后端,本质都是HTTP协议上传输的一组数据,思路我之前已经说了。基本思路就是这样,你换什么工具都一样。
浏览器如何拿到代码?DOM+js
如何传给后端?Ajax
后端如何收到?工具里的API,自行查手册。
你最大的问题在于对HTTP协议并不了解,这种情况下,去了解你所使用的工具即可,码个demo,你就知道大体流程了。
----------------
你需要了解一下HTTP相关的知识,或者直接使用相关的工具来跳过了解HTTP这一步骤(时间不够的话)
相关的工具如:1、apache2和php,2、java,3、python和django
前端页面里使用ajax将数据提交到服务器,服务器借助上述某个工具的API获取前端提交的内容,然后保存到文件,在调用命令行进行编译,将输出重定向到文件,然后与标准答案比较。

‘伍’ 前端开发常用哪些工具软件

前端开发的编译器在选择上还是很多的。在学校里,老师主要讲三个前端开发软件:

1、WebStorm

帮助编写HTML、CSS、Less、Sass和Stylus代码,并且支持Node.js和主流框架,如React、Angular、Vue.js、Meteor等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。但是付费软件。

2、IntelliJ idea

页面很简单,乍一看像是一个记事本,它也确实可以当记事本用。有很多特色插件可以使用,支持多种编程语言的语法高亮显示,具有代码折叠功能。

2、HBuilderX

HBuilderX是DCloud(数字天堂)推出的一款支持HTML5的Web开发IDE。HBuilder的编写用到了Java、C、Web和Ruby。HBuilder本身主体是由Java编写。是HBuilder下一代版本,具有轻便、适合vue框架的特点。

阅读全文

与实现前端编译器代码相关的资料

热点内容
电脑服务器地址ip地址 浏览:823
对矩阵压缩是为了 浏览:910
setfacl命令 浏览:172
linux子系统中断 浏览:342
linux查看进程ps 浏览:224
知识库系统php 浏览:623
小波变换压缩图像python 浏览:151
阿里巴巴程序员怎么月入百万 浏览:173
如何使用国外服务器 浏览:188
燃灯者pdf 浏览:468
编译器用数学吗 浏览:7
图形化apk反编译工具 浏览:48
考勤表加密怎么办 浏览:735
arj压缩与解压批处理怎么写 浏览:658
php和大数据哪个好 浏览:930
未来最值得投资的加密货币 浏览:526
ascii码是编译的时候用吗 浏览:783
压缩机感应包可以通用吗 浏览:413
方舟服务器怎么发布到搜索列表 浏览:271
xml防反编译 浏览:242