a21_txt01_2の補足説明#1

  • (by K, 2021.01.21)

(0)

(1) lexer()は結局何をしているのか?

  • lexer()は、プログラムのソースコードを単語(トークン)に切り分けています。
  • でもそんなことを言われてもピンとこないかもしれません。
  • 以下の入力を与えたらどうなるかやってみましょう。
    abc = 123;
    def = 456;
    ans = abc + def;
    ans = ans - 321;
    print ans;
  • これをloadText()で読み込んで、lexer()で切り分けた後に、
    for (i = 0; i < pc1; i++) {
        printf("%d %s\n", tc[i], ts[tc[i]]);
    }
  • というプログラムで表示させたら、何が出力されるかを示します。
    0 abc
    1 =
    2 123
    3 ;
    4 def
    1 =
    5 456
    3 ;
    6 ans
    1 =
    0 abc
    7 +
    4 def
    3 ;
    6 ans
    1 =
    6 ans
    8 -
    9 321
    3 ;
    10 print
    6 ans
    3 ;
  • こうなります。つまり改行とかスペースはなくなり、とにかく単語の番号が並びます。
  • 同じ単語には同じ番号が必ず割り当てられます。

こめんと欄


コメントお名前NameLink

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2021-03-01 (月) 10:04:25 (6d)