Attempto Controlled English (ACE) を開発しているAttempto プロジェクトをチェックしてみてください。ACE では、ルールを英語のサブセットで記述できます。例えば:
If "foo" contains "foobar" and "foobar" does not contain "foo" then 4 = 2 + 2.
ACE パーサーは、このような規則を談話表現構造 (DRS) と呼ばれる論理形式に変換します。上記の例では、次のようになります。
[]
[A]
predicate(A, contain, string(foo), string(foobar))-1
NOT
[B]
predicate(B, contain, string(foobar), string(foo))-1
=>
[]
formula(int(4), =, expr(+, int(2), int(2)))-1
DRS を ACE に変換する DRS verbalizer というツールがあります。上記の DRS の場合、次のようになります。
If "foo" contains "foobar" and it is false that "foobar" contains "foo" then 4 = ( 2 + 2 ).
あなたの場合、ルール表現をDRSに変換する必要があります(これは非常に簡単なはずです)。その後、DRSバーバライザーを直接使用できます。上記のツールは、LGPL ライセンスの下で利用できます。