我对这本教科书很难接受,而且我的教授认为回答问题对已经知道进入课堂的材料的学生是不公平的(从这个人获得的反馈是一个数据挖掘过程本身)。无论如何,我的问题围绕着CFG(正式语言/函数式编程类)的派生。如何选择在CFG派生中使用哪个规则?
Given a context free grammar that looks like:
S-> a|B
B-> b|C
C-> c
找到最左边的推导。是简单的吗?因为S-> a是S-> a | B中最左边的规则。或者我只是断定推导可以是a,b或c?我真的很困惑要选择哪个规则,我一直在按照左右顺序排列这些问题,以便对每个(最左边)变量分析的规则进行选择,但是这个规则没有递归在它,所以我不知道该怎么做。我非常感谢这方面的任何见解,我已经观看了视频并阅读了这本书,但似乎没有人会谈论这种情况。谢谢。
此外,我们的书:http://cglab.ca/~michiel/TheoryOfComputation/TheoryOfComputation.pdf
查找* what *的最左边派生。 – rici
“语法的典型最左派生。”我知道如何做的一个例子就像是S-> aSc | b。解决方案是S => aSc => aaScc => aabcc - 然后我可以在LL解析/ PDA中使用aabcc作为字符串。 – zodian
维基百科对“最左派生”的含义进行了合理解释:https://en.wikipedia.org/wiki/Context-free_grammar#Derivations_and_syntax_trees请注意,除非某些产品右手边有多个非终端,在部分推导中将永远不会有多个非终端,因此所有派生都将是最左边*和最右边。 – rici