2017-10-20 3 views
0

Pythonはブロックを示すために空白を使用しています。んECMAScriptのは、どんなルールがある

我々はその目的のために中括弧を使用するJavaScriptでは
for x in range(0, 50): 
    print x 

:私は「

for (x in range(0, 50)) { print(x) } 

プログラムを解析してASTを作成するときに、空白がEcmaScriptで何らかの意味を持つのではないかと疑問に思っていますか?

私はTypeScriptコンパイラのソースを見てきましたが、ソースコードを解析するときに空白を無視しているようです。

+3

*自動セミコロン挿入は、*私はそれを考えることができる唯一の例では、ホワイトスペースを作るているJSのいずれかの意味があります。https://stackoverflow.com/q/2846283/4879 – pawel

+0

@pawelを、私が見つけました仕様に関連する部分。ラインターミネータだけが重要です。自分の答えを加えました。 –

+1

もちろん、空白は重要です:それはトークンを区切ります!改行と字下げについてのみ話していますか? – Bergi

答えて

1

@Bergiが指摘したように、空白は字句解析中に重要であり、スキャナは特定のトークンがいつ終了するかを知ることができます。たとえば、これはnewObjectnew Objectを区別できるものです。空白を含まないプロダクションにとっては重要です。たとえば、スペースはIdentifierPartから導出できないため、Identifier tokenの末尾に印を付けます。空白は、最も簡単な1 InputElementDivで始まる、すべての目標シンボルのための独立した生産のように定義されます。

InputElementDiv:: 
    WhiteSpace 

構文解析中のみラインターミネータは自動セミコロン挿入プロセスのために重要です。残りの空白は関係ありません。ここで引用from the specれる:また

、ラインターミネータは、トークンであると考えられていないが、また は、入力要素のストリームの一部になると 自動セミコロン挿入(11.9)のプロセスを導きます。単純な空白と の1行のコメントは破棄され、構文文法の入力要素の ストリームには表示されません。

関連する問題