問題タブ [recursive-descent]
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.
c++ - ソートされていないスキーマのboost::Spirit Grammar
解析する必要のあるモデルのスキーマのセクションがあります。次のようになります。
プロパティは次のとおりです。
- 要素は順序付けられていないように見える場合があります。
- スキーマの一部であるすべての要素が表示される必要があり、他の要素は表示されない必要があります。
- 要素の合成された属性はすべて構造体に入ります。
- (オプション)スキーマは将来、タイプフィールド(つまり、タイプに基づいて異なるフィールド)に依存する可能性がありますが、現時点ではこれについては心配していません。
grammar - FIRST セットと FOLLOW セットを自動的に計算するための優れたツールは何ですか?
私は現在、LL(1) 形式に取り組めることを望んでいる BNF 文法で遊んでいる最中です。しかし、今日で 3 回目の文法の変更と新しい FIRST および FOLLOW セットの計算を手動で行ったばかりで、もううんざりしています。もっと良い方法があるはずです!
文法が与えられた場合、すべての非端末の最初のセットと次のセットを自動的に計算するツールを誰かが提案できますか?
parsing - Recursive Descent Parser を使用して文法を検証し、同時に解析ツリーを構築することは可能ですか?
再帰降下パーサーを使用してデータが文法に一致するかどうかを確認すると同時に、解析ツリーを生成することはできますか?
もしそうなら、再帰的に降下するときにツリーを構築するためにどのようなアプローチを使用しますか?
ありがとう、ボダ・シド。
注:私は解析が初めてです。(すでにSOについていくつかの質問をしましたが、私はそれで良くなっています。)
parsing - 再帰降下パーサー LL(1) の日付データ型の適切な文法
ユーザーに制限付きの DSL を提供するために、運用環境用のカスタム式パーサーとエバリュエーターを構築しています。DSL としてのパーサー自体は、単純である必要があります。パーサーは、動的な式の解析をサポートしておらず、パーサー ジェネレーター ツールも利用できないエキゾチックな言語で構築される予定です。
私の現在の決定は、LL(1) 文法を使用した再帰的降下法を採用することです。これにより、式を評価した経験のないプログラマーでも、コードがどのように機能するかをすぐに学ぶことができます。
小数、パーセンテージ、文字列、日付など、いくつかのデータ型で構成される混合式を処理する必要があります。また、dd/mm/yyyy 形式の日付は、一連の除算演算と混同しやすいです。
この問題の良い解決策はどこにありますか?
パーサーをシンプルに保つことを目的としており、日付に特別な記号を付けることを目的とした私自身の解決策は、アポストロフィとしましょう:
language-agnostic - EBNF から BNF への変換
コンピューター言語の授業から数年が経ち、BNF や EBNF の細かい点を忘れてしまい、教科書が手元にありません。具体的には、EBNF を BNF に変換する方法を忘れてしまいました。
私が少し覚えていることから、主なポイントの 1 つは改心することであることがわかります。
の中へ
でもそれ以外のルールは覚えていません。これをオンラインで調べようとしましたが、宿題の質問へのリンク、または中括弧で用語を変換することに関する小さなコメントしか見つかりません。翻訳を定義するルールの完全なリストが見つかりません。
ruby - Ruby のパーサー: スティッキー コメントと引用符の処理
Ruby で文法用の再帰降下パーサーを作成しようとしていますが、これは次の規則で定義されています。
- 入力は、 Stop-wordで始まる空白で区切られたカードで構成されます。ここで、空白は正規表現です
/[ \n\t]+/
- カードは、カード固有の順序/パターンを持つ、空白で区切られたキーワードまたは/および値で構成されている場合があります
- すべてのストップ ワードとキーワードは、大文字と小文字を区別しません。つまり、次のようになります。
/^[a-z]+[a-z0-9]*$/i
値は、二重引用符で囲まれた文字列にすることができます。これは、空白で他の単語と区切られていない場合があります。例:
/li>値はword
/^[a-z]+[a-z0-9]*$/
、integer、floatのいずれでもかまいません(例:-1.15
、 または1.0e+2
)単一行のコメントは で示され
/li>#
、他の単語と区切られていない場合があります。例:複数行のコメント
/li>/*
はandで示され*/
、他の単語と区切られていない場合があります。例:
ほとんどの単語は空白で区切られているため、しばらくの間、入力全体を分割して単語ごとに解析することを考えていました。コメントと引用に対処するために、私はやろうとしていました
ただし、この方法では、文字列 (および保持したい場合はコメント) の内容が変更されます。これらの厄介なコメントや引用にどのように対処しますか?
compiler-construction - ヘルプ...LL文法と再帰下降パーサー
私はANTRLを使用していますが、これは私の文法であり、エラーが発生します。
これはエラーです。「決定は、複数の選択肢を使用して「ELSE」などの入力と一致する可能性があります」。
どうすれば修正できますか?
java - Java でイプシロン (ε) を解析するための再帰降下解析を作成する
例えば、
EBNF
A ::= B c;
B ::= T1 | T2 | ε
T1 ::= a
T2 ::= b
Java でイプシロン (空の文字列のセット) を解析するパーサーの書き方は?
parsing - 再帰下降構文解析を使用したこの文法からの式の生成
簡単な文法があります。実際、私が使用している文法はもっと複雑ですが、これは私の質問を説明する最小のサブセットです。
Value
識別子、文字列、数字などに一致します。ルールは、Suffix
左再帰を排除するためにあります。これは、次のような式に一致します。
つまり、とのa
両方に行き、とに行くグラフ。これらの式の抽象構文ツリーを作成しようとしていますが、すべての演算子が各側で任意の数のオペランドを受け入れることができるため、問題が発生しています。式を抽出するロジックを複製する必要がないため、再帰下降構文解析メソッド内でASTを生成するためのロジックを維持したいと思います。私の現在の戦略は次のとおりです。b
(c -> (d) (e))
c
d
e
が表示されたら、
Value
それを出力にプッシュします。From
またはが表示された場合To
:セパレータを出力します。
次を取得し
Expr
ます。ノードを作成し
Link
ます。Link
セパレータが表示されるまで、出力からのオペランドの最初のセットをポップします。検出されたセパレータを消去します。
オペランドの2番目のセットを
Link
区切り記号までポップします。を出力にプッシュし
Link
ます。
手順2.3〜2.7に従わずにこれを実行すると、値と区切り文字のリストが表示されます。上で引用した式の場合a -> b (c -> (d) (e))
、出力は次のようになります。
To
ルールを適用すると、次のようになります。
そしてその後:
注意すべき重要なことsep_2
は、2番目の左側のオペランドを区切るために重要なが->
表示されないため、パーサーは式が実際に記述されたと信じていることです。
現在の戦略でこれを解決するには、隣接する式の間に区切り文字を作成する方法が必要ですが、現在の式が括弧で囲まれたFrom
または式である場合に限ります。To
それが可能であれば、私はそれを見ていません。答えは単純なはずです。ただし、これについてもっと良い方法がある場合は、お知らせください。
powershell - Powershellでファイルの名前を小文字に変更
Powershell 2.0を使用して、一連のファイルの名前を再帰的に変更しようとしています。ディレクトリ構造は次のようになります。
次のコマンドを使用しています。
ファイルの名前を変更しているようですが、サブディレクトリについて不平を言っています。
robocopyを使用してデータを毎月リロードしますが、ディレクトリは変更されないため、手動で名前を変更できます。get-children
サブディレクトリ(のような)をスキップする方法はありますfind Leaflets -type f ...
か?
ありがとう。
更新:問題は、すでにすべて小文字になっているファイルにあるようです。コマンドを次のように変更してみました:
しかし、Powershellif
は、コマンドレットや関数などではないと文句を言います。の出力をステートメントにパイプできますget-childitem
かif
?
更新2:これは機能します: