text0002の補足説明#1

  • (by K, 2019.02.27)

(0)

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

  • lexer()は、プログラムのソースコードを単語(トークン)に切り分けています。
  • でもそんなことを言われてもピンとこないかもしれません。
  • 以下の入力を与えたらどうなるかやってみましょう。
    abc = 123;
    def = 456;
    ans = abc + def;
    ans = ans - 321;
    print ans;
  • これをloadText()で読み込んで、lexer()で切り分けた後に、
    for (i = 0; strlen(t[i]) > 0; i++)
        printf("%s\n", t[i]);
  • というプログラムで表示させたら、何が出力されるかを示します。
    abc
    =
    123
    ;
    def
    =
    456
    ;
    ans
    =
    abc
    +
    def
    ;
    ans
    =
    ans
    -
    321
    ;
    print
    ans
    ;
  • こうなります。つまり改行とかスペースはなくなり、とにかく単語が並びます。そして末尾には長さ0の文字列が置かれます。

こめんと欄


コメントお名前NameLink

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019-02-28 (木) 00:51:27 (1878d)