软件设计师考试-程序设计语言与语言处理程序基础
1. 编译过程
1.1 词法分析
词法分析器的任务是把源文件的字符流转换成记号流。
词法错误包括:非法字符,关键字或标识符拼写错误。
词法分析阶段会对构成源程序的字符集进行扫描和分解,分析构成程序的字符集由字符按照构造规则构成的符号是否符合程序语言的规定。
1.2 语法分析
语法分析器根据语法规则识别出记号流中的结构(短语,句子),并构造一棵能够正确反映该结构的语法树。语法分析主要检查句子的结构是否符合语法规则,语法错误包括:括号不配对,缺分号等
1.3 语义分析
语义分析:审查源程序是否有语义的错误,当不符合语言规范的时候,程序就会报错。程序设计语言的语义分为静态语义和动态语义,其中静态语义分析方法是语法制导翻译,其基本思想是将语言结构的语义以属性的形式赋予代表此结构的文法符号,而属性的计算以语义规则的形式赋予文法的产生式。
1.4 中间代码生成
中间代码生成是产生中间代码的过程。所谓“中间代码”是一种结构简单、含义明确的记号系统,这种记号系统复杂性介于源程序语言和机器语言之间,容易将它翻译成目标代码。另外,还可以在中间代码一级进行与机器无关的优化。
1.5 代码优化
这个阶段是对前阶段的中间代码进行变换或改造,目的是使生成的目标代码更为高效,即节省时间和空间。
1.6 目标代码生成
目标代码生成,也就是把优化后的中间代码变换或指令代码或汇编代码
1.7 符号表
在程序的编译过程中,符号表的作用是说及、记录源程序中各个符号的必要信息,以辅助语义的正确性检查和代码生成。
2. 文法
2.1 文法定义
当我们要描述一种语言时,需要给出这种语言的所有句子,当句子的数目是有限可数时,就要都列出来;当句子是一个无穷集,也就是无限不可数时,就要给出可以表示它们的结构的描述方法或者说,句子的组成规则。这种规则就是文法。
从形式上用于描述和规定结构的称为文法(或者说语法)
下面是文法的定义:
文法G定义为一个四元组(VN,VT,P,S),其中,VN为非终结符集合,VT终结符集合;P是产生式结合;S称为识别符或开始符号,也是一个非终结符,至少要在一条产生式的左边出现。
出现了几个名词,终结符、非终结符、产生式、识别符/开始符号等。下面具体聊聊这些名词和文法的定义。
VN是非终结符集合,非终结符N指的是可以被拆分的字符或串,它采取递归定义:一个非终结符是由终结符和至少一个非终结符组成的串,相对应的,终结符就是不可拆分的,语言中要用到的字符。所以VN中所存储的是所有的非终结符,VT中存储的是所有的终结符。
简单点讲:终结符就是推导到终结符时,不可再推导下去;而非终结符可以继续推导下去。
2.2 文法类型
上下文无关文法
上下文无关文法是形式语言理论中一种重要的变换文法,用来描述上下文无关语言,在乔姆斯基分层中称为2型文法,由于程序设计语言中的语法基本上都是上下文无关文法, 因此上下文无关文法的应用十分广泛。
3. 语法推导树
补充
在编译方式下,编译过程生成的是与源程序等价的目标程序,源程序和编译程序都不再参与目标程序的执行过程。而在解释过程生成的不是源程序的目标程序,而是中间代码。
4. 有限自动机
5. 正规式
文法推导与正规式例题
1.题目1
答案:(1)D (2)C
2.题目2
6. 程序语言基础
6.1 表达式
前缀表达式:前缀表达式是一种没有括号的算术表达式,与中缀表达式不同的是,其将运算符写在前面,操作数写在后面。为纪念其发明者波兰数学家Jan Lukasiewicz,前缀表达式也称为“波兰式”。例如,- 1 + 2 3,它等价于1-(2+3)。
前缀表达式是一种十分有用的表达式,将中缀表达式转换为前缀表达式后,就可以只依靠出栈、入栈两种简单操作完全解决中缀表达式的全部运算。
例如,(a+b)(c+d)转换为,+,a,b,+,c,d。
后面的前缀表达式的运算方式为:如果当前字符(或字符串)为数字或变量,则压入栈内;如果是运算符,则将栈顶两个元素弹出栈外并作相应运算,再将结果压入栈内。当前缀表达式扫描结束时,栈里的就是中缀表达式运算的最终结果。对比中缀运算的步骤,不难发现前缀运算在计算机上的优势。
中缀表达式就是常见的运算表达式,如(3+4)×5-6
后缀表达式:后缀表达式源自于前缀表达式,为了区分前缀和后缀表示,通常将后缀表示称为逆波兰表示;因前缀表示并不常用,所以有时也将后缀表示称为波兰表示。
例题:
6.2 函数调用
函数调用的传值与传址
6.3 程序语言的特点
Lisp语言是函数式程序设计语言,长期以来垄断人工智能领域的应用,LISP语言中大量使用了递归。
XML(Extensible Markup Language可扩展的标记语言)1.0标准于1998年2月10日发布,被认为是继HTML和Java编程语言之后又一个里程碑式的Internet技术。XML丰富了HTML的描述功能,可以描述非常复杂的web页面,如复杂的数字表达式、化学方程式等。
PHP:PHP是一种在服务端执行的,嵌入HTML文档的脚本语言,其语言风格类似于C语言。
6.4 中间代码
中间代码的作用是可以使程序的结构在逻辑上更为简单明确,特别是可使目标代码的优化比较容易实现。中间代码有多种形式,常见的有逆波兰记号(后缀式),四元式和三元式,它的共同特点是与具体的机器无关,不依赖于具体的计算机。
笔记总结来自:软件设计师考试教程
软件设计师考试-程序设计语言与语言处理程序基础相关推荐
- 计算机模拟软件分类,计算机水平考试-软件设计师分类模拟题程序语言(一)
计算机水平考试-软件设计师分类模拟题程序语言(一) (13页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 14.9 积分 软件设计师分类模拟题程序语言(- ...
- 软件设计师考试内容纲要
软件设计师考试内容纲要 一.考试说明 1.考试目标 通过本考试的合格人员能根据软件开发项目管理和软件工程的要求,按照系统总体设计规格说明书进行软件设计,编写程序设计规格说明书等相应的文档,组织和指导程 ...
- [软考2013计算机软件水平考试软件设计师考试大纲
来源:3773.com.cn 2012-12-21 2013计算机软件水平考试软件设计师考试大纲 软件设计师考试大纲 一.考试说明 1.考试目标 通过本考试的合格人员能根据软件开发项目管理和软件工程 ...
- (2012.12.25)我的中级软件设计师考试
我的中级软件设计师考试 ―― 2012.12.25(By: Neicole) 一.开篇 中级软件设计师,合格分是45/75(上午题)+ 45/75(下午题),然后,这次低分险过52+51.本文仅想简单 ...
- 2019计算机软件考试笔试答案,2019年下半年软件设计师考试上午真题(含答案)
2019年下半年软件设计师考试上午真题(含答案) (15页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 14.9 积分 20XX年下半年软件设计师考试上午 ...
- 中级软件设计师考试(软考中级)计算机专业英语
文章目录 一.计算机专业英语考试题目简介 二.计算机专业英语词汇汇总 一.计算机专业英语考试题目简介 在中级软件设计师考试中(上午),计算机专业英语主要以完形填空的形式,即一篇英文文章,有5道选择题, ...
- 2017下半年软件设计师考试难度分析
2017下半年软件设计师考试难考吗?这是很多准备参加考试的人的心中的一个疑问,小编只能说做好充足准备的战役,终会胜利.小编建议你们做好以下几点,软件设计师考试其实一点都不难. (1)软件工程.软件工程 ...
- 软件设计师考试笔记-(7)
2.软件设计师考试笔记-(7) 2.1.面向对象基本概念 面向对象(Object Oriented)是软件开发方法,一种编程范式.面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统.交 ...
- 【软件设计师】软件设计师考试内容及分值分布
软件设计师考试内容及分值分布 简介 考试大纲要求 考题类型及分值分布 计算机与软件工程知识 软件设计 注意 简介 考试分为上午和下午两场,都是笔试题,满分都是75分,45分合格. 上午: 计算机与软件 ...
最新文章
- pandas学习之Series结构
- 为啥led灯用一年后暗了很多_嫌原车的卤素“蜡烛灯”太暗,想换掉,该选氙气灯还是LED灯?...
- 中国通信企业投身罗马尼亚智慧城市建设
- 2017计算机软件考试试题,2017年计算机应用考试试题含答案.doc
- jaxb 映射 空字段_JAXB和未映射的属性
- C++顺序表(模板总结)
- 华为交换机stp原理透析及实战
- css3 fieldset,CSS3 fieldset/input 音乐均衡器/音效调节器
- 一个高性能RPC框架的连接管理
- Lesson 06 for Plotting in R for Biologists
- 如何打开 Excel VBA 及 我的第一个代码
- ucinet计算聚类系数大于1怎么办_UCINET 6
- 计算机三级数据库:课本知识点总结以及备考方案建议
- windows下shell工具cygwin
- 怎么简单使用Xftp6
- Github每日精选(第35期):移动设备数据库Realm
- 黑客游戏网址大全 – HACK GAME COLLECTION
- 百度ueditor粘贴word图片且图片文件自动上传功能
- 【Windows】中DOMAIN域
- 量子计算机芯片用什么材料,量子计算机可能会使用金刚石制成的芯片