如何调试 moonscript?
How to debug moonscript?
我想写一些游戏,基于 Love2d 框架,从 moonscript 编译。每次当我在我的代码中出错时,我的应用程序都会抛出错误,这个错误是指编译的 lua-code,而不是 moonscript,所以我不知道这个错误到底发生在哪里。请告诉我,在这种情况下有什么解决方案?谢谢。
对于几乎所有源代码到源代码的编译系统来说,调试都是一个问题。目标语言不知道源语言的存在,所以只能用目标语言来谈论事情。目标语言和原始语言越不同,调试就越困难。
这是 C++ 编译器不再编译为 C 的很大一部分原因。
处理此问题的唯一真正方法是非常熟悉 Moonscript 编译器如何 从您的 Moonscript 代码生成 Lua。学习 Lua 并仔细阅读输出 Lua,将其与给定的 Moonscript 进行比较。这将使您更容易将给定的 Lua 错误和源代码映射到创建它的实际 Moonscript 代码。
Moonscript 确实支持 source-mapping/error-rewriting,但只有在 moon
解释器中 运行ning 时才支持:https://moonscript.org/reference/command_line.html#error_rewriting
我认为它可以在另一个 lua 环境中启用,但我不完全确定会涉及什么。
它肯定需要 moonscript 保留在编译期间创建的源映射表,因此您不能使用 moonc
;而是使用 moonscript
模块来即时编译所需的模块:
main.lua
-- attempt to require moonscript,
-- for development
pcall(require, 'moonscript')
-- load the main file
require 'init'
init.moon
love.draw = ->
print "test"
正确安装此代码和 moonscript 后,您可以 运行 正常使用 love .
项目。 require 'moonscript'
调用将更改 require
以即时编译 moonscript 模块。性能损失可以忽略不计,加载所有模块后没有区别。
我想写一些游戏,基于 Love2d 框架,从 moonscript 编译。每次当我在我的代码中出错时,我的应用程序都会抛出错误,这个错误是指编译的 lua-code,而不是 moonscript,所以我不知道这个错误到底发生在哪里。请告诉我,在这种情况下有什么解决方案?谢谢。
对于几乎所有源代码到源代码的编译系统来说,调试都是一个问题。目标语言不知道源语言的存在,所以只能用目标语言来谈论事情。目标语言和原始语言越不同,调试就越困难。
这是 C++ 编译器不再编译为 C 的很大一部分原因。
处理此问题的唯一真正方法是非常熟悉 Moonscript 编译器如何 从您的 Moonscript 代码生成 Lua。学习 Lua 并仔细阅读输出 Lua,将其与给定的 Moonscript 进行比较。这将使您更容易将给定的 Lua 错误和源代码映射到创建它的实际 Moonscript 代码。
Moonscript 确实支持 source-mapping/error-rewriting,但只有在 moon
解释器中 运行ning 时才支持:https://moonscript.org/reference/command_line.html#error_rewriting
我认为它可以在另一个 lua 环境中启用,但我不完全确定会涉及什么。
它肯定需要 moonscript 保留在编译期间创建的源映射表,因此您不能使用 moonc
;而是使用 moonscript
模块来即时编译所需的模块:
main.lua
-- attempt to require moonscript,
-- for development
pcall(require, 'moonscript')
-- load the main file
require 'init'
init.moon
love.draw = ->
print "test"
正确安装此代码和 moonscript 后,您可以 运行 正常使用 love .
项目。 require 'moonscript'
调用将更改 require
以即时编译 moonscript 模块。性能损失可以忽略不计,加载所有模块后没有区别。