我有一个家庭作业问题,要求生成空集的CFG。我认为它应该是两者中的一个,但我不是100%肯定。
S-> S但似乎这将是一个无限循环
和
S-> {}虽然它是“空集”符号,但它不是变量或终端......
答案 0 :(得分:1)
为任何有限语言 L
编写语法的一种方法是对w
中的每个L
语法包括S -> w
,即写入把所有的话都说出来。
例如,语言L = ['aa', 'ab', 'ba', 'bb']
由无上下文语法生成:
S -> 'aa'
S -> 'ab'
S -> 'ba'
S -> 'bb'
当然,通常会有更简洁的语法!
在您的示例L = [ {} ]
中。要明确回答你的问题:空集是一个终端,但你用来描述它的值在很大程度上取决于你的编程语言(在Python中你是可以选择set()
)。