每种程序设计语言都有描述程序语法结构的规则。例如,Pascal程序由程序块(又叫分程序)构成,程序块由语句组成,语句由表达式组成,表达式由记号组成等等。这些规则可以用上下文无关文法或BNF范式(Backus-Naur Form)描述。 编译器常用的文法分析方法有自上而下和自下而上两种。正如它们的名字所示,自上而下分析器建立分析树是从根结点到叶结点,而自下而上分析器恰好反过来。它们的共同点是从左向右地扫描输入,每次一个符号。 最有效的自上而下和自下而上的分析法都只能处理上下文无关文法的子类。这些子类足以描述程序设计语言的大多数语法结构,其中LL文法的分析器通常用手工实现,而LR文法的分析器通常利用自动工具构造。 本章致力于编译器采用的典型语法分析方法。我们首先提出有关上下文无关文法的基本概念,然后介绍适合于手工实现的预测分析技术,最后给出自动工具用的LR分析算法。由于程序员准备的代码经常会出现一些语法错误,因此我们还扩展所介绍的分析方法,使之能从常见的错误中恢复过来。 3.1 上下文无关文法 ..... 3.4 自下而上分析 3.6 二义文法的应用
上传时间: 2013-12-25
上传用户:hanli8870
本文首先介绍目前几种常见的自动抄表系统,分析它们各自的特点,然后重点介绍以太网抄表系统及其控制器的设计与实现。第一章介绍国内外自动抄表技术的发展状况 第二章分析抄表系统的结构,对其上/下层通讯方式进行了详细的描述,比较了不同通讯方式的优缺点 第兰章专门就以太网为通讯方式的抄表系统进行介绍,指出它是一种很有发展前途的抄表手段 第四章和第五章详细介 绍以太网抄表系统中控制器的设计,分为硬件和软件两方面,对来用的微处理器(ARM芯片)和嵌入式操作系统(uClinux )也都有详细的介绍。最后,第六章指出本系统设计中的技术难点以及抄表技术今后的发展趋势。
标签: 自动抄表系统
上传时间: 2015-10-25
上传用户:缥缈
总结介绍KEIL C 编译过程中的错误信息,并进行原因分析
上传时间: 2015-10-30
上传用户:yulg
需求分析之非功能性需求模板,包括系统、用例、常见、非功能性需求
上传时间: 2015-10-30
上传用户:qoovoop
一 . 需求分析: 1) 输入形式和输入值范围: 输入形式是要压缩(或者要解压)的文件路径,输入范围是字符串,而且要是文件的路径。 2) 输出形式: 输出相应的编码压缩文件和解码原文件 3) 程序所能达到的功能: 利用哈夫曼对ASCII文件做不等长编码,达到压缩文件。利用哈夫曼树的遍历,达到解压文件的目的。程序的功能也就是实现压缩和解压ASCII类型文件的目的。 4)测试数据:(包括正确的输入数据及其输出结果和含有错误输入及其输出结果) 测试输入或者输出文本框是不是有空的,是不是不是有效路径。进行条件判断,实现错误处理。 比如要压缩:c:\a.txt 文件路径就是:c:\a.txt。如果输入框是空的,就判断,然后用MessageBox处理信息。 如果文件路径和文件的输出路径都写正确的话,就会输出相应的压缩或者解压文件,否则用函数MessageBox提示错误。然后进行更正。 二 . 概要设计: 1) 哈夫曼树的特点 a) 是二叉树的一种,而且是一种没有度数是1的二叉树 b) 一棵树有n个叶子,就会用2n-1个节点 c) 一种“最优”二叉树,由于树的带权路径(WPL)最小 d) 由于它是由下到上顺序构造的,使得分支节点和叶子节点从下到上,权值都是从小到大的顺序排列的
上传时间: 2013-12-03
上传用户:zsjzc
一 . 需求分析: 1) 输入形式和输入值范围: 输入形式是某集体的“人名”,输入的是人名的拼音,而且字符长度不超过19。 2) 输出形式: 输出相应的“人名”哈希表,并实现查找的功能,且平均查找长度不超R. 3) 程序所能达到的功能: 利用哈希函数对“人名”拼音做编码,建立哈希表。并实现查找的功能,且平均查找长度不超R。 4)测试数据:(包括正确的输入数据及其输出结果和含有错误输入及其输出结果) 测试输入是不是有效的。进行条件判断,实现错误处理。 如果输入是正确的话,就会按程序的5个功能一步步建立起哈希表、查看哈希表、哈希表的查找。否则用函数MessageBox提示错误。然后进行更正。 二 . 概要设计: 1) 哈希表的特点 a) 据哈希函数和处理冲突的方法将一组关键字映像到一个有限的区间上 b) 以关键字在地址集中的“像”作为记录在表中的存储位置 c) 不经过任何比较,一次存取便能得到所查记录
上传时间: 2014-01-08
上传用户:498732662
VHDL编写的ADC0809 控制器,经过验证没有错误
上传时间: 2013-11-29
上传用户:363186
嵌入式Linux 内核移植相关代码分析 本文通过整理之前研发的一个项目(ARM7TDMI +uCLinux),分析内核启动过程及需要修改的文件,以供 内核移植者参考。整理过程中也同时参考了众多网友的帖子,在此谢过。由于整理过程匆忙,难免错误 及讲解的不够清楚之处,请各位网友指正,这里提前谢过。本文分以下部分进行介绍: 1. Bootloader 及内核解压 2. 内核启动方式介绍 3. 内核启动地址的确定 4. arch/armnommu/kernel/head-armv.S 分析 5. start_kernel()函数分析
标签: ARM7TDMI uCLinux Linux 嵌入式
上传时间: 2016-01-12
上传用户:xzt
这是一个在JAVA中比较常见的有关异常处理的程序,让我们了解到当程序出现了非实质上的错误时,JAVA 是如何处理的过程
上传时间: 2013-11-30
上传用户:wff
此源码为线性相位滤波的vhdl源码和设计心得体会,理论分析和工程实践总结相结合,有很大的参考价值
上传时间: 2014-12-20
上传用户:youmo81