编译原理文法知识通俗趣味理解
在正式介绍文法的知识之前,先来看一下西天取经团队成员的文法定义,以便对文法有个感性认识。
1. <西天取经团队成员>::=<师父>|<徒弟成员>
2. <师父>::= “唐僧”
3. <徒弟成员>::=”孙悟空”|”猪八戒”|”沙和尚”|”白龙马”
不用我多解释,大家也知道上面文法的含义吧。西天取经团队成员是师父或徒弟,师父是“唐僧”,徒弟成员是”孙悟空”、”猪八戒”、沙和尚”或”白龙马”。
问大家一个问题,西天取经团队成员中,有一位他的名字中第一字是“孙”,问这位成员是谁?“,读者可能会说,这么弱智的问题还好意思拿出来问,当然是“孙悟空”。
再举一个例子:
<陈述句>::=<陈述句内容>。
再问一个问题,根据<陈述句>的文法定义,<陈述句内容>以什么结尾,你会说当然是以句号结尾。
如果上述两个问题你都答对了,那么恭喜你,你读后面的词法分析和语法分析部分,将不会遇到太大的困难,因为后面的词法语法部分,用到的就是这个原理。后面文绉绉的对First集,Follow集的定义,其实描述的就是这点事。
自己动手写编译器、链接器 Author