某些语言(如SQL)具有不区分大小写的关键字(和/或标识符)。使用TokenParsers
时,如何处理此不区分大小写?一个选项是生成关键字的所有可能的案例组合,但是如果有很多关键字(在我的情况下它以某种方式导致whitespace
中的堆栈溢出!)并且不会对任何标识符起作用,则执行得非常糟糕情况下。
[自我回答希望别人不会花一天时间在这上面。]
答案 0 :(得分:2)
这可以通过覆盖std::aligned_union
来完成(假设关键字以大写形式给出,与SQL一样正常):
static_assert(sizeof(F) <= sizeof(buffer));
static_assert(alignof(F) <= alignof(buffer));
// OK to proceed
new (&buffer) F(std::move(f));