問題タブ [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.
java - プログラムで作成された.jarファイルにクラスをロードする
私の目標は次のとおりです。SableCCを使用して、実行時に複数のパーサー/レクサーを生成し、それらのインスタンスをロードして解析とレクシングを行います。
だから私は自分のステップが次のようになると考えました:
.java
SableCCを使用してファイルを生成します。私はこれをやったと思います。.java
ファイルをファイルにコンパイルし.class
ます。私はこれを使用して行いJavaCompiler
ました。これもうまくいったと思います。生成されたファイルをファイルに入れ、
.jar
ファイル構造を保持します。これをテンプレートとして使用して行いました。JarBrowser.jar
を使用してファイルを調べると、パッケージのファイル構造が保持されていることがわかりました。これを使用すると、Jarカタログは通常のファイルと同じように見えます。ただし、JarBrowserを使用すると、jarが「CLASSPATHカタログ」の下に表示されません。これにより、ファイルが正しく作成されていないと思います。.jar
.jar
.jar
ファイルをのインスタンスにロードしますURLClassLoader
。を使用してロードしようとしていますClass.forName()
が、機能していないようです。
手順4を実行するたびに、が表示されjava.lang.ClassNotFoundException
ます。これがなぜであるかについて誰かが何か考えを持っていますか?
parsing - 文法における結合法則スキーマの変更
SableCCを使用して、モデルのパーサーを生成しようとしています。これをLAMと呼びます。LAM自体は単純であり、これらの単純な文法(多くのことを省略しています)は次のとおりです。
私はこの文法を書きました:
これは基本的には機能しますが、副作用があります。それは結合性のままです。たとえば、私が持っている場合
次に、次のように解析されます。
「;」をすべて優先したい。演算子なので、Lは次のように解析されます
(「||」のような他のものは、左結合のままである可能性があります)
私の質問は次のとおりです。
- 「自動化された」方法でそのような変換を行うためのヒントはありますか?
- 「;」がすべて優先される文法はどうでしょうか。?
「RTFMリンク」も受け付けています:-Dありがとうございます
odata - OData URI クエリの EBNF 文法
OData URI クエリの EBNF 文法を見つける場所を知っている人はいますか?
SableCC で使用して、OData URI クエリを解析するための C++ クラスを生成したいと考えています。
java - SableCC の予想: EOF
私は大学でコンパイラに関する課題を行っており、初めて SableCC 3.7 を使用しています。文法ファイルを定義しようとしていますが、(コマンド ライン経由で) 実行しようとすると、次のエラーが発生します。
"ParserException: [51,5] 予期: EOF
トークン
無視されたトークン
これを解決する方法を知っている人はいますか?オンラインのドキュメントは最適ではありません。
sablecc - SableCC がインタープリター メソッドにヒットしない
SableCC は初めてです。http://sablecc.sourceforge.net/thesis/thesis.html#PAGE26で電卓の例を実行しました。文法ファイルとインタプリタファイルをそのまま使い、「45 * 5 + 2」のような単純な算術式をパースしてみました。問題は、インタプリタ メソッド caseAMultFactor がヒットしていないようです。「+」を「-」に変更すると、caseAPlusExpr、または caseAMinusExpr にヒットすることがわかります。Start.apply(DepthFirstAdapter) メソッドはトップ モード ノードのみを通過しますか? サンプルコードのようにすべてのノードを反復処理するにはどうすればよいですか? 私は Java 1.7 を使用していますが、問題がないことを願っています。
便宜上、ここに文法とインタープリターのコードを貼り付けました。ご協力いただきありがとうございます。
java - SableCC の解析で間違った結果が返される
sablecc を使用して有効なメッセージを解析しようとしました。有効なメッセージ形式には 3 つのタイプがあります。
- ああ; (英字3文字+セミ
{messageid} messageid semi
) - んん; ( または 2 つの連続する英字または数字
{flightnum} carriercode semi
) - -amm (またはハイフン + 英字 + 2 つの連続する英字または数字
{load} hypene co semi
)
プログラムに有効な文字列を入力しても機能しませんでした。
入力:
abc; // タイプ 1
グーグー; // タイプ 2
グーグー; // タイプ 2
-ab2; //type3
sablecc 文法コード :
コンパイルが成功し、Java コードを実行すると、パーサー例外がスローされます。
simpleAdders.parser.ParserException: [1,1] 期待: messageid、carriercode、「-」
最初の文字列は有効ですが。
java - Eclipse で Sablecc をセットアップする
リンクに記載されている手順に従いました:Eclipseでsableccをセットアップしてsablecc をインストールします。リンクに記載されている手順 9 を実行しようとしていますが、エラーが発生します。メイン クラスが見つからないか、ロードできませんでした。Eclipseでsable ccをセットアップする方法を教えてもらえますか。それを行う他の方法はありますか?
sablecc - SableCC の文法を理解する
プロジェクトの 1 つで sableCC を使用していますが、Grammar ファイルに関するクエリはほとんどありません。1. ヘルパーとトークンの違いは何ですか? 2. ヘルパーとトークンには何を入れるべきですか? 3. そして最も重要なことは、プロダクションとは何ですか?
sablecc - SableCC の使用を開始する
私はプログラミングの初心者で、学校では少し SableCC プロジェクトを作成する必要があります。ただし、SableCC を適切に使用する方法がわかりません。
sablecc.org からダウンロードし、readme に記載されているとおりにインストールしました。
したがって、コマンドを使用してインストールした後java -jar lib/sablecc.jar
、コンソールは、たとえば次のように、使用方法がどのように機能するかを教えてくれます
または使用する
sablecc を動作させたい場所 (推測)。
ただし、このリストから何かを使用すると、次のように表示されます。
Sablecc が内部コマンドまたは外部コマンドとして認識されない
私は何を間違えましたか?ありがとう!