BoomingTech/Piccolo

关于 parser 解析的 type 带有空格的问题

Opened this issue · 3 comments

在这里的代码:

Utils::replaceAll(m_type, " ", "");

强行把空格去掉会导致带有空格的类型会反射生成失败(例如 std::vector 类型,它生成的反射文件的 type 会去掉空格,导致codegen的时候的static_cast会出现类型unsignedchar,无法解析而失败)

或许可以考虑加在这里(codegen的时候去掉空格):

vector_define.set("vector_useful_name", array_useful_name);

例如:

Utils::replaceAll(array_useful_name, " ", "");
vector_define.set("vector_useful_name", array_useful_name);

举个错误解析的例子,为什么会带空格

举个错误解析的例子,为什么会带空格

就是上面说的,std::vector<unsigned char>,因为对 vector 类型做了特殊处理,在parse field的阶段就去掉空格会导致codegen阶段的类型生成失去空格(即type从unsigned char变为了unsignedchar),从而解析失败。因此我想说可以考虑在codegen阶段去掉空格,改动方法如上。

可以