(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 ;
- こうなります。つまり改行とかスペースはなくなり、とにかく単語の番号が並びます。
- 同じ単語には同じ番号が必ず割り当てられます。
こめんと欄
|