問題タブ [grammar]

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.

0 投票する
8 に答える
11043 参照

ruby - 学習ツリートップ

Ruby の Treetop 文法ジェネレーターを独学で学ぼうとしています。私は、ドキュメントが「最高」のものに対してひどくまばらであるだけでなく、私が望んでいたほど直感的に機能していないように見えることを発見しています.

大まかに言えば、オンサイトのドキュメントやビデオよりも優れたチュートリアルがあれば、それがあれば本当にうれしいです。

より低いレベルでは、これは私がまったく働けない文法です:

それを読み込んで、非常に単純なテスト オブジェクトでいくつかのアサーションを実行すると、次のことがわかります。

正常に動作しますが、

エラーが発生します: NoMethodError: プライベート メソッド `eval' が呼び出されました #

説明で整数と浮動小数点数を逆にすると、整数と浮動小数点数の両方でこのエラーが発生します。これは限られた先読みに関連している可能性があると思いますが、「または」コンテキストで評価するという考えをカバーする情報さえ、どのドキュメントにも見つかりません

役立つかもしれないもう少しの情報。これら両方の parse() ブロックの pp 情報は次のとおりです。

フロート:

整数...整数規則に従うように定義されているように見えますが、 eval() メソッドをキャッチしていないことに注意してください。

アップデート:

私は特定の問題を解決しましたが、その理由はわかりません:

これは、存在するドキュメントでは意味がありませんが、余分な括弧を削除するだけで、Integer1 クラスと Integer0 クラスが一致しました。Integer1 は明らかに eval() メソッドを保持するクラスです。なぜそうなのか、私にはわかりません。

私はまだツリートップについてのより多くの情報を探しています.

0 投票する
3 に答える
4475 参照

html - ホワイトリストに基づく (X)HTML 用の XSS フィルターの作成

CppCMS用に C++ でシンプルで効率的な XSS フィルターを実装する必要があります。PHP は C++ を使用した高性能なフレームワークであるため、既存の PHP で作成された高品質なフィルターは使用できません。

基本的な考え方は、HTML タグの while リストとこれらのタグのオプションのホワイト リストを持つフィルタを提供することです。例えば。典型的な HTML 入力は、、、 <b>タグ<i>、および を<a>含むタグで構成できますhref。しかし、許可された単純なリンクにも XSS が含まれている可能性があるため、単純な実装では十分ではありません。

そこには他にも多くの例があります。そのため、href/src などのタグのプレフィックスのホワイト リストを作成する可能性についても検討しました。(https?|ftp)://

質問:

  • これらの仮定は、ほとんどの目的に対して十分に適切ですか? タグのオプションを指定せずstyle、プレフィックスのホワイトリストを使用して src/href をチェックすると、XSS の問題が解決するということですか? この方法で修正できない問題はありますか?
  • HTML/XHTML の正式な文法に関する適切なリファレンスはありますか?<script>
0 投票する
3 に答える
2023 参照

parsing - 具体的および抽象的な構文ツリーの標準形式

コードの分析と操作を行う趣味のプロジェクトのアイデアがあります。このプロジェクトでは、特定のソース ファイルの具体的な構文ツリーと抽象的な構文ツリーの両方が必要になります。さらに、2 つのツリー間の双方向参照が役立ちます。文法を書き写して独自のレクサーとパーサーを構築する作業は避けたいと思います。

具体的または抽象的な構文ツリーを記述するための標準形式はありますか? 広く使用されているツール チェーンは、これらの形式への出力をサポートしていますか?

特定のターゲット プログラミング言語を念頭に置いているわけではありません。プロトタイプには一般的なものを使用できますが、Python、C#、Javascript、または C/C++ など、私がよく知っているものを使用したいと思います。

ツールまたはライブラリを介してソース ファイルを実行し、両方のツリーを取得する機能が必要です。理想的な世界では、このツールをユーザーが編集しているコードで実行し、エラーを許容することが実用的です。繰り返しますが、私は単にプロトタイプを開発しようとしているだけなので、これらの要件はかなり緩いです。

ありがとう!

0 投票する
3 に答える
944 参照

grammar - BNF文法マッチング

私の先生は私に2つのbnf文法を与えました:

そしてそれらと一致する4つの文字列:

  • dffd
  • dddefddfe
  • dedf
  • 献身

私はそれらのうちの2つを理解しましたが、他の2つは私を困惑させました。誰かに答えてもらいたくないのですが、どこが間違っているのか、誰かにヒントを教えていただければ幸いです。

0 投票する
9 に答える
8740 参照

compiler-construction - 形式文法から文を生成するにはどうすればよいですか?

文法から文を生成する一般的な方法は何ですか?

パーサーとは正反対のアルゴリズムが必要です。つまり、形式的な文脈自由文法 (たとえば LL) が与えられた場合、その文法に準拠する任意の文を生成したいと考えています。ここで文とは、有効なテキスト本体を意味するために使用しているため、実際にはプログラム全体である可能性があります (意味をなさない場合でも、構文的に正しい限り)。

文法の例:

生成されたプログラムの例:

0 投票する
2 に答える
2722 参照

parsing - 算術式の文法

算術式のパーサーを作成するタスクが割り当てられました(括弧と単項演算子を使用)。したがって、この文法が正しいかどうかを知りたいのですが、それはLL(1)形式であり、このための解析テーブルの作成に実際の問題があります。


優先順位(高から低)

二項演算子の結合性


0 投票する
1 に答える
4459 参照

parsing - 算術式の First & Follow セット

この文法のために作成した FIRST と FOLLOW のセットが正しいかどうかを知りたい


0 投票する
3 に答える
12041 参照

ruby - Ruby文法

BNF形式のRuby文法を探しています。公式版はありますか?