首先是关于语言:
我们无法确定一个有着有序符号的一串排列算不算是语言的一部分,于是Formal Language 提供了一个更加精确的规则来
管理什么样的字符串是属于语言的范畴,Formal Language包括了编程语言,数据库查询语言以及一些不同的文件格式,
而相比之下,英语法语什么的不属于formal language的范畴,纵然你仍然可以写一些关于他们的一些规则。
怎么样去形容或者讲授一个语法:
1. 一些不太正式的表达:
一个算法表达式一般是由一些变量和数字和一些插入的操作符(+,-,*,/)组成的,然后一些子表达式也会被一
些插入语依附....之类的东西
2. 例如:a42是一个有效的变量名,而42a不是的,因为变量名不能以数字开头
3. 所以我们需要一些注释来更准确的表达这些description
这一门课主要是:表示正规语言的符号(notations for representing formal languages),为我们提供了:
1. 更加准确的定义
2. 创造编译器去识别语言
3. 提供方法去检验:
·
· 一串符号是否属于语言的范畴
· 两种可替换的语言描述是否是相同的语言
在编程语言中:
编译阶段:
1.词法分析:把字符串序列分成符号,类似于变量名,操作符,标记这种。
2.转换:鉴别符号之间的关系
3.生成代码
4.代码最优化