涉及到内容
- 编译与解释
- 文法
- 正规式(⭐⭐⭐)
- 有限自动机
- 表达式(⭐⭐)
- 传值与传址(⭐⭐)
- 多种程序语言特点
文法的定义
一个形式文法是一个有序四元组G=(V,T,S,P),其中:
1)V:非终结符。不是语言组成部分,不是最终结果,可理解为占位符。
2)T:终结符。是语言的组成部分,是最终结果。V∩T=空集
3)S:起始符。是语言的开始符号
4)P:产生式。用终结符替代非终结符的规则。
文法的类型分类
- 0型(短语文法)
- 1型(上下文有关文法)
- 2型(上下文无关文法)
- 3型(正规文法)
语法推导树(略)
有限自动机
M=(S,∑,δ,S0 ,Z)
1)S是一个有限集,每个元素为一个状态
2)∑是一个有穷字母表,每个元素为一个输入字符
3)δ是转换函数:是一个单值对照
4)S0 属于S,是其唯一的状态
有限状态自动机可以形象地用状态转换图表示,设有限状态自动机:DFA=({S,A,B,C,f},{1,0},δ,S{f})
其中:δ(S,0)=B,δ(S,1)=A,δ(A,1)=C,δ(B,0)=C,δ(B,1)=f,δ(C,0)=f,δ(C,1)=f
例:
正规式
正规式式描述程序语言单词的表达式,对于字母∑, 其上的正规式及其表示的正规集可以递归定义如下。
① ε是一个正规式,它表示集合L(ε)={ε}。
② 若a是∑上的字符,则a是一个正规式,它所表示的正规集L(a)={a}。
③ 若正规式r和s分别表示正规集L®、L(s),则
(a)r|s是正规式,表示集合L®∪L(s);
(b)r·s是正规式,表示集合L®L(s);
(c)r是正规式,表示集合(L®);
(d)®是正规式,表示集合L®。
仅由有限次地使用上述三个步骤定义的表达式才是∑上的正规式。由此可见,正规式要么为空,要么由字母、或、连接、闭包运算符组成。其中闭包运算符”*“具有最高的优先级,连接运算具有次高优先级,或运算符”|“具有最低优先级。
根据例题就很好理解文法和正规式概念。
例:(1)D (2)C
程序语言基础——表达式
前缀表达式(+ab)
中缀表达式(a+b)
后缀表达式(ab+)
例:表达式(a-b)*(c+5)
的后缀表达式是多少?a b - c 5 + *
(技巧,构造出二叉树,然后用遍历的方式)
函数调用——传值与传址
传递方式
- 传值调用:形参取的是实参的值,形参的改变不会导致调用点所传的实参的值发生改变。
- 引用(传址)调用:形参取的是实参的地址,即相当于实参存储 单元的地址引用,因此其值的改变同时就改变了实参的值。
例如: void swap (int a ,int b) 和 void swap(int* a,int* b )
程序语言基础——各种程序语言特点
- Fortran语言(科学计算,执行效率高)
- Pascal语言(为教学而研发的,表达能力强,Delphi)
- C语言(指针操作能力强,高效)
- Lisp语言(函数式程序语言,符号处理,人工智能)
- C++语言(面向对象,高效)
- Java语言(面向对象,中间代码,跨平台)
- C#语言(面向对象,中间代码,.net)
- Prolog语言(逻辑推理,简洁性,表达能力,数据库和专家系统)