📄 a.cpp
字号:
#include "lexical_analyzer.h"
#include "init.h"
void init_filepointer(char *filename,FILE *&file,char *openmode);
void generate_output(to_parser &result, FILE *&write_file);
FILE *read_file;
void main()
{
init(); //init the symbol table
FILE *write_file;
init_filepointer("input.txt",read_file,"r"); //init the two file pointers
init_filepointer("output.txt",write_file,"w");
to_parser result;
while(1)
{
result=lexan(read_file); //lexical analyzer
generate_output(result,write_file);
}
}
//usage: init file pointer
void init_filepointer(char *filename,FILE *&file,char *openmode)
{
if ((file = fopen(filename,openmode)) == NULL)
{
fprintf(stderr, "Cannot open \n" );
exit(1);
}
}
void generate_output(to_parser &result, FILE *&write_file)
{
switch(result.token)
{
case DONE:{ fclose(read_file);
fclose(write_file);
exit(0);
} break;
case 5:
case 4:
case 2:
case 3:
case 6:
case 1: {
fprintf(write_file,"%s %s ",get_reserved(result.token),
result.attr);
//print keywords
fprintf(write_file,"%d %d \n", lineno,result.position);
printf("%s %s " ,get_reserved(result.token),result.attr);
printf("%d ",result.line_no);
printf("%d\n",result.position); //print keywords
}break;
case OPERATOR:{
fprintf(write_file,"OPERATOR %s ",result.attr);
fprintf(write_file,"%d %d\n",result.line_no,result.position);
printf("OPERATOR %s ",result.attr);
printf("%d ",result.line_no);
printf("%d\n",result.position); //print keywords
}break;
case DELIMITER:{
fprintf(write_file,"DELIMITER %c ",result.attr);
fprintf(write_file,"%d %d\n",result.line_no,result.position);
printf("DELIMITER %c ",result.attr);
printf("%d %d\n",lineno,result.position);
}break;
case NUM: {
fprintf(write_file,"NUM %ld ",result.attr);
fprintf(write_file,"%d %d\n",lineno,result.position); //写文件
printf("NUM %ld ",result.attr);
printf("%d %d\n",lineno,result.position); //标准输出,
}break;
case ID: {
fprintf(write_file,"ID %s ",result.attr);
fprintf(write_file,"%d %d\n",lineno,result.position); //print id
printf("ID %s ",result.attr);
printf("%d %d\n",lineno,result.position);
}break;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -