Lua 令牌解析 |
|
这里没有提供任何解决方案,因为整个令牌解析概念目前还处于非常实验性的阶段。如果您想为这些问题提供解决方案,请创建您自己的页面,并从这里链接。请随时将您自己的使用案例添加到此列表中。
枚举对于将值分组在一起很有用。枚举可以在 Lua 中通过以下方式非常有效地完成
local SHAPE_SQUARE, SHAPE_CIRCLE, SHAPE_STAR = 0, 1, 2 -- etc. foo(SHAPE_STAR) -- usage
问题
概念:Enum 关键字和仅在编译时存在的数值表。
enum ShapeType { SQUARE, CIRCLE, STAR, NUM_TYPES } print(ShapeType.CIRCLE) -- usage
ShapeType.LINE
)。
C 函数可以注册到 Lua(int MyLuaFunc(lua_State*)
)。此注册涉及将函数指针和字符串函数名称传递给 Lua(它会复制字符串)。要调用函数,您需要使用函数字符串名称进行全局查找,并调用返回的对象。更具描述性的:[2].
问题
概念:在 Lua 编译时,可以将导出函数列表(类似于 C 中的链接库)传递给解析器。当我们拦截对命名函数的调用时,我们可以插入函数指针或函数枚举,以便在运行时调用函数。
备注
可以说 Lua 不需要 SwitchStatement,但它可能是对 ltokens 的一个有趣的测试。例如(您可以随意更改语法)
switch (value) do case 1 do print('one') end case 2 do print('two') end default do print('default') end end
Lua 支持异常处理,但其接口是函数式的,并且是低级别的,这使得它使用起来很麻烦。也许对令牌进行调整在这里会有所帮助。
在调用 C 绑定或其他 Lua 函数时,通常对象必须是特定类型。Lua 不支持类型检查,但这在这些情况下将非常有用。例如,如果我们绑定一个 C 函数,
void foo(int arg1, const char* arg2);
备注