- 添加 .gitignore 文件,忽略编译器生成的二进制文件 - 重构 lexer.c 文件,改进了关键字处理和字符串处理 - 更新前端的前端、解析器和 AST 相关文件,以适应新的词法分析器 - 优化了 token 相关的定义和函数,引入了新的 token 类型
37 lines
1.1 KiB
C
37 lines
1.1 KiB
C
#include "../parser.h"
|
|
#include "../ast/ast.h"
|
|
#include "../symtab/symtab.h"
|
|
#include <stdio.h>
|
|
|
|
// gcc -g ../parser.c ../../lexer/lexer.c ../ast/ast.c ../ast/block.c ../ast/decl.c ../ast/expr.c ../ast/func.c ../ast/program.c ../ast/stmt.c ../ast/term.c ../symtab/hashmap.c ../symtab/scope.c ../symtab/symtab.c test_parser.c -o test_parser
|
|
// gcc -g test_parser.c -L../.. -lfrontend -o test_parser
|
|
int main(int argc, char** argv) {
|
|
init_lib_core();
|
|
const char* file_name = "test_file.c";
|
|
if (argc == 2) {
|
|
file_name = argv[1];
|
|
}
|
|
FILE* fp = fopen(file_name, "r");
|
|
if (fp == NULL) {
|
|
perror("open file failed");
|
|
return 1;
|
|
}
|
|
printf("open file success\n");
|
|
|
|
lexer_t lexer;
|
|
strpool_t strpool;
|
|
init_strpool(&strpool);
|
|
init_lexer(&lexer, file_name, fp, (lexer_sread_fn)fread_s, &strpool);
|
|
|
|
struct SymbolTable symtab;
|
|
init_symtab(&symtab);
|
|
|
|
struct parser parser;
|
|
init_parser(&parser, &lexer, &symtab);
|
|
parse_prog(&parser);
|
|
|
|
printf("parse_end\n");
|
|
pnt_ast(parser.root, 0);
|
|
|
|
return 0;
|
|
} |