代码拉取完成,页面将自动刷新
同步操作将从 zren/compiler-homework2 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#define KEY 6
char *keyword[KEY] = {"for", "if", "then", "else", "while", "do"};
char id[1024];
int num;
int token;
void lexical(FILE *fp) {
char x = getc(fp);
char temp;
FILE *f;
int i=0;
char *array=new char[20];
f=fp;
num = 0;
strcpy(id, "\0");
if(x>='a' && x<='z')
{
array[i]=x;
for(;i<5;)
{
temp=getc(f++);
i++;
array[i]=temp;
if(array=="for")
{token=1;strcpy(id, keyword[0]);}
else if(array=="if")
{token=2;strcpy(id, keyword[1]);}
else if(array=="then")
{token=3;strcpy(id, keyword[2]);}
else if(array=="else")
{token=4;strcpy(id, keyword[3]);}
else if(array=="while")
{token=5;strcpy(id, keyword[4]);}
else if(array=="do")
{token=6;strcpy(id, keyword[5]);}
else {token=10;strcpy(id, x;}
}
}
else if(x>='0' && x<='9') {token=11;num=x-48;}
else if(x=="+") {token=13;strcpy(id, x;}
else if(x=="-") {token=14;strcpy(id, x;}
else if(x=="*") {token=15;strcpy(id, x;}
else if(x=="/") {token=16;strcpy(id, x;}
else if(x==":") {token=17;strcpy(id, x;}
else if(x==":=") {token=18;strcpy(id, x;}
else if(x=="<") {token=20;strcpy(id, x;}
else if(x=="<>") {token=21;strcpy(id, x;}
else if(x=="<=") {token=22;strcpy(id, x;}
else if(x==">") {token=23;strcpy(id, x;}
else if(x==">=") {token=24;strcpy(id, x;}
else if(x=="=") {token=25;strcpy(id, x;}
else if(x==";") {token=26;strcpy(id, x;}
else if(x=="(") {token=27;strcpy(id, x;}
else if(x==")") {token=28;strcpy(id, x;}
else if(x=="#") {token=0;strcpy(id, x;}
fp=fp++;
//process x
//process each regex here
//store the result in global variables id, num, or token
//in case of backtrack, use
//ungetc(x, fp);
}
int main(int argc, const char *argv[])
{
if(argc < 2) {
printf("insufficient args\n");
return 1;
}
FILE *fp = fopen(argv[1], "r");
do {
lexical(fp);
switch(token) {
case 10: printf("(id, %s)\n", id); break;
case 11: printf("(num, %d)\n", num); break;
case -1: printf("error!\n"); break;
default: printf("(%d, %s)\n", token, id);
}
} while(token != 0);
fclose(fp);
return 0;
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。