* [[a21_txt01_2]]の補足説明#1
-(by [[K]], 2021.01.21)
** (0)
-これは[[「川合のプログラミング言語自作のためのテキスト第三版#2」>a21_txt01_2]]に対する補足説明のページです。
** (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 ;
-こうなります。つまり改行とかスペースはなくなり、とにかく単語が並びます。


* こめんと欄
#comment

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS