2011-01-20 51 views
1

我正在編寫一個小的命令語言。該語言有一些簡單的命令,可以組成複雜的命令。例如,如果我們有命令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

它對我來說很有意義,你也可以做到這一點。但是,如果沒有看到現有語法和/或示例代碼的某些部分被解析,就很難多說。 – aschepler 2011-01-20 15:47:20

+0

你是什麼意思的「規則」?你使用什麼樣的解析器?你的例子有一個缺陷:我不能炒兩個雞蛋。這個限制是否需要解析器解析?從根本上說,我不知道如何爲我熟悉的解析器編寫一個權力集合規則,但我不知道爲什麼我會這麼做。 – 2011-01-20 15:56:37

回答

1

它看起來像你使用(E)BNF語法記號。如果你的問題是關於如何在語法規則中捕獲powerset的話。 AFAIK(E)BNF只允許描述上下文無關語法,但是可以將powerset建模爲字母表{a}中的語言{a^2^n},該語言對上下文敏感。這意味着,你不能用(E)BNF來描述任何電源。但是你可以做的是列舉具體的powerset。例如: S:=(a,{b,{c}} |(b,{c})| c |ε); 這種語言是{a,b,c}字母表的權力。