其实笔记01是有些问题的,因为是今天想到的,所以不再修改笔记01,而是记入笔记02中,作为不断理解的记录。
在笔记01中,假设老外懂的基本词汇只是面和猪肉,其实还有几个:用小笼蒸的,用xx把xx包起来,把xx切碎。即终结符有5个。
生成式也不止三个,还有 肉 生成 猪肉,应该是4个。非终结符感觉就是过渡用的。
***************************************************************************************
终结符和非终结符是相对的。不过,一般说来,
可以这样理解,非终结符不是具体,可以用某来代替;而终结符是具体的,不能用某来代替的。
比如 小明 是 斯基大学斯基学院三年级学生,
只有小明是具体,是终结符,而大学,学院,三年级学生都是过渡用的,可以用某代替,是非终结符。
所以,语法路线,就是从大概到具体,从不清楚的到清楚的。
******************************************************************************************
虽然我还没有写过编译器,不过看了文法的四种形式后,用心理解后,心里有说不出的感觉。是八股文复活?还是虐待学生提高门槛?
编译程序大多采用2型文法(网上说的),那么就讲2型文法好了,剩下的就是例外(看了很多课件,没有看到专门讲不同文法的编译程序)。而且也不用起这个像个机器人的名字,2型文法,改叫编译文法,多友善。
而且还发现一个问题,
2型文法包含于1型文法,1型文法叫上下文相关文法;2型文法叫上下文不相关文法。起的名字不科学:
如果从中文译名来看,1型文法和2型文法的交集就应该是空集,但实际上是2型文法。
1型文法英文context_free,应该这样理解上下文相关或上下文不相关联合文法。
不知道有多少没成功入门的学生是在这里被坑的。
看上去,好像很厉害,其实都是2型文法(3属于2)。什么是2型,就是编译文法。