a21_txt01_2b
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
* [[a21_txt01_2]]の補足説明#2
-(by [[K]], 2021.02.05)
** (0)
-これは[[「川合のプログラミング言語自作のためのテキスト第...
** (1) getTc()をmallocを使って書き直してみると・・・
-以下のgetTc()では、変数tcBuf[]や変数tcbがいまいちピンと...
-だからもっと普通の書き方をしたらどうなるかを紹介したいと...
-書き換え前:
int getTc(String s, int len) // トークン番号を得るための...
{
int i;
for (i = 0; i < tcs; i++) { // 登録済みの中から探す.
if (len == tl[i] && strncmp(s, ts[i], len) == 0)
break;
}
if (i == tcs) {
if (tcs >= MAX_TC) {
printf("too many tokens\n");
exit(1);
}
strncpy(&tcBuf[tcb], s, len); // 見つからなかっ...
tcBuf[tcb + len] = 0; // 終端文字コード.
ts[i] = &tcBuf[tcb];
tl[i] = len;
tcb += len + 1;
tcs++;
}
return i;
}
-書き換え後:
int getTc(String s, int len) // トークン番号を得るための...
{
int i;
for (i = 0; i < tcs; i++) { // 登録済みの中から探す.
if (len == tl[i] && strncmp(s, ts[i], len) == 0)
break;
}
if (i == tcs) {
if (tcs >= MAX_TC) {
printf("too many tokens\n");
exit(1);
}
ts[j] = malloc(len + 1);
strncpy(ts[j], s, len); // 見つからなかったので...
ts[j][len] = 0; // 終端文字コード.
tl[i] = len;
tcs++;
}
return i;
}
-これで分かるように書き換え前のgetTc()におけるtcBuf[]とtc...
* こめんと欄
#comment
終了行:
* [[a21_txt01_2]]の補足説明#2
-(by [[K]], 2021.02.05)
** (0)
-これは[[「川合のプログラミング言語自作のためのテキスト第...
** (1) getTc()をmallocを使って書き直してみると・・・
-以下のgetTc()では、変数tcBuf[]や変数tcbがいまいちピンと...
-だからもっと普通の書き方をしたらどうなるかを紹介したいと...
-書き換え前:
int getTc(String s, int len) // トークン番号を得るための...
{
int i;
for (i = 0; i < tcs; i++) { // 登録済みの中から探す.
if (len == tl[i] && strncmp(s, ts[i], len) == 0)
break;
}
if (i == tcs) {
if (tcs >= MAX_TC) {
printf("too many tokens\n");
exit(1);
}
strncpy(&tcBuf[tcb], s, len); // 見つからなかっ...
tcBuf[tcb + len] = 0; // 終端文字コード.
ts[i] = &tcBuf[tcb];
tl[i] = len;
tcb += len + 1;
tcs++;
}
return i;
}
-書き換え後:
int getTc(String s, int len) // トークン番号を得るための...
{
int i;
for (i = 0; i < tcs; i++) { // 登録済みの中から探す.
if (len == tl[i] && strncmp(s, ts[i], len) == 0)
break;
}
if (i == tcs) {
if (tcs >= MAX_TC) {
printf("too many tokens\n");
exit(1);
}
ts[j] = malloc(len + 1);
strncpy(ts[j], s, len); // 見つからなかったので...
ts[j][len] = 0; // 終端文字コード.
tl[i] = len;
tcs++;
}
return i;
}
-これで分かるように書き換え前のgetTc()におけるtcBuf[]とtc...
* こめんと欄
#comment
ページ名: