Watch Star Fork

RonxBulld / ftrpcC++GPL-3.0

加入码云
与超过 200 万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
这是一个简单的异步RPC框架,基于JSON进行传输。程序只进行打/解包参数工作,不涉及具体通信方式,socket、websocket都可以使用。目前作者使用此项目生成 typescript 前端和 C++ 后端,更多语言将被支持。 https://gitee.com/RonxBulld/ftrpc/wikis
一键复制 编辑 原始数据 按行查看 历史
//
// Created by Rexfield on 2018/4/27.
//
#ifndef FTRPC_PARSER_H
#define FTRPC_PARSER_H
#include <memory>
#include "lex.h"
#include "symman.h"
#include "ast_tree.h"
class parse
{
private:
bool noPrint = false;
void reportError(const char *fmt, ...);
std::unique_ptr<RootNode> parseRoot();
std::unique_ptr<ModuleNode> parseModule();
std::unique_ptr<ApiNode> parseApi();
std::unique_ptr<ParamNode> parseParam();
std::unique_ptr<TypeNode> parseType();
std::unique_ptr<StructNode> parseStruct();
public:
lex *lexer = nullptr;
TokenManage tokenManage {
#define KEYWD(K) {#K, TOKEN_##K},
#define TYPE(T) {#T, TOKEN_##T},
#include "keywords.h"
};
TypeManage typeManage {
#define KEYWD(K)
#define TYPE(T) {TY_##T, TOKEN_##T},
#include "keywords.h"
};
explicit parse(const char *src);
std::unique_ptr<RootNode> document;
bool work();
};
#endif //FTRPC_PARSER_H

评论 ( 0 )

你可以在登录后,发表评论

9_float_left_people 9_float_left_close