42 lines
873 B
C++
42 lines
873 B
C++
//
|
|
// Created by kagura on 4/24/24.
|
|
//
|
|
|
|
#ifndef INC_1_PARSER_H
|
|
#define INC_1_PARSER_H
|
|
|
|
#include <iostream>
|
|
#include <fstream>
|
|
#include <format>
|
|
|
|
#include "Classifier.h"
|
|
|
|
using namespace std;
|
|
class Parser {
|
|
private:
|
|
fstream file;
|
|
Classifier classifier;
|
|
string result;
|
|
public:
|
|
// 状态机的状态
|
|
enum State{
|
|
VOID, // 初始状态
|
|
INTEGER, // 整数
|
|
SEMICOLON, // 多个分号可以合并
|
|
NAME, // 名称
|
|
COMMENT_LINE, // 单行注释
|
|
COMMENT_BLOCK, // 多行注释
|
|
};
|
|
|
|
State state = VOID;
|
|
State last_state = VOID;
|
|
|
|
explicit Parser(const char* filename);
|
|
~Parser() = default;
|
|
void parse();
|
|
void print_result();
|
|
void append_result(const string &name);
|
|
};
|
|
|
|
|
|
#endif //INC_1_PARSER_H
|