Beoran 64670b404b Merge branch 'master' of gitlab.com:beoran/muesli | il y a 4 ans | |
---|---|---|
cmd | il y a 5 ans | |
test | il y a 5 ans | |
LICENSE | il y a 4 ans | |
README.md | il y a 4 ans | |
ast.go | il y a 4 ans | |
ast_test.go | il y a 5 ans | |
builtin.go | il y a 4 ans | |
design_muesli.muesli | il y a 5 ans | |
doc.go | il y a 6 ans | |
go.mod | il y a 5 ans | |
go.sum | il y a 5 ans | |
lexer.go | il y a 5 ans | |
lexer_test.go | il y a 5 ans | |
logger.go | il y a 5 ans | |
muesli.go | il y a 6 ans | |
parser.go | il y a 4 ans | |
parser_test.go | il y a 5 ans | |
signature.go | il y a 4 ans | |
token.go | il y a 5 ans | |
value.go | il y a 4 ans | |
vm.go | il y a 4 ans | |
vm_test.go | il y a 5 ans |
It is a scripting language implemented in Go, that has a simple command based TCL like syntax but with rich semantics. Unlice TCL, all values are typed, and many types are supported, not just string values. Additionaly, if so desired, every symbol used in the syntax can be replaced by a key word, leading to a native language programming feel.
A Muesli program consists of one or more commands, separated by newlines or periods. Commands can be grouped together in blocks between braces {}. Lists are formed bu placing their contents between brackest []. A single command can be placed in parenthesis (), where the return value of the command will be subsituted.
A command starts with a word, and is followed by any number of arguments, which may be blocks, parenthesis, lists , or values. Like this, the language itself has no control statements, such as if, these are implemented as commands in stead.
Muesly supports several kinds of values, namely: