MoonScript is a dynamic scripting language that compiles intoLua. It gives you the power of one of the fastestscripting languages combined with a rich set of features.
class Thing name: "unknown"class Person extends Thing say_name: => print "Hello, I am", @namewith Person! .name = "MoonScript" \say_name!
MoonScript can either be compiled into Lua and run at a later time, or it canbe dynamically compiled and run using the moonloader. It’s as simple asrequire "moonscript"
in order to have Lua understand how to load and run anyMoonScript file.
Because it compiles right into Lua code, it is completely compatible withalternative Lua implementations like LuaJIT, and it isalso compatible with all existing Lua code and libraries.
The command line tools also let you run MoonScript directly from thecommand line, like any first-class scripting language.
A comprehensive overview of the language can be found in the referencemanual, the rest of this page serves as an overview of thelanguage.
MoonScript provides a clean syntax using significant whitespace that avoids allthe keyword noise typically seen in a Lua script. Below is a sample of someconstructs found in the language.
export my_funcx = 2323collection = height: 32434 hats: {"tophat", "bball", "bowler"}my_func = (a) -> x + aprint my_func 100
It also adds table comprehensions, implicit return on functions, classes,inheritance, scope management statements import & export, and a convenientobject creation statement called with.
import concat, insert from tabledouble_args = (...) -> [x * 2 for x in *{...}]tuples = [{k, v} for k,v in ipairs my_table]
It can be loaded directly from a Lua script without an intermediatecompile step. It even knows how to tell youwhere errors occurred in the original file whenthey happen.
If you're on Windows, then install the Windows binaries,otherwise the easiest way to install is to use LuaRocks.
LuaRocks can be obtained here or from your packagemanager.
After it is installed, run the following in a terminal:
$ luarocks install moonscript
This will provide the moon
and moonc
executables along with themoonscript
and moon
Lua module.
Procompiled Windows binaries are available to avoid the trouble of compiling:
http://moonscript.org/bin/moonscript-0.2.4.zip
Extract the contents into your PATH
.
If you're on Linux and use watch mode (which compiles .moon
files to .lua
files as they are changed) you can installlinotify to use inotify instead ofpolling.
The source code to the project lives on github:
https://github.com/leafo/moonscript
Issues with the tool can be reported on the issue tracker:
https://github.com/leafo/moonscript/issues
The latest development version can be installed with the dev rockspec:
$ luarocks build http://moonscript.org/rocks/moonscript-dev-1.rockspec
In addition to Lua 5.1 or 5.2, the following Lua modules arerequired to run the compiler and associated tools:
All of the required ones can be retrieved automatically using theLuaRocks installation.
Vim syntax and indent:
https://github.com/leafo/moonscript-vim
Textmate (and Sublime Text) syntax and indent:
https://github.com/leafo/moonscript-tmbundle
SciTE (with scintillua) syntax:
https://github.com/leafo/moonscript/tree/master/extra/scintillua
Preconfigured and packaged version of SciTE for Windows with MoonScriptsupport:
http://moonscript.org/scite/
Online Compiler:
http://moonscript.org/compiler/
A more detailed overview of the syntax can be found in thedocumentation.
export
keyword to declare global variables, import
keyword to make localcopies of values from a table=>
, can be used to create a function with a self argument@
can be prefixed in front of a name to refer to that name in self
!
operator can be used to call a function with no arguments:
is used to separate key and value in table literals instead of =
,
:
+=
, -=
, /=
, *=
, %=
operators!=
is an alias for ~=
__index
property@
to cause them to automatically beassigned to the objectsuper
function which maps to super class method of same name in aclass methodwith
statement lets you access anonymous object with short syntaxThe syntax of MoonScript has been heavily inspired by the syntax ofCoffeeScript. MoonScript isCoffeeScript for Lua.
MoonScript would not have been possible without the excellent toolLPeg for parsing.
聯(lián)系客服