main.c
来自「编译原理(龙书)P3.1用C语言编写的图3-10中记号的词法分析器。」· C语言 代码 · 共 47 行
C
47 行
#include <stdio.h>
#define BUFFERLEN 3
typedef struct {
char *lexeme_beginning;
char *forward;
} CURSOR;
char BUFFER[2][BUFFERLEN+1];
int main(int argc,char* argv[])
{
CURSOR cursor;
int nread;
FILE *pfil= fopen(argv[1],"r");
BUFFER[0][BUFFERLEN]=EOF;
BUFFER[1][BUFFERLEN]=EOF;
cursor.lexeme_beginning=&BUFFER[0][0];
cursor.forward=&BUFFER[0][0];
if(pfil) {
nread=fread(&BUFFER[0][0],sizeof(char),BUFFERLEN,pfil);
while(1) {
if(*cursor.forward==EOF)return 0; //词法分析器的位置
cursor.forward += 1;
if(*cursor.forward==EOF) {
if(cursor.forward==&BUFFER[0][BUFFERLEN]) {
nread=fread(&BUFFER[1][0],sizeof(char),BUFFERLEN,pfil);
if(nread<BUFFERLEN)BUFFER[1][nread]=EOF; // 碰巧
cursor.forward += 1;
}
else if(cursor.forward==&BUFFER[1][BUFFERLEN]) {
nread=fread(&BUFFER[0][0],sizeof(char),BUFFERLEN,pfil);
if(nread<BUFFERLEN)BUFFER[0][nread]=EOF; // 碰巧
cursor.forward = &BUFFER[0][0];
}
else
; // 什么也不做,让词法分析器接收到EOF词素
}
}
}
fclose(pfil);
return 0;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?