問題タブ [dcg]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
prolog - 特定の文脈自由文法の記号(文)の文字列を生成する
私は次のような簡単な文法を持っています
今、私は上記の文法のためのパーサーを次のように書きたいです
これは、左端の派生によって文aaabbbを生成します。
私はプロローグでdcg/cfgを処理するのに十分ではありません。したがって、plsはこの例で私を助けてくれるので、先に進んでもっと大きなことを試すことができます。
prolog - プロローグでの文字列のトークン化
テキストファイル「grammar.txt」に次の文脈自由文法があります
このファイルを開いて、プロローグの各行を読み取ることができます。今、私は各行をトークン化し、次のようなリストを生成したい
これどうやってするの?
prolog - プロローグ: DCG 構文エラー
作成中の言語の「関数呼び出し」を解析しようとしていますが、次のようになります。
以下の最初の行は、エラーが発生している場所です。
DCG 解析のエラーに関するヘルプを Google で徹底的に検索しましたが、何も見つかりませんでした。私が間違っていることについての説明、または DCG をより理解するためのリソースがあれば役立ちます。
io - プロローグでのファイルの読み取り
重複の可能性:
Prolog でファイルを 1 行ずつ読み取る
一度に 1 文字を読み取って出力する次のプロローグ コードを見つけました。
ただし、ファイルに複数の行がある場合、トークン化が簡単になるように、一度に 1 行全体を読み取る方法があります。
prolog - Prolog の ' と " の違いは何ですか?
私はPrologを初めて使用し、「」と「」が異なる動作をすることに気付きましたが、その理由について興味があります。具体的には、ファイルをロードするときは機能しますが、?- ['test1.pl'].
機能し?- ["test1.pl"].
ません.
prolog - Prologチャレンジ
サブリストアルゴリズムの以下の実装があります。問題:2つのリストが与えられた場合、一方が他方のサブリストであるかどうかを判別します。私は本当にPrologで別の明確な解決策が必要になるでしょう。
解決策1:
解決策2:
解決策3:
解決策3':
prolog - Prologでリストを検索して別のサブリストに置き換えるにはどうすればよいですか?
検索と置換によってリストを変更しようとしていますが、検索語をリストとして使用してリストを検索するにはどうすればよいでしょうか。
リストがあるとしましょう[1,2,3,4]2と3を選び出し、5,6に置き換えたいので、理想的には述語を持つことができます。
file - SWI Prolog でファイルを読み取るには?
各行に名前を含むファイルを読みたいです。そして、SWI Prolog でこれを行う方法がわかりません。私は C/C++ について十分な知識を持っていますが、Prolog で同じことを行う方法はありますか?
prolog - プロローグ文脈自由文法の処理
与えられたCFG
可能なすべてを生成するgrammar('S'、sentence)のような述語を書きたい
左端の派生を使用して、検出された記号が終端記号である場合はその終端記号を出力し、検出された記号が非終端 記号'S'である場合は、バックトラックして置換し、文法の1つa S bまたはcまたはdを繰り返して、処理する。
コードは必要ありません...開始方法のヒントを教えてください
prolog - プロローグでデータベースからファクトを呼び出す
assert(....)を使用して、指定された文脈自由文法をデータベースに挿入しまし た。文法が次のような場合
この文法はデータベースに挿入されます。データベースで cfg の文を生成するには、dcg を作成する必要があります。たとえば、この方法で dcg を定義した場合myDcg('S',str)、「S」 (非終端) を呼び出すか、aSbまたはc|dなどで置き換える必要があります。
問題は、文を生成するために非終端記号 ('S') に遭遇するたびに、データベースから事実によって'S'を呼び出す/置換する方法です。
私の質問を理解していただければ幸いです。そうでない場合は、質問を編集してみます。
以下(サンプルコード)はまさに私がやりたかったことですこれはdcgではありません。
端末に遭遇するたびにそれを出力する必要があり、非端末に遭遇するとバックトラックします。