川合のプログラミング言語自作のためのテキスト第三版#4

(9) TL-4

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>

typedef unsigned char *String;	// こう書くと String は unsigned char * の代用になる.

int loadText(String path, String t, int siz) // TL-1のとは違います(改造).
{
    FILE *fp;
    unsigned char s[1000];
    int i = 0;
    if (path[0] == 0x22) { i = 1; } // ダブルフォールトがあればはずす.
    for (; path[i] >= ' ' && path[i] != 0x22; i++) {  // ファイル名の末尾についているゴミをとってあげる.
        s[i] = path[i];
    }
    s[i] = 0;
    fp = fopen(s, "rt"); // テキストモードでファイルを開く.
    if (fp == 0) {  // ファイルを開けなかった.
        printf("fopen error : %s\n", path);
        return 1;
    }
    i = fread(t, 1, siz - 1, fp);
    fclose(fp);
    t[i] = 0; // 終端マークを書いておく.
    return 0;
}

int isAlphabet(unsigned char c) → TL-2と同じなので省略

int lexer(String s, String b, String t[]) → TL-2と同じなので省略

#define MAX_TC  255 // トークンコードの最大値.
String ts[MAX_TC + 1]; // トークンの内容(文字列)を記憶.
unsigned char tcBuf[10000];
int tcs = 0, tcb = 0;

int getTc(String s) → TL-2と同じなので省略

次回に続く

こめんと欄


コメントお名前NameLink

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