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