前三篇博文(0,1,2)主要讨论是声明和定义的相关语法归约。从这篇文字开始,将开始进行有效的计算,涉及表达式和语句。表达式和语句这两个概念是不同的,表达式是没有分号(;)的,而表达式+;构成语句。但这不是语句的全部,语句还可以是跳转,迭代,标签语句等等.就是蛋和鸡的关系!当然不是那个鸡生蛋,蛋生鸡的悖论,而是表达式是蛋,孵化是分号,鸡是语句。蛋孵化成鸡。鸡肚子里可有蛋!就这个理吧!...
分类:
其他好文 时间:
2014-09-21 21:22:21
阅读次数:
408
C函数声明与定义的语法归约过程阐释。抽象数据类型强大到不可撼动!如何解释int (*mother(int (*)(long), int))(int);,它的函数指针又怎么定义在这里将找到答案!...
分类:
其他好文 时间:
2014-09-21 00:01:39
阅读次数:
321
采用LR(1)技术,写了一个C语言的语法归约器!之所以用LR(1)是因为gcc,tcc,ucc和lcc跟商量好似的,清一色的用的LL归约技术,书上也是讲的跟天花一样漂亮,如果再使用LL技术实在是炸不出价值来,源码一抓一大把,看看就够了,重写必要性不大!另外,书中的LR技术讲的项集又是大的没谱,工具YACC自动生成又不知道它玩的猫腻!最终用LR(1)自搞了一套方法high起来,效果还不错^!^...
分类:
其他好文 时间:
2014-09-20 14:07:27
阅读次数:
220
一、 前言
高度封装的事物(如各种IDE)在提供便捷操作的同时也失去了许多美好的内部细节,往往让让使用者只知道how to use 而不知道how to achieve,因而在出现一些封装内部的错误时就会让使用者手足无措,因此了解其内部的大致运行过程将有助于处理一些集成环境不提示的错误。
二、基本概念
编译: 编译器对源代码进行编译,是将以文本形式...
分类:
其他好文 时间:
2014-09-18 16:35:44
阅读次数:
193
(计算机牛人的必由之路) 1 前言 2 Mathematics (数学) 3 Data Structures & Algorithms (数据结构、算法) 4 Compiler (编译原理) 5 Operating System (操作系统)...
分类:
其他好文 时间:
2014-09-16 15:48:40
阅读次数:
280
Demo: CaculationTest前言有想过自己写一个计算器么?输入一些数学表达式就能自己计算解析生成结果。如果没有,可以现在开始想想,也许你会发现自己计算要不了几秒钟的表达式,让程序计算却没这么简单。假定为了便于理解,我们现在简化需求,数据类型只有整数,运算符只有加减乘除,没有括号。运行结果...
分类:
其他好文 时间:
2014-09-16 10:36:50
阅读次数:
700
无论是 lua_dostring 或者是 lua_dofile,都调用了语法分析 lua_parse。 在 lua 里面语法分析器是用 yacc 生成的,就是y.tab.c 文件,lua.stx 就是 yacc 的输入文件。 这里说的东西基本上编译原理书里都有介绍,如...
分类:
其他好文 时间:
2014-09-14 01:28:16
阅读次数:
434
编译过程就是把预处理的文件进行一系列此法分析,语法分析,语义分析以及优化后生产相应的汇编代码文件。主要分为5部分,分别是:词法分析、语法分析、语义分析、中间语言生产和目标代码生产与优化。本文图示介绍编译原理的整个过程。...
分类:
其他好文 时间:
2014-09-11 23:58:02
阅读次数:
543
上回讲了如何计算后缀表达式,其实真正的难点在于如何将一个正常的字符串表达式(中缀表达式)变成一个后缀表达式。如将6 * ( 5 + ( 2 + 3) * 8 + 3)变为6 5 2 3 + 8 * + 3 + * 逆波兰表达式,它的语法规定,表达式必须以逆波兰表达式的方式给出。逆波兰表达式又叫做后缀表达式。这个知识点在数据结构和编译原理这两门课程中都有介绍,下面是一些例子:...
分类:
编程语言 时间:
2014-09-11 15:26:03
阅读次数:
229