0

Douglas Crockford の JavaScript: The Good PartsのChapter 2 Grammarより

この章では、JavaScript の優れた部分の文法を紹介し、言語がどのように構造化されているかを簡単に概説します。鉄道図で文法を表現します。

これらの図を解釈するためのルールは単純です。

  1. 左端から始めて、右端まで線路をたどります。
  2. 進むにつれて、楕円形のリテラルと、長方形のルールまたは説明に遭遇します。
  3. トラックをたどって作成できるシーケンスはすべて合法です。
  4. トラックをたどって行うことができないシーケンスは合法ではありません。
  5. 両端に 1 つのバーがある鉄道図では、任意のトークンのペアの間に空白を挿入できます。両端に 2 本の棒がある鉄道図はそうではありません。

この章で紹介する良い部分の文法は、言語全体の文法よりもはるかに単純です。

SO でこの回答を見たことがありますが、これは基本的に本に記載されていることを繰り返しています。では、ここでトークンとは何を意味するのでしょうか?

4

1 に答える 1

1

トークンは、文法の基本的な原子単位です。典型的なプログラミング言語では、トークンには、代数演算子 ( +*)、ステートメントの区切り文字 ( ({;)、識別子、数値と文字列の値、予約語などが含まれます。

「トークン」の概念は、文法が記述され、解析される方法とある程度結びついています。一部の解析スキームには、トークン化の概念が含まれていません (PEG の packrat パーサー)。ただし、この場合、鉄道図の使用は、一連のトークンを備えた従来の BNF (または BNF のような) 文法を意味します。

編集— 実際、他の質問を見ると、そこでの議論は実際にはトークン文法自体 (JSON のトークン文法) に関するものです。そのためには、文字セットの要素を「トークン」と見なすことができると思います。いずれにせよ、そのような場合 (数字と文字列がどのように見えるかのルール)、これらの構造の途中にスペースを入れることはできないことは明らかです。つまり、232 3は同じではありません。

セミコロンの自動挿入に関する奇妙な状況を除けば、トークン間のスペースを許可しない JavaScript 文法の場所は思い浮かびません。

于 2013-07-22T17:50:35.447 に答える