我正在写一种小型命令语言。该语言有一些简单的命令,可以组成这些命令来制作复杂的命令。例如,如果我们有命令fry an egg
,make a sandwich
,make coffee
,我们可以创建一个新命令:
make a breakfast := fry an egg, make a sandwich, make coffee
。
然而,有时候,我只想要早餐咖啡,有时咖啡和三明治等等。也就是说,make a breakfast
可以是任何命令集的子集:{fry an egg, make a sandwich, make coffee}
因此,我需要一个规则来定义给定的一组简单命令的幂集。是否有意义 ?我能这样做吗?
答案 0 :(得分:1)
看起来你使用(E)BNF语法表示法。如果您的问题是关于如何在语法规则中捕获powerset。 AFAIK(E)BNF仅允许描述无上下文的语法,但是,powerset可以被建模为字母{a}中的语言{a ^ 2 ^ n},这是上下文敏感的。这意味着,您不能使用(E)BNF来描述任何powerset。但是,你可以做的是枚举特定的powerset。例如: S:=(a,{b,{c}} |(b,{c})| c | epsilon); 这种语言是{a,b,c}字母的幂。