1
我在读Dick Grune的Parsing Techniques - A Practical Guide,我被卡在一个正式语法的例子上(起始页22)。他开始用这样的:(书中图2.2)以上对创建正式语法的例子感到困惑
0. Name -> tom
Name -> dick
Name -> harry
1. Sentence -> Name
Sentence -> List End
2. List -> Name
List -> List , Name
3. , Name End -> and Name
4. the start symbol is Sentence
重新编写引入了“清单”:
0. Name may be replaced by “tom”
Name may be replaced by “dick”
Name may be replaced by “harry”
1. Sentence may be replaced by Name
2. Sentence may be replaced by Sentence, Name
3. “, Name” at the end of a Sentence must be replaced by “and Name”
before Name is replaced by any of its replacements
4. a sentence is finished only when it no longer contains non-terminals
5. we start our replacement procedure with Sentence
然后,他更正式如下重新写这个。我认为列表是一个非终端,但我不知道它来自哪里或它的意思。另外,除非我误读文本,否则图2.2与第一个图应该是相同的,但它们并不完全匹配。例如,图1中第一个数字的规则#2(“句子可以被句子替换,名称”)在哪里。 2.2?
感谢您指出错字。但是,这并不能让我在那里。 “列表”只是一个符号,如“结束”和“名称”? – WebUserLearner
是的。它不是终端。唯一的终端是“汤姆”,“迪克”和“哈里”。 您可以在规则1.2和2.2的组合中找到规则#2,因为“语句”可能被“列表结尾”替换,“列表”可能会被替换为“列表,名称”。因此,您可以在上面的文本中获得对应于句子,名称的“List,Name End”。 – Pluto