关于编译器的问题

问题描述

最近摸索着写一个简易的c编译器,遇到一些困难,希望能够得到大家的指点。(主要就是思路不清晰啦,编译当年就没学好,现在很艰难啊。)1.语法分析的时候(LL1),需要用到词法分析给出怎样的结果呢?因为我是从语法开始下手的,所以真的不清楚词法应该给我提供什么形式的文档。有朋友说是<id,*n>这样子的,对吗?我又该怎么应用它呢?2.一定要用户自己输入文法嘛?为什么我们常用的编译器不需要呢?它们应用的什么方法呢?3.如果我自己手工做一个预测分析表,(当然这样局限性就很大了,只能分析一类格式的文法,不过暂且不考虑,慢慢演化嘛),我该怎么继续做语法检查错误和类型检查之类的呢?是去switchcase分析表二维数组中所有可能遇到的情况吗?比如case“E->TA”这种,然后做操作吗?可以做哪些操作呢?除了语法报错,可以同时进行类型检查,生成四元式之类的吗?4.类型检查怎么做?用什么方法?5.四元式什么时候生成,怎样翻译?6.有什么方法可以分析函数的调用关系呢?呵呵,问题罗列了一堆,估计都弄清楚了,做起来就顺手了,希望朋友们能够多多指点,谢谢各位咯。。

时间: 2024-11-05 16:28:32

关于编译器的问题的相关文章

淘宝数据库OceanBase SQL编译器部分 源码阅读--Schema模式

淘宝数据库OceanBase SQL编译器部分 源码阅读--Schema模式 什么是Database,什么是Schema,什么是Table,什么是列,什么是行,什么是User?我们可以可以把Database看作是一个大仓库,仓库分了很多很多的房间,Schema就是其中的房间,一个Schema代表一个房间,Table可以看作是每个Schema中的柜子,行和列就是柜子中的格子.User就是房间的主人.简单来说,Schema是包括表,列,索引,视图等数据库对象的集合. OceanBase中的强Sche

淘宝数据库OceanBase SQL编译器部分 源码阅读--生成物理查询计划

SQL编译解析三部曲分为:构建语法树,制定逻辑计划,生成物理执行计划.前两个步骤请参见我的博客<<淘宝数据库OceanBase SQL编译器部分 源码阅读--解析SQL语法树>>和<<淘宝数据库OceanBase SQL编译器部分 源码阅读--生成逻辑计划>>.这篇博客主要研究第三步,生成物理查询计划. 一. 什么是物理查询计划 与之前的阅读方法一致,这篇博客的两个主要问题是what 和how.那么什么是物理查询计划?物理查询计划能够直接执行并返回数据结果数

让UltraEdit成为java编译器

  1. ?        配置命令: 选择[高级]->[工具栏配置] ?        选择插入按钮进行命令添加: ?        依次填写命令内容: 解释:菜单项目名称:命令的名字,建议使用有代表性的文字.          命令行:在命令提示符下运行的命令,但是可以使用UltraEdit的参数.          工具栏位图/图标(文件路径):在工具栏显示的图标,最求美感的同志可以加上 我的配置如下: ?        在配置输出: 建议选择输出到列表框,默认为"追加到现有文件&q

如何设置c++ 编译器选线,禁用第三方库的警告

源地址:http://q.cnblogs.com/q/29557/ 问题描述: c++ 或者gcc选项如何设置,才能禁用第三方库的警告(比如boost库的警告).#pragma这种在源代码级别禁用警告的方法不算(这种方法不是我需要的).如果可以,cmake中如何设置(这个算另外一个问题吧.).(提问前,我已经google,baidu过了,没有找到有用的文献.) 解答: 建议的方式,在使用第三方库的时候创建一个新的头文件称为wrapper header ,包含第三方库的头文件,在你的wrapper

GCC编译器优化选项分析及具体优化了什么

问题 在使用gcc作为编译器.在设定编译条件时,在debug模式下生成的程序正常,但是在release模式下往往会出现很多种预料之外的结果,尤其在嵌入式环境中,程序在板子上运行的时候,问题就愈发明显. 为了了解具体为什么造成该问题,对两种模式下的配置做了对比 debug模式编译器参数为-O0 -g –Wall release模式编译器参数为-O2 -g –Wall 通过对比可以发现两种模式主要的不同在于编译器优化程度不同,那么编译器在两种优化下究竟做了什么优化那?现在我们来看看gcc编译器的优化

几款好的C/C++编译器(编译器而非IDE)

几个介绍IDE的博客: C/C++开发常用工具及系统编程 C/C++开发者必不可少的15款编译器+IDE C/C++圣战 大家说的都已经很多了,那么我在这里就不罗嗦口了,我着重讲下编译器. GCC(GNU Compiler Collection) 官方网站: https://gcc.gnu.org/ GCC有Windows移植版本,比较出名的就是MinGW和TDM-GCC MinGW :http://www.mingw.org/ TDM-GCC: http://tdm-gcc.tdragon.n

编译器的工作过程

源码要运行,必须先转成二进制的机器码.这是编译器的任务. 比如,下面这段源码(假定文件名叫做test.c). #include <stdio.h> int main(void) { fputs("Hello, world!\n", stdout); return 0; } 要先用编译器处理一下,才能运行. $ gcc test.c $ ./a.out Hello, world! 对于复杂的项目,编译过程还必须分成三步. $ ./configure $ make $ make

windows,c语言编译器,如何安装第三方库,

问题描述 windows,c语言编译器,如何安装第三方库, 具体来说,我在windows下给cfree安装xmllib2,下了个文件夹,里面有bin,include,lib三个文件夹,我的做法是,把这三个文件夹里的内容复制到cfree对应的文件夹里面去.果然需要用到库的代码可以编译通过了,但是在链接的时候报错,所有的库函数都提示未定义.例如"undefined reference to 'xmlReadFile'". 实在不知所措,求助. 解决方案 python在windows下安装第

GCC性能优越的多平台编译器详解

不经意间,GCC已发展到了4.3的版本,尽管在软件http://www.aliyun.com/zixun/aggregation/36661.html">开发社区之外乏人闻问,但因为GCC在几乎所有开源软件和自由软件中都会用到,因此它的编译性能的涨落会直接影响到Linux .Firefox 乃至于OpenOffice.org和Apache等几千个项目的开发.因此,把GCC摆在开源软件的核心地位是一点也不为过.另一方面,GCC4.3的出现,正在牵引着广大程序员们的心.如果我们非要用一个词来说

把其他C/C++编译器集成到VC2005中

在Visual C++ 2005中,如何调用其它编译器编译cpp文件呢? 换句话说,如何把其它编译器集成到VC2005的IDE中呢? 象IIC这样的编译器安装之后会自动集成进来,要集成其他编译器那还得自己动手.下面介绍一种简单的方法. 另外,在VC2005的IDE中是不能编译单个.cpp文件的,除非把它放在工程中.但是,我们可以通过调用外部工具实现编译单文件. 把cl.exe添加到外部工具的方法这里就不介绍了,大家参照下面添加gcc的方法,再查阅cl.exe的参数说明,就能试着添加进来. 下面以