• 締切済み

最近勉強していて、pythonという言語はインデントを元にブロック構造

最近勉強していて、pythonという言語はインデントを元にブロック構造を認識することができるらしいと知りました。 そこで疑問に思ったのですが、コンパイラは「字句解析」や「構文解析」といったステップがありますが、どのステップでブロック構造を認識できるのでしょうか。 予想では「構文解析」かと思ったのですが、正規表現では表せられないと思いました。 正規表現を使っていないだけなのかもしれませんが・・・ もしどのステップで認識するのか、分かる方がいらっしゃいましたら教えていただけると助かります。

みんなの回答

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.1

字句解析でインデント段数を認識して、構文解析でブロック構造を認識すると思います。 >予想では「構文解析」かと思ったのですが、正規表現では表せられないと思いました。 正規表現は構文解析と特に関係ありません。字句解析とは関係あります。

mentalplus
質問者

補足

回答ありがとうございます。 >>字句解析でインデント段数を認識して、構文解析でブロック構造を認識する ということは、 if(---)   x=0; という入力に対して、字句解析で 0個 "if" "(" "---" ")" 1個 "x" "=" "0" ";" のようにしておきそれを元に構文解析でブロックを認識するということですか? 正規表現ではありませんでした。 term → team '+' team みたいなやつです。 (左再帰なのはスルーしてください)