写在前面的话:由于要学编译器,看文档总觉得编程的一些基本概念没有搞清楚导致理解编译器的树型定义有些吃力,所以找来《Linux C一站式编程》这本书来看,发现这本书真的讲得简单明了,自认为很适合初学者,有一定基础的再读也会收获很多。
机器语言——汇编语言——高级语言
程序由指令组成,基本指令包括:输入、输出、基本运算、测试和分支、循环
编译和解释的不同:编译是全翻译完再执行,解释是翻译一句执行一句
自然语言VS形式语言:自然语言是人类讲的语言,形式语言是为了特定应用而人为设计的语言,编程语言是形式语言,专门设计用来表达计算过程的形式语言,形式语言有严格的语法规则。语法规则由符号token和结构的规则所组成,token相当于自然语言中的单词和标点、数学式中的数和运算符,结构是token的排列方式
Lexical词法即token
Syntax语法即结构规则
当阅读一个自然语言的句子或者一种形式语言的语句时,你不仅要搞清楚每个词(Token)是什么意思,而且必须搞清楚整个句子的结构是什么样的(在自然语言中你只是没有意识到,但确实这样做了,尤其是在读外语时你肯定也意识到了)。这个分析句子结构的过程称为解析(Parse)。例如,当你听到“The other shoe fell.”这个句子时,你理解the other shoe是主语而fell是谓语动词,一旦解析完成,你就搞懂了句子的意思,如果知道shoe是什么东西,fall意味着什么,这句话是在什么上下文(Context)中说的,你还能理解这个句子主要暗示的内容,这些都