問題タブ [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 - 最も単純なツリートップ文法は解析エラーを返し、学習中です
私はツリートップを学ぼうとしていて、名前を解析するためにhttps://github.com/survival/lordbishopからほとんどのコードを取得していて、そこから構築するつもりでした。
ruby コマンドラインではなく、Rails でビルドしているため、私の構造は少し異なります。
非常に単純な解析を実行すると、スペースで解析エラーが返されます (これは私の文法ではより単純なものの 1 つです。何が間違っているのでしょうか?
私のモデルでは、私のコードはかなり単純です
文法のほとんどを削除して、単語とスペースを取得するだけにしました
「john smith」を解析しようとしています。単語とスペースを取得して、そこからロジックを構築することを望んでいましたが、この単純なレベルでも立ち往生しています。助言がありますか??
ruby-on-rails - これが「未定義のメソッド」エラーを返すのはなぜですか
私はTreetopを使い始めており(これはTreetopエラーではないと思いますが)、単純な日付フィールドを解析しようとしています。
日付に月が含まれているかどうかを調べ、含まれている場合はそれを返します。だから私は私のビューに私の解析されたツリーを渡し、言います
@input_dateに月が存在しないため、出力がないと予想していましたが、代わりにエラーが発生します
.existsも使用しようとしましたが、同じ結果が得られます。
どうしてこれなの??月の存在を確認する別の方法はありますか?
ruby - ツリートップの分数の解析
ツリートップの文法で分数を解析するのに少し苦労しています。
私の文法はこんな感じ
から値を取得しようとすると
私はルールが
分数として返されます。私の文法の何が悪いのか分かりますか?
ruby - ツリートップで単語を検索しています - 一部の一致が作成されていません
私はちょっと奇妙な状況に遭遇しました。
ツリートップを使用して測定値を解析しようとしています。
たとえば、6 フィートの 1/2 インチの銅パイプはもちろん、フィート、フィート、インチ、インチ、インチ、インチなどと表記することもできます。
だから私にはルールがある
「6 インチ」、「6 ポンド」、「6 メートル」と入力すると、すべて正常に機能し、数値と測定値が返されます。
「6 メートル」と入力すると、メートルが正しく解析されません。
ほとんどの測定値は正常に機能します。ここで提供した測定値では、「メートル」と「ポンド」だけが欠落しています (ただし、将来さらに測定値を追加すると確信しています.
なぜ私がこれを経験するのかについてのアイデアはありますか?
リクエストに応じて、完全な文法のより「簡素化された」バージョン
ruby - PEG問題でBBcodeパーサーを作る
私は PEG (Ruby の Citrus 実装) で bbcode パーサーを作成しています。[b]sometext[anothertext[/b]
コードあり
問題はtext
、テキストに \r、\n、open_tag、または close_tag 以外のすべてを含めることができるという、言い方がわからないルールにあります。この実装では、例では [ と ] が除外されているために失敗します (それは間違っています)。
最後の質問は、\r、\n、または open_tag または close_tag の完全一致以外のすべてに一致するルールを実行する方法です。
別の PEG 実装の解決策がある場合は、それも提供してください。私は切り替えることができます:)
ruby - Treetop パーサー : 関数定義の構文 - n 個の引数
現在、いくつかの基本的な Ruby 文法を記述しようとしていますが、関数の定義に行き詰まっています。確かに、「n」引数の処理方法がわかりません。0 ~ 2 個の args を含む関数を処理するために使用するコードを次に示します。
「n」引数を処理するにはどうすればよいですか? それを行う再帰的な方法はありますか?
編集 :
引数が結果ツリーにある必要があるという事実を強調したかったのです。お気に入り :
そのため、たとえば function_definition ルールで行ったのと同じように、cstom SyntaxNode サブクラス宣言を行う必要があります。
ruby - ツリートップの最も単純なルールが機能しない
私は2つのルールしかないツリートップ文法を持っています:
単純な文字列(「A」と「5」)を解析しようとしています。「5」は、そのルールを最初に配置するとNumとして認識され、そのルールを2番目に配置するとnilを返します。同様に、「A」は、そのルールを最初に配置するとIDとして認識され、そのルールを2番目に配置するとnilを返します。これらの2つのルールがどのように重なっているのか理解できません。それは私を夢中にさせています!
ツリートップや正規表現について、足りないものや理解できないものはありますか?よろしくお願いします。
ruby - Treetop: 文字列リテラルを解析していますか?
だから、私はRubyを少し、TDDを少し、そしてTreetopを少し学ぼうとしています。
文字列リテラルを解析するための次の文法があります。
そして、次のテスト方法:
3 番目のテスト (バックスラッシュの付いたテスト) に合格しません (文字列が解析されません): なぜですか?
ありがとう!
treetop - Treetop(PEG)文法で使用される省略記号(空の文字列)は何ですか?
Treetopのウェブサイトは私が理解していない次の説明をします
省略記号空の文字列はどの位置でも一致し、入力を消費しません。単一のシンボルをシーケンスの一部として扱いたい場合、たとえば、代替ルールが共有コードを使用して処理される場合に役立ちます。
ルールalts(foo bar / baz''){def value elements.map {| e | e.text_value} end} end
シンボルをシーケンスの一部として扱うのに役立つのはいつですか?誰かがその意味のある例を提供できますか?
ruby - treetopを使用して空白とエスケープされた記号を含む解析ディレクトリパスを解析するには?
ディレクトリへのパスを含むいくつかの文字列を解析する必要があります。問題は、エスケープされた空白やその他のエスケープされた記号が含まれていることです。例えば:
の前に空白があることに注意してくださいP\&G/
。
これが私のツリートップ文法です(alpha_digit_specialには先頭に空白が含まれています)
nil
この文字列を解析した後に取得します。では、文字列にエスケープされた空白が含まれるようにルールを指定するにはどうすればよいでしょうか?