問題タブ [sablecc]

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.

0 投票する
1 に答える
817 参照

java - プログラムで作成された.jarファイルにクラスをロードする

私の目標は次のとおりです。SableCCを使用して、実行時に複数のパーサー/レクサーを生成し、それらのインスタンスをロードして解析とレクシングを行います。

だから私は自分のステップが次のようになると考えました:

  1. .javaSableCCを使用してファイルを生成します。私はこれをやったと思います。

  2. .javaファイルをファイルにコンパイルし.classます。私はこれを使用して行いJavaCompilerました。これもうまくいったと思います。

  3. 生成されたファイルをファイルに入れ、.jarファイル構造を保持します。これをテンプレートとして使用して行いました。JarBrowser.jarを使用してファイルを調べると、パッケージのファイル構造が保持されていることがわかりました。これを使用すると、Jarカタログは通常のファイルと同じように見えます。ただし、JarBrowserを使用すると、jarが「CLASSPATHカタログ」の下に表示されません。これにより、ファイルが正しく作成されていないと思います。.jar.jar

  4. .jarファイルをのインスタンスにロードしますURLClassLoader。を使用してロードしようとしていますClass.forName()が、機能していないようです。

手順4を実行するたびに、が表示されjava.lang.ClassNotFoundExceptionます。これがなぜであるかについて誰かが何か考えを持っていますか?

0 投票する
1 に答える
139 参照

parsing - 文法における結合法則スキーマの変更

SableCCを使用して、モデルのパーサーを生成しようとしています。これをLAMと呼びます。LAM自体は単純であり、これらの単純な文法(多くのことを省略しています)は次のとおりです。

私はこの文法を書きました:

これは基本的には機能しますが、副作用があります。それは結合性のままです。たとえば、私が持っている場合

次に、次のように解析されます。

「;」をすべて優先したい。演算子なので、Lは次のように解析されます

(「||」のような他のものは、左結合のままである可​​能性があります)

私の質問は次のとおりです。

  1. 「自動化された」方法でそのような変換を行うためのヒントはありますか?
  2. 「;」がすべて優先される文法はどうでしょうか。?

「RTFMリンク」も受け付けています:-Dありがとうございます

0 投票する
2 に答える
1153 参照

odata - OData URI クエリの EBNF 文法

OData URI クエリの EBNF 文法を見つける場所を知っている人はいますか?

SableCC で使用して、OData URI クエリを解析するための C++ クラスを生成したいと考えています。

0 投票する
1 に答える
977 参照

java - SableCC の予想: EOF

私は大学でコンパイラに関する課題を行っており、初めて SableCC 3.7 を使用しています。文法ファイルを定義しようとしていますが、(コマンド ライン経由で) 実行しようとすると、次のエラーが発生します。

"ParserException: [51,5] 予期: EOF

トークン

無視されたトークン

これを解決する方法を知っている人はいますか?オンラインのドキュメントは最適ではありません。

0 投票する
1 に答える
455 参照

sablecc - SableCC がインタープリター メソッドにヒットしない

SableCC は初めてです。http://sablecc.sourceforge.net/thesis/thesis.html#PAGE26で電卓の例を実行しました。文法ファイルとインタプリタファイルをそのまま使い、「45 * 5 + 2」のような単純な算術式をパースしてみました。問題は、インタプリタ メソッド caseAMultFactor がヒットしていないようです。「+」を「-」に変更すると、caseAPlusExpr、または caseAMinusExpr にヒットすることがわかります。Start.apply(DepthFirstAdapter) メソッドはトップ モード ノードのみを通過しますか? サンプルコードのようにすべてのノードを反復処理するにはどうすればよいですか? 私は Java 1.7 を使用していますが、問題がないことを願っています。

便宜上、ここに文法とインタープリターのコードを貼り付けました。ご協力いただきありがとうございます。

0 投票する
1 に答える
340 参照

java - SableCC の解析で間違った結果が返される

sablecc を使用して有効なメッセージを解析しようとしました。有効なメッセージ形式には 3 つのタイプがあります。

  1. ああ; (英字3文字+セミ{messageid} messageid semi)
  2. んん; ( または 2 つの連続する英字または数字{flightnum} carriercode semi)
  3. -amm (またはハイフン + 英字 + 2 つの連続する英字または数字{load} hypene co semi)

プログラムに有効な文字列を入力しても機能しませんでした。

入力:

abc; // タイプ 1

グーグー; // タイプ 2

グーグー; // タイプ 2

-ab2; //type3

sablecc 文法コード :

コンパイルが成功し、Java コードを実行すると、パーサー例外がスローされます。

simpleAdders.parser.ParserException: [1,1] 期待: messageid、carriercode、「-」

最初の文字列は有効ですが。

0 投票する
1 に答える
521 参照

java - Eclipse で Sablecc をセットアップする

リンクに記載されている手順に従いました:Eclipseでsableccをセットアップしてsablecc をインストールします。リンクに記載されている手順 9 を実行しようとしていますが、エラーが発生します。メイン クラスが見つからないか、ロードできませんでした。Eclipseでsable ccをセットアップする方法を教えてもらえますか。それを行う他の方法はありますか?

0 投票する
1 に答える
319 参照

sablecc - SableCC の文法を理解する

プロジェクトの 1 つで sableCC を使用していますが、Grammar ファイルに関するクエリはほとんどありません。1. ヘルパーとトークンの違いは何ですか? 2. ヘルパーとトークンには何を入れるべきですか? 3. そして最も重要なことは、プロダクションとは何ですか?

0 投票する
1 に答える
441 参照

sablecc - SableCC の使用を開始する

私はプログラミングの初心者で、学校では少し SableCC プロジェクトを作成する必要があります。ただし、SableCC を適切に使用する方法がわかりません。

sablecc.org からダウンロードし、readme に記載されているとおりにインストールしました。

したがって、コマンドを使用してインストールした後java -jar lib/sablecc.jar、コンソールは、たとえば次のように、使用方法がどのように機能するかを教えてくれます

または使用する

sablecc を動作させたい場所 (推測)。

ただし、このリストから何かを使用すると、次のように表示されます。

Sablecc が内部コマンドまたは外部コマンドとして認識されない

私は何を間違えましたか?ありがとう!