原文引用https://www.dazhuanlan.com/2019/08/25/5d62598fd13ee/ 在学习编译原理的课程设计中,需要设计一个词法分许进程。于是尝试用Python来简单实现C语言词法分析器。其中其实并没有什么具体需要克服的难处,只要将部分的词法分析DFA设计好,实现起来思... ...
分类:
编程语言 时间:
2019-08-25 19:44:58
阅读次数:
98
1.HTML的概述 html全称HyperText Mackeup Language,翻译为超文本标记语言,它不是一种编程语言,是一种描述性的标记语言,用于描述超文本内容的显示方式。比如字体、颜色、大小等。 超文本:音频,视频,图片称为超文本。 标记 :<英文单词或者字母>称为标记,一个HTML页面 ...
分类:
Web程序 时间:
2019-08-23 21:58:30
阅读次数:
127
1.1 编译原理 分词/词法分析(Tokenizing/Lexing) 将由字符组成的字符串分解成(对编程语言来说)有意义的代码块,这些代码块被称为词法单元(token)。 解析/语法分析(Parsing) 这个过程是将词法单元流(数组)转换成一个由元素逐级嵌套所组成的代表了程序语法结构的树。这个树 ...
分类:
编程语言 时间:
2019-08-08 00:09:15
阅读次数:
136
随着时间的发展,现在的虚拟机技术越来越成熟了,在有些情况下,Java,.Net等虚拟机密集计算的性能已经和C++相仿,在个别情况下,甚至还要更加优秀。本文详细分析几个性能测试案例,探讨现象背后的原因。 ...
分类:
编程语言 时间:
2019-08-01 00:06:48
阅读次数:
111
<!doctype html> 编译原理 编译原理概述 1、编译概念: 从高级语言->目标代码的过程(汇编语言or机器码) 2、编译器的结构: 分析部分/前端(front end)->与源语言相关 词法分析>>词法单元流 语法分析>>语法分析树parse tree 语义分析>>语法树 中间代码生成> ...
分类:
其他好文 时间:
2019-07-23 22:33:35
阅读次数:
155
第三部分 虚拟机执行子系统 第六章 类文件结构 无关性的基石 多种语言(不仅仅是Java)编译成字节码(非机器码,与操作系统和指令集无关)Class文件,只要该文件符合虚拟机对Class文件的要求便可以在JVM中运行。 Class类文件结构 魔数 CAFEBABE、次版本号2u、主版本号2u; 常量 ...
分类:
其他好文 时间:
2019-07-04 17:14:51
阅读次数:
89
四则运算的语法规则(语法规则是分层的) 1. x 表示 x 出现零次或多次 2. x | y 表示 x 或 y 将出现 3. ( ) 圆括号,用于语言构词的分组 以下规则从左往右看,表示左边的表达式还能继续往下细分成右边的表达式,一直细分到不可再分为止。 expression : addExpres ...
分类:
编程语言 时间:
2019-06-30 19:11:29
阅读次数:
163
编译器 编译器是一个程序,作用是将一门语言翻译成另一门语言。 一般的程序,CPU 是无法直接执行的,因为 CPU 只能识别机器指令。所以要想执行一个程序,首先要将高级语言编写的程序翻译为汇编代码,再将汇编代码翻译为机器指令,这样 CPU 才能识别并执行。 示例: 学会编译原理有什么好处? 对编译过程 ...
分类:
编程语言 时间:
2019-06-30 19:05:22
阅读次数:
133
现在来模拟一下 CPU 执行机器指令的情况,由于汇编代码和机器指令一一对应,所以我们可以创建一个直接执行汇编代码的模拟器。 在创建模拟器前,先来讲解一下相关指令的操作。 栈 在内存中,栈的特点是只能在同一端进行插入和删除的操作,即只有 push 和 pop 两种操作。 push push 指令的作用 ...
分类:
编程语言 时间:
2019-06-30 18:53:02
阅读次数:
128
四则运算编译器,虽然说功能很简单,只能编译四则运算表达式。但是编译原理前端部分几乎都有涉及,词法分析,语法分析,还有代码生成。 再复杂的编译器、再简单的编译器,功能上是差不多的,只是复杂的编译器实现上会更困难。 这个系列的文章是为了帮助你入门,在这个基础上再去看编译原理相关书籍,不至于打瞌睡。 如果 ...
分类:
编程语言 时间:
2019-06-30 18:41:08
阅读次数:
130