程序设计语言的语言处理程序是一种什么软件_程序设计语言有三类分别是[通俗易懂]

程序设计语言的语言处理程序是一种什么软件_程序设计语言有三类分别是[通俗易懂]语言分两种,所谓语言就是我们平常开发说的C#,java,c等等

1.程序设计语言概述

1.1编译程序与解释程序

语言分两种,所谓语言就是我们平常开发说的C#,java,c等等。我们目前接触到较多的,大部分都是编译型语言。

  • 编译型语言:顾名思义,就是写好代码,生成软件,放到设备上运行。
  • 编译型语言的处理过程:
  1. 源代码:程序员编写的源代码。
  2. 预处理:预处理器对源代码进行预处理,如宏替换、头文件包含等。
  3. 编译编译器将预处理后的源代码转换为汇编代码
  4. 汇编汇编器将汇编代码转换为机器代码,也就是目标文件。
  5. 链接:链接器将多个目标文件以及库文件链接为一个可执行文件。
  6. 执行:操作系统加载可执行文件到内存,然后CPU执行。
  • 相对的就是解释型语言:不生成软件,边解释边运行。
  • 解释型语言的处理过程:
  1. 源代码:程序员编写的源代码。
  2. 解释:解释器逐行读取源代码,然后解释执行。这种方式不需要生成中间代码或者机器代码,所以可以在任何支持该解释器的平台上运行。
  3. 执行:解释器在解释的同时,也在执行源代码。每读取一行源代码就执行一行,如果源代码有错误,解释器会立即停止并报错。
    总结:编译型语言在程序执行前,需要经过预处理、编译、汇编和链接等步骤,生成机器代码,运行速度快;解释型语言无需预先转换,由解释器边解释边执行,便于调试,但运行速度相对较慢。
语言类型 编译型语言 解释型语言
解释程序 编译器 解释器
生成目标代码
执行 目标程序直接执行 边解释边执行
参与执行 编译器不参与执行 解释器参与执行
执行效率
灵活性
可以移植性

1.2常见程序设计语言的特点

以下几种是比较有代表型的语言

  • Fortran语言(第一个高级程序设计语言,科学计算执行效率高
  • Pascal语言(结构化程序设计语言,为教学而开发,表达能力强,Delphi)
  • C语言(通用结构化程序设计语言指针操作能力强,高效)
  • Lisp语言(函数式程序语言符号处理人工智能
  • C++语言(C语言基础上增加了类机制,面向对象,高效,与C兼容)
  • Java语言(面向对象,中间代码,跨平台,通用的程序设计语言)
  • Python(面向对象,解释型程序设计语言,胶水语言,通用的脚本语言)
  • PHP(服务器端脚本语言,制作动态网页)
  • Ruby(简单快捷、面向对象、脚本语言)
  • Delphi(快速应用程序开发工具,可视化编程环境)
  • COBOL(数据处理领域最为广泛的程序设计语言,高级编程语言)
  • XML(可扩展标记语言,标准通用标记语言的子集 )
  • PROLOG(逻辑式语言,间接性,表达能力强,建造希赛网系统、数据库、自然语言理解、智能知识库等)

1.3程序设计语言的基本成分

程序设计语言的基本成分,名字看上去很专业,但是会开发的工程师都比较清楚,实际上就是:数据成分、运算成分、控制成分、函数。

  • 数据成分:就是我们正常理解的变量,比如用户名,密码,系统名字等等。
  • 运算成分:软件的功能,就是对数据的操作,比如判断用户名是否正确,1+1等于多少等等。
  • 控制成分:主要是顺序、选择和循环三种控制结构。说得直白一点,就是正常按照代码顺序运行程序、if/else运行程序(类似的还有switch等)、while/for循环运行。
  • 函数:就是一个方法。这个是一个非常基础的知识,比如 public login(string user,string password){}。这个就是函数。
    有个规律:函数>控制成分>运算成分>数据成分

1.4函数调用方式

  • 传值调用
  • 引用调用

2.语言处理程序

2.1编译过程概述

在这里插入图片描述

  • 词法分析:顾名思义,是对词语的分析。以二元组的方式输出,即单词种别和单词自身的值。输出是记号流。词法分析的任务是把源程序的字符串转换成单词符号序列。词法分析器的任务就是读入源程序,对其进行一定的切分,得到记号流。

  • 语法分析输入是记号流语法分析基于词法分析,组词成句。词法分析和语法分析是对源程序的结构进行分析

  • 语义分析:组词成句之后对其意义进行分析,检查源程序是否包含静态语义错误,并收集类型信息供后面的代码生成阶段使用。只有语法和语义分析都正确的源程序才能翻译成正确的目标代码。

  • 中间代码生成:语义分析正常之后就生成中间代码。例如“三地址码”。

  • 代码优化:代码优化过程可以中间代码生成阶段进行,也可以在目标代码生成阶段进行。

  • 目标代码生成:目标代码生成阶段是编译器工作的最后一个阶段。这一阶段的任务是把中间代码变换成特定机器上的绝对指令代码、可重定位的指令代码或汇编指令代码。这个阶段的工作与具体的机器密切相关。

2.2文法

G=(V,T,P,S)
V:非终结符(Variable )集
每个非终结符称为一个语法变量(成分)——代表某个语言的各种子结构。
T:终结符(Terminal)集。
语言的句子中出现的字符,V∩T = 空集
S:开始符号(Start Symbol),S∈V
代表文法所定义的语言,至少在产生式左侧出现一次。
P:产生式(Product)集合。

  • 0型:短语文法,典型代表图灵机
  • 1型:上下有关文法,线性界限自动机
  • 2型:上下文无关文法,非确定的下推自动机
  • 3型:正规文法——有限自动机

2.3正规式与正规集

  • ab字符串ab构成的集合
  • a|b字符串a、b构成的集合
  • a*由0或多个a构成的字符串集合
  • (a|b)*所有字符串a和b构成的串的集合
    在这里插入图片描述

文法G[S]的分析如下:
第一个问题:
针对A选项:S→aA丨bB,可以推出aA;A→bS丨b,可以推出abS;S→aA丨bB,可以推出abaA;A→bS丨b,可以推出ababS,以此类推可以发现这样的正规式是一个以ab循环多次的字符串,即可以推出ababab。
针对B选项:S→aA丨bB,可以推出bB;B→aS丨a,可以推出baS;S→aA丨bB,可以推出babB;B→aS丨a,可以推出babaS;以此类推可以发现这样的正规式是一个以ba循环多次的字符串,即可以推出bababa。
针对C选项:S→aA丨bB,可以推出aA;A→bS丨b,可以推出abS;S→aA丨bB,可以推出abbB;B→aS丨a,可以推出abbaS;S→aA丨bB,可以推出abbaaA;A→bS丨b,以此类推可以推出abbaab。
针对D选项:S→aA丨bB,可以推出bB;B→aS丨a,可以推出baS;S→aA丨bB,可以推出babB;此时根据B→aS丨a,无法推出babb,所以D选项是错误的

第二个问题:即求正规式。

2.4有限自动机

在这里插入图片描述
由于A是初态,C是终态。代入验证四个选项中哪一个可以由初态走到终态
A选项:0000,A-0-B-0-B,接下来只能在B循环,所以0000无法识别。
B选项:1111,A-1-A-1-A,接下来只能在A循环,所以1111无法识别。
C选项:0101,A-0-B-1-C-0-B-1-C,整个过程就是0101,所以0101可以识别。
D选项:1010,A-1-A-0-B-1-C-0-B,未到达终态C,1010无法识别。
在这里插入图片描述

2.5表达式

  • 前缀表达式:
  • 中缀表达式:正常加减乘除
  • 后缀表达式(逆波兰式):从树结构来说,就是后续算法。树结构其实就是中缀表达式。

在这里插入图片描述
常见的表达式考核方法:

  • 给你前缀表达式让你求结果
    解答方法:从右至左扫描表达式,遇到数字时,将数字压入堆栈,遇到运算符时,弹出栈顶的两个数,用运算符对它们做相应的计算(栈顶元素 op 次顶元素),并将结果入栈;重复上述过程直到表达式最左端,最后运算得出的值即为表达式的结果。
    例如前缀表达式“- × + 3 4 5 6”:
    (1) 从右至左扫描,将6、5、4、3压入堆栈;
    (2) 遇到+运算符,因此弹出3和4(3为栈顶元素,4为次顶元素,注意与后缀表达式做比较),计算出3+4的值,得7,再将7入栈;
    (3) 接下来是×运算符,因此弹出7和5,计算出7×5=35,将35入栈;
    (4) 最后是-运算符,计算出35-6的值,即29,由此得出最终结果。
    可以看出,用计算机计算前缀表达式的值是很容易的。

  • 给你后缀表达式让你求结果
    解答方法:与前缀表达式类似,只是顺序是从左至右:
    从左至右扫描表达式,遇到数字时,将数字压入堆栈,遇到运算符时,弹出栈顶的两个数,用运算符对它们做相应的计算(次顶元素 op 栈顶元素),并将结果入栈;重复上述过程直到表达式最右端,最后运算得出的值即为表达式的结果。
    例如后缀表达式“3 4 + 5 × 6 -”:
    (1) 从左至右扫描,将3和4压入堆栈;
    (2) 遇到+运算符,因此弹出4和3(4为栈顶元素,3为次顶元素,注意与前缀表达式做比较),计算出3+4的值,得7,再将7入栈;
    (3) 将5入栈;
    (4) 接下来是×运算符,因此弹出5和7,计算出7×5=35,将35入栈;
    (5) 将6入栈;
    (6) 最后是-运算符,计算出35-6的值,即29,由此得出最终结果。

  • 给你中缀表达式让你求其前缀表达式

  • 给你中缀表达式让你求其后缀表达式

3.其它

今天的文章程序设计语言的语言处理程序是一种什么软件_程序设计语言有三类分别是[通俗易懂]分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/79876.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注