問題タブ [qi]
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.
xml - XML の EBNF を使用した XML トランスレータの実装
完全な EBNF 文法を含むW3C のXML 1.1仕様に基づいて、コンパイラ ジェネレータを使用して XML トランスレータを実装するというアイデアを考えています。
より正確には、このツールを学びたいので、Qi-YACCを使用する予定です。これは、コンパイラ-コンパイラを使用する最初の試みです。
私が実装しようとしている最初の種類の変換は、非常に簡単です: XML からS-EXPRsへ。その後、翻訳者を一般化する予定ですが、これは私の質問のポイントではありません。
この種のプロジェクトに何か大きな落とし穴があると思いますか? EBNF を使用して XML を翻訳するのは悪い考えだと読んだことがあります。なぜだろう。また、Qi 言語に既に XML パーサーがあったわけではないので、ここで車輪を再発明するつもりはまったくありません。
ccl - Qi の独自の型に関する問題
Clozure CL で動作する型宣言の例を取得しようと無駄に試みました。たとえば、次のようになります。
しかし、私が得る唯一の出力は次のとおりです。
Cclに問題があるようですが、正常に動作する可能性はありますか?
PS: 型チェックがオンになっています (tc +)
c++ - boost::spirit でスキッパーが機能しない
ブーストスピリットを使用して色を解析します。それは非常にうまく機能しましたが、イテレータの型を変更した後、スキッパーが機能しなくなりました。
ヘッダーは次のとおりです。
cppはこちら
そして呼び出し:
確かに、ほんの少しの間違いですが、私には見えません。ソースを長時間見すぎたのかもしれません... 間違いに気づきますか?
c++ - Boost Spirit を使用してトリミングされたテキストを抽出する方法は?
ブーストスピリットを使用して、括弧内にいくつかのデータが続く文字列を抽出したいと思います。関連する文字列は、左括弧からスペースで区切られます。残念ながら、文字列自体にスペースが含まれている可能性があります。末尾のスペースなしで文字列を返す簡潔なソリューションを探しています。
次のコードは、問題を示しています。
その出力は次のとおりです。
この単純な文法では、抽出された文字列の後に常にスペースが続きます (これは削除したいのですが)。
これはより大きな文法の一部にすぎないため、ソリューションは Spirit 内で機能するはずです。(したがって、解析後に抽出された文字列をトリミングするのはおそらく不器用です。)
前もって感謝します。
c++ - boost::spirit::qi を使用して SQL 型 where 条件を解析できません
私は非常に些細な質問をしているかもしれませんが、それを解読するために脳からブロックを取得していません. 以下に示すように、boost::spirit::qi を使用して SQL のような where 句を解析して、ペアのベクトルを生成しようとしています
次のスレッドを実行しましたが、まだ実行できません:-( Thread5 Thread4 Thread3 Thread2 Thread1
これを達成する方法を理解するのを手伝ってください...私は100%を完全に与えていなかったかもしれませんが、親切にしてください....
これが完全なコードです(私がやりたいとコメントした部分もあります)。最初のステップとして、ベクター内のすべてのトークンを取得できるかどうかを確認し、各ベクター要素を解析して std::pair の別のベクターを生成できるかどうかを確認しました
出力:
4つの条件があるため、4つを期待しています!!
よろしくお願いします、Vivek
うまくいくためのいくつかの例-coliruでライブ
c++ - 精霊気 : チャーのルール [5]
私は次の構造を持っています
融合構造体にします
私の文法は次のように実装されています:
残念ながら、それはコンパイルされません。今、私は char[5] の代わりに std::string を使用しています。問題はありません。Spirit に char[5] を読むように指示する方法を教えてください。
ありがとうございました
parsing - 精神: 途中ではなく、開始時にキャラクターを許可する
これまでのところ、これが私が持っているものです:
このパーサーは、テストの「適切な識別子」のリストに対して正常に機能します。
しかし、私は悪い識別子の 1 つに問題があります: foo$bar
。これは失敗するはずですが、成功しました!! また、sintetized 属性の値は です"foo"
。
のデバッグ出力は次のfoo$bar
とおりです。
私が望むのは、パーサーが解析時に失敗するが、解析時に失敗しfoo$bar
ないこと$foobar
です。
私は何が欠けていますか?