問題タブ [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 投票する
6 に答える
11436 参照

objective-c - Objective-Cで予約されているキーワード?

昨日のCocoaHeadsÖresund会議で、peylowは素晴らしいObjCクイズを作成しました。競争は激しく、最後の質問が評価されるときに3人が同じスコアを残されました:Objective-CはCにいくつの予約キーワードを追加しますか?

いくつかの活発な議論が続いた。などはすべてキーワードではなくプリプロセッサディレクティブであること@interfaceに全員が同意しましたが、次のようなものはどうでしょうか。キーワードかもしれませんが、予約キーワードではありません。たとえば、以下はエラーや警告なしでコンパイルされます。@implementationin

ObjCはCに予約キーワードを追加せず、誰かが一見十分に稼いだ本を獲得したと結論付けました。

しかし、今日、私は次のようなことを試して、コンパイラに対してより体系的な悪用を試みました。

これは正常にコンパイルされ、同じコードがandの代わりにselfを置き換えて機能BOOL, bycopy, inout, oneway, byref, SEL,IMPます。

変数名として使用idすると、最初と最後の行がコンパイルされますが、2番目の行はコンパイルされません。同じことが、、Protocolおよびにも当てはまりClassます。

を使用するsuperと、最初の行はコンパイルされますが、2番目と3番目はコンパイルされません。

、、、YESおよびを使用するNOと、3行すべてがコンパイルに失敗します。これは、NULLおそらく、、、、およびとして定義されているためです。truefalsenil

これの多くはgccが混乱しているように見えますが、Objective-Cで予約されているキーワードとそうでないキーワードが反映されているかどうかはわかりません。たとえば、selfintの名前として使用しても問題ないのに、なぜ問題がないのsuperでしょうか。

最初の割り当てが常に機能するという事実(YES、NO、およびNULLを除く)は、候補のいずれもCにない技術的に予約されたキーワードではないという考えをサポートしているようです。

誰かがこの厄介な問題の権威ある説明を私たちに教えてもらえますか?

何人かの人々の名誉が危機に瀕しています。

編集:ニコライ・ルーエが指摘したように、先に進むには「キーワード」の明確な定義が必要です。ニコはウィキペディアの記事を引用して、キーワードは「特定の意味を持つ単語または識別子」であると述べています。

同じ記事からこの定義を使用するのは合理的だと思います。

CやC++などの同様の環境などの多くの言語では、キーワードは構文形式を識別する予約語です。if、then、elseなどの制御フロー構造で使用される単語はキーワードです。これらの言語では、キーワードを変数または関数の名前として使用することもできません。

さらに、記事が述べているように:

通常、プログラマーが変数名または関数名にキーワードを使用しようとすると、コンパイルエラーがトリガーされます。

この意味で、言語の正式な仕様で事前定義されており、ユーザー定義名として使用できない予約キーワードはありますか?

0 投票する
4 に答える
3393 参照

python - Pyparsing でのキーワード マッチング: 貪欲でないトークンの丸呑み

パイソンニスタ:

Pyparsing を使用して次の文字列を解析するとします。

was はABC_123識別子です。SPEED_Xはパラメータで、123は値です。Pyparsing を使用して次の BNF を考えました。

途中からアンダースコアを削除すると(そしてEntryそれに応じて定義を調整すると)、正しく解析されます。

_このパーサーを少し怠惰にして、キーワードに一致するまで待つにはどうすればよいですか (文字列全体を識別子として丸呑みし、存在しない を待つのではなく.

ありがとうございました。

[注: これは私の質問を完全に書き直したものです。私は本当の問題が何であるかを理解していませんでした]

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

ruby - RubyでCLIを実装するのに役立つライブラリ?

RubyでCLIタイプのアプリケーションを実装しようとしています。

CLIは、定義したい文法を使用してコマンドを受け入れる必要があります。文法(RParsec)を実装および解析する方法についていくつかの手がかりを見つけましたが、それをコードに接続してコマンドを実際に実行する方法がわかりません。

コマンドは次のようになります(非常に大まかな考えです。大学の語学コース以外の文法の経験があります)。

"プロパティfooが'abc'に等しい50個のウィジェットを作成します""プロパティfooが'abc'に等しいすべてのウィジェットを更新して、プロパティbazが'xyz'になるようにします"

誰かが私を正しい方向に向けてくれたら幸いです。ありがとう。

0 投票する
4 に答える
1995 参照

grammar - 文法構文と言語学

私は本当に機械で翻訳でき、厳密にルールベース(統計的なものではない)の方法で英語の文構造の説明が必要です。文脈自由文法である必要はありませんが、それが望ましいでしょう(それを完全に説明することはできません)。私が見つけた最高のものはBNF用でしたが、それは本当に基本的でした. あいまいなところを除いて、例外のないものが必要です。リンクはありますか?

0 投票する
5 に答える
10961 参照

grammar - cssバックグラウンドURL( "....")で使用する必要がある引用符のタイプはどれですか?シングル、ダブル、または引用符は必要ありませんか?

これ

これ

またはこれ

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

php - この文法はLR(1)ではありませんか?

私はPHP用のパーサジェネレータに取り組んでいます。現在、正規LR(1)パーサーを実装しようとしていますが、次の文法でreduce-reduce競合が出力されます。この文法はLR(1)ではありませんか?または、アルゴリズムを再確認する必要がありますか?

バイソン(のような)表記の文法:

編集:

計算されたテーブル:

と競合:

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

computer-science - 計算モデルについて学ぶための良いリソースはありますか?

好奇心から、私が使用しているシステムがどの計算モデルと機能的に同等であるかを特定し、その同等性を証明しようとしています。この問題に時間を費やすほど、システムがチューリングと同等ではないことが疑われます。チューリング マシンと再帰的に列挙可能な言語についてはよく理解していますが、機能の少ないオートマトン (プッシュダウン オートマトンなど) についてはよく知らないので、どのように進めればよいかわかりません。

まず、さまざまな計算モデルについて学習するための優れたリソースを推奨できる人はいますか? 文法、言語、オートマトンに興味があり、それらすべての同等性と相違点を証明する方法に興味があります。理想的には、リソースは各モデルのすべての要素を詳細に分析し、それらを比較します。

第二に、システムをこれらの計算モデルのいずれかに当てはめようとするときに使用すべき一般的なアプローチまたはフレームワークはありますか?

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

parsing - LALR(1)関数のパラメーターの空のリスト

単純なLALR(1)文法がありますが、問題が発生しています。

ドットはルールの終わりを示し、角かっこの間の端子には結合性が割り当てられています。ASSIGNは右結合、COMMAは左結合です。

しかし、レモンは、「empty_stmt_list::=」というルールを減らすことはできないと言っています。開始シンボルに接続されていないためです。きっと:-)

「invoke」の解析の競合もあります。empty_stmt_listが実際にステートメントの空のリストである場合、RPARENとCOMMAのどちらかを決定することはできません。

私が達成しようとしているのは、(void)パラメーターを持たない関数呼び出しを解析できることです。

他のすべては期待どおりに機能します。

ありがとう

編集:元の投稿を編集し、削除された文法全体を投稿しました。

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

parsing - Bisonにreduce-reduce競合も期待していることをどのように伝えることができますか?

私のC#風のおもちゃの文法には、最初のreduce-reduceの競合があります。私は私をとても誇りに思っています。

しかし、それは私には大丈夫のようです(私はその機会にGLRパーサーに切り替えました)。問題は、%expectディレクティブがシフト/リデュースの競合についてバイソンをシャットダウンできることは知っていますが、リデュース/リデュースの競合に相当するものが見つからないことです。では、3つのシフト/リデュースと2つのリデュース/リデュースについて沈黙させるには何を使用すればよいですか?