問題タブ [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 - 学習ツリートップ
Ruby の Treetop 文法ジェネレーターを独学で学ぼうとしています。私は、ドキュメントが「最高」のものに対してひどくまばらであるだけでなく、私が望んでいたほど直感的に機能していないように見えることを発見しています.
大まかに言えば、オンサイトのドキュメントやビデオよりも優れたチュートリアルがあれば、それがあれば本当にうれしいです。
より低いレベルでは、これは私がまったく働けない文法です:
それを読み込んで、非常に単純なテスト オブジェクトでいくつかのアサーションを実行すると、次のことがわかります。
正常に動作しますが、
エラーが発生します: NoMethodError: プライベート メソッド `eval' が呼び出されました #
説明で整数と浮動小数点数を逆にすると、整数と浮動小数点数の両方でこのエラーが発生します。これは限られた先読みに関連している可能性があると思いますが、「または」コンテキストで評価するという考えをカバーする情報さえ、どのドキュメントにも見つかりません
役立つかもしれないもう少しの情報。これら両方の parse() ブロックの pp 情報は次のとおりです。
フロート:
整数...整数規則に従うように定義されているように見えますが、 eval() メソッドをキャッチしていないことに注意してください。
アップデート:
私は特定の問題を解決しましたが、その理由はわかりません:
これは、存在するドキュメントでは意味がありませんが、余分な括弧を削除するだけで、Integer1 クラスと Integer0 クラスが一致しました。Integer1 は明らかに eval() メソッドを保持するクラスです。なぜそうなのか、私にはわかりません。
私はまだツリートップについてのより多くの情報を探しています.
ruby - Treetop SGF 解析
私は現在、Simple Game Format ファイルを解析する Treetop 文法を作成しようとしていますが、これまでのところほとんど機能しています。ただし、出てきたいくつかの質問があります。
- Treetop が解析後に生成する構造に実際にアクセスする方法がわかりません。
- 私のcharsルールよりもすべての文字のキャプチャを処理するためのより良い方法はありますか?
コメントが正しく書けない場合がございます。
C[プレイヤー1 [4k\]: やあ、プレイヤー2 [3k\]: やあ!]
[] が内部にある C[] ノードのネストされた構造を処理する方法に頭を悩ませることはできません。
以下は私の現在の進行状況です。
sgf-grammar.treetop
そして、私のテストケースは、現在、上記のネストされたブラケットの問題がある C[] ノードを除外しています:
たとえば .rb
ruby - ツリートップおよびネストされたスタイルシート ルールの CSS/HSS パーサー
私は Treetop を初めて使用し、CSS/HSS パーサーを作成しようとしています。HSS は、ネストされたスタイル、変数、および一種の mixin 機能を使用して、CSS の基本機能を強化します。
私はかなり近いです - パーサーは CSS を処理できます - しかし、スタイル内にスタイルを実装することになると、私は落ち込みます。例えば:
1 つは空白を処理し、もう 1 つは空白を処理しません。私はどちらもうまく機能させることができません。ツリートップのドキュメントは少しまばらで、基本的なものが欠けているように感じます。うまくいけば、誰かが私をまっすぐにすることができます。
A:
B:
ハーネスコード:
regex - Treetop/PEG で非貪欲なマッチング?
Treetopでこのようなことをするにはどうすればよいですか?
唯一の方法は次のようです。
どちらが醜いですか..他の方法はありますか? .+?
動作しないようです..
ruby - 梢ペグで {min,max} マッチを定義する方法
Ruby の正規表現では、/[0-9]{3,}/ と書くことができます:
ツリートップに「[少なくとも|ほとんど] n」に一致するルールはありますか?
ruby - Treetop (Ruby パーサー) 用の Vim インデント ファイル
Ruby パーサー/ジェネレーターであるtreetopの vim インデント ファイルを見た人はいますか? vim 構文強調表示ファイルは見つけましたが、インデント用のファイルは見たことがありません。
ruby - Treetop: 複合ルールの作り方
Treetop を使用して簡単な JSP パーサーを作成したいと考えています。今、私は次の問題を抱えています:
開始するための私の基本的な文法は次のとおりです。
jspToken は '<%' に一致し、jspPageToken は '<%@page' に一致する必要があります
これをirbで試すと:
でもやってみると
私は何が欠けていますか?
ruby - Treetop の基本的な解析と正規表現の使用
ruby Treetop ライブラリを使用してスクリプトを開発していますが、正規表現の構文で問題が発生しています。まず、他の設定で機能する正規表現の多くは、treetop では同じようには機能しません。
これは私の文法です: (myline.treetop)
これは私の使用法です: (usage.rb)
これにより、新しい単語が確実に検出されるはずです。入力文字列が「randomstring anotherstring new yetanother andanother」になり、ルール条件の正規表現の前後に任意の数の文字列の後に空白 (タブを含む) が続く場合に新しいものを見つけることができるように拡張するつもりはありません。つまり、「new」などの単語を含む文を渡すと、一致するはずです。
では、文法を次のように変更するとします。
次に、次の一致を見つけることができるはずです。
では、条件の前後に文字列の空白を繰り返せるようにするにはどうすればよいでしょうか? これを書き込もうとすると:
、無限ループに入ります。上記の () を [] に置き換えると、nil が返されます。一般に、正規表現は上記を使用すると一致を返しますが、ツリートップの正規表現は一致しません。これについてのヒントやポイントはありますか?さらに、treetop のドキュメントはあまりなく、例は単純すぎるか複雑すぎるため、treetop のより完全なドキュメント/ガイドを知っている人はいますか?
ruby - 正規表現を使用した Treetop 文法の問題
次のような単純な文法設定があります。
私の入力が「これはいいボールだ。使おう」だとしましょう。これによりエラーが発生しますが、最初になぜそれが間違っているのかについての理論を理解したいので、今は言及していません。では、ルールの形容詞に一致しないものすべてに一致するようにルール not_adjective を作成するにはどうすればよいでしょうか? 一般に、別の名前付きルールと「一致しない」ルールを (具体的には Treetop で) どのように記述すればよいですか?
ruby - ツリートップを使用したrubyのtcl配列の解析
私は(私が思うに)tcl配列にたくさんのデータを持っています。基本的にはの形式です{a {b c} d {e f} g}
。ネストされているのは1つだけですが、常にネストされているわけではありません。つまり、ネストされている場合もあれば、そうである場合もありa
ますが、決してネストされていない場合もあります。この配列を抽出して、rubyで使用できるようにします。a
{aa bb}
{}
{aa {bb cc}}
私が最初に考えたのは、「問題ありません。これを解析するための文法を少し書きます」でした。ツリートップのgemをインストールし、パーサーを作成しました。これは問題なく機能しているようです。解析されたツリーから配列を抽出しようとすると、問題が発生し始めました。問題の原因と私が間違っていることをよりよく理解したいと思います。
これまでの私のパーサーコードは次のとおりです:(tcl_array.treetop)
呼び出しp.parse("{a}").content
利回りtcl_array.rb:99:in 'content': undefined local variable or method 'array_element'
array_element_list(array_element)の最初の用語は、array_elementが未定義のローカル変数であることを示していますが、アクセサーメソッドはツリートップのドキュメントに従って自動的に定義されることになっています。
以前、私は文法に基づいた解決策を試しましたが、ルールは少なくなりましたが、少し複雑になりました。
しかし、この文法では、パーサーが代替式(/)を使用していなくても、配列ルールに対していくつかの異なる式を作成しているように見えるという問題がありました。その結果、配列ルールのさまざまなビットにアクセスして、それらをルビー配列として返す方法がわかりませんでした。