問題タブ [treetop]
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.
ruby - BBCode Treetop パーサーとスマート タグ クロージング?
私は、ほとんどが機能するツリートップ グラマー ファイルを作成しました。[b]
そのフォーラム用に構成された BBCodes のハッシュを持つ関数にそれらを渡したいようなタグの場合。太字が許可されている場合は HTML が返され、それ以外の場合は BB コードが無視されます。
これは、ネストされたタグでは機能しません。たとえば[b][i]Bold and italics[/i][/b]
、 の最初の終了タグと一致するため、正しく処理されません[/i]
。
タグが見つかったときに、否定的なルックヘッドで終了タグを探すようにするにはどうすればよいですか?
BBCode は、フォーラム管理者が特定のタグをオン/オフする動的システムであるため、BBCode の種類ごとにすべてのルールを書き出す必要はありません。
ruby - TreeTop ではルールの順序は重要ですか?
解析作業を行うために TreeTop を使い始めたばかりです。以下は、私を困惑させるスニペットです。
結果ast
は次のとおりです。
しかし、rule id
上に配置するrule integer
と、結果は になりnil
ます。それで、問題は何ですか?前もって感謝します!
ruby - 梢文法におけるローマ数字
次のような順序付きリストを解析したい:
これまでのところ、私のツリートップ文法は次のとおりです。
ただし、対応するパーサーはテキストを解析できません。何が壊れていますか?
ruby - ツリートップでアクショントリガーをコーディングする方法は?
パーサーがトークンを認識するたびに、いくつかのコードを実行しようとしています。
まあ言ってみれば
ここでのアイデアは、トークンが見つかるputs
たびにこのアクションを実行することです。foo
そのままコーディングすると、(クラスのロード時に) 1 回だけトリガーされ、もちろんその時点でstuff_i_want.text_value
は存在しないため、機能しません。
何か案が?それは可能ですか?ライブラリに関するドキュメントがないため、簡単にはわかりません。
ruby-on-rails - .treeptop ファイルがロードされる Treeptop & Rails
Rails アプリで Treetop の例が見つからないようです。レール以外のアプリでは、 Treetop.load('name_of_treetop_file') を実行すると、同じフォルダーが検索され、.treetop ファイルが読み込まれます。
私のレールアプリでは、どこに置いても次のようになります。
そのようなファイルまたはディレクトリはありません - name_of_treetop_.treetop
簡単に .load('name_of_treetop_file') を呼び出すことができるように、.treetop ファイルをどこに置くのですか?
ありがとう
ruby - Treetop は文法で定義されたメソッドを無視します
ツリートップでパーセンテージを解析しようとしています。私は次の文法を書きました:
これは正しく一致しますが、何らかの理由でto_f
ルート ノードのメソッドが結果に含まれていません。
tt によって生成されたコードを確認したところ、パーセンテージ ノード用に 2 つのモジュールが作成されており、そのうちの 1 つだけが残りのコードで使用されていました。
Percentage1 はコード内の他の場所には表示されませんが、Percentage0 は正しいノードで使用されます。
一方、to_f
メソッド onは正常にdecimal
動作します (これも 2 つのモジュールですが、両方ともノードを拡張するために使用されます)。その定義の違いがわかりません。それが原因です。
ruby - 2 つの / で囲まれた正規表現のルール
/
ツリートップを持つ文字のペア間ですべてを一致させるにはどうすればよいですか? /
エスケープ文字も一致させたいと思います。たとえば、「正規表現」を解析する場合:
結果は次のようになります。
ruby - Treetop 解析ツリーを抽象構文ツリー (AST) に変換する
Treetop で表現された文法を単純化し、カスタム ノードを使用して、パーサーの出力を AST にフィルター処理しようとしています。
基本的に、次の例を解析できます。
カスタム ノードはすべてTreetop::Runtime::SyntaxNodeを継承します
ここで、Treetop によって生成された解析ツリーを AST にフィルター処理する必要があります。
ここで説明されている戦略に従いますが、成功しませんでした: 私の AST はただ空です...
私のコンパイラドライバは次のとおりです。
何が欠けていますか?