文法規則を扱うときに、Prolog で無数の端末を定義することは可能ですか?
次の例は、問題を説明しています。
selection-->([if,'('],condition,[')',
then,'{'],commands,['}']);([if,'('],condition,[')',
then,'{'],commands,['}',else,'{'],commands,['}']).
condition-->[X].
commands-->[X].
ここで、「条件」ブロックと「コマンド」ブロックは、無数の要素を持つことができます。Prologでそれを指定する方法は? ここで提供した条件とコマンドの生成規則では、アトムは 1 つしか許可されません。
次のステートメントが真実であることを望んでいますが、この規則 はcondition-->[X].
、これらの括弧の間にアトムを 1 つだけ許可します。
selection([if,'(',a,<,b,')',then,'{',a,+,+,'}',else,'{',c,'}'], []).
付録
プログラムにステートメントから構文ツリーを作成させる方法は? たとえば、次のステートメントを入力したとします。
selection( S, [ if, '(', a, <, b, ')', then, '{', a, +, +, '}' ], [] ).
、
結果は になりますS = selection(if(condition([a,<,b])),then(commands([a,+,+])))
。
コードにどのような変更を加える必要がありますか?
事前にどうもありがとうございました。