首先,我不知道这是否是我要求的正确翻译。
在我的一门课程中,我们只是盯着学习正则表达式,正式语言等等。
Alphabet {1,0,S,R}
Terminals {1,0}
Rules:
S ::= 0
S ::= 1
S ::= 1R
R ::= 1R
R ::= 0R
R ::= 1
R ::= 0
在这种情况下,假设我从1R开始,然后我可以继续使用1R或0R。
如果我从1R开始,那么只需1 ....那么句子(在这种情况下是二进制数字)是完整的吗?因为事后我不能“追加”一些东西,比如1R然后我选择1然后再选择1R?
提前致谢,如果不正确,请重新发帖/移动。
增加:
0 at rule S ::= 0
1 with S ::= 1
10 with S ::= 1R, so R ::= 0
如何生成1100110?
这不是功课,它是powerpoint的一个例子/问题。我不明白这是怎么做的。
答案 0 :(得分:3)
你所拥有的是一种常规语言,使用无上下文语法定义。定义相同语言的正则表达式为(0)U(1{0,1}*)
。简单来说,常规语言包含以1开头的所有字符串0和1,以及字符串0。
无上下文语法以一些初始非终端符号开头,在这种情况下它似乎是S.然后,您可以根据列出的生产规则用符号串替换任何非终端符号。当字符串不包含非终端符号时,它就“完成”。
在您的示例中,如果要替换的字符串中当前有S或R,则只能“选择1R”。正如这个语法一样,第一次将R替换为1时,您不再需要替换任何非终端,并且完成了字符串的生成。
编辑:这是1100110的制作痕迹。
S
1R via S ::= 1R
11R via R ::= 1R
110R via R ::= 0R
1100R via R ::= 0R
11001R via R ::= 1R
110011R via R ::= 1R
1100110 via R ::= 0
答案 1 :(得分:2)
你是对的。不允许附加,只能替换。但是使用这种语言,您可以通过选择“R :: = 1R”或“R :: = 0R”,然后再次替换R来继续使字符串更长。
答案 2 :(得分:1)
如果我从1R开始,那么只需1 ....那么句子(在这种情况下是二进制数字)是完整的吗?
是的,这是正确的。句子11匹配S = 1R = 11。
然而,使用此语法,您总是可以使用R = 1R或R = 0R为您的句子添加越来越多的数字。
修改:回答问题编辑:
如何生成1100110?
1100110 = S = 1R = 11R = 110R = 1100R = 11001R = 110011R = 1100110
希望这有助于您理解。
祝你好运!