Без опису

Beoran 64670b404b Merge branch 'master' of gitlab.com:beoran/muesli 4 роки тому
cmd b19c0c32ae A few things work better now 5 роки тому
test b19c0c32ae A few things work better now 5 роки тому
LICENSE 534d46d7c8 Add MIT LICENSE. 4 роки тому
README.md d765d498f6 Add README.md 4 роки тому
ast.go e84756257c Trying out building in Go struct types, and write helper for that. Considering giving all functions a fixed signature. 4 роки тому
ast_test.go 969734636f Improve the lexer and work on the parser. 5 роки тому
builtin.go b211839902 [PATCH 2/2] Work on signatures for all callables. 4 роки тому
design_muesli.muesli 5e6a17f72a Starting to become runnable. 5 роки тому
doc.go 5ffa4a6725 Lexer is still flaky, considering switching to state machine based lexer. 6 роки тому
go.mod 5e6a17f72a Starting to become runnable. 5 роки тому
go.sum 5e6a17f72a Starting to become runnable. 5 роки тому
lexer.go a387df4660 Various improvements 5 роки тому
lexer_test.go 433b2c57d0 Parser starts to work correctly. 5 роки тому
logger.go 433b2c57d0 Parser starts to work correctly. 5 роки тому
muesli.go 5ffa4a6725 Lexer is still flaky, considering switching to state machine based lexer. 6 роки тому
parser.go 015ee70be7 Resolve merge conflict. 4 роки тому
parser_test.go 5e6a17f72a Starting to become runnable. 5 роки тому
signature.go b211839902 [PATCH 2/2] Work on signatures for all callables. 4 роки тому
token.go a387df4660 Various improvements 5 роки тому
value.go b211839902 [PATCH 2/2] Work on signatures for all callables. 4 роки тому
vm.go b211839902 [PATCH 2/2] Work on signatures for all callables. 4 роки тому
vm_test.go ad6c510461 WIP return or fail. 5 роки тому

README.md

Muesli is a Multi Use Embeddable Scripting Language Implementation.

Introduction

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.

Syntax

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:

  • Integers
  • Floats
  • Strings between "double quotes"
  • The booleans !true and !false
  • The nil value !nil
  • Words, which are simple runs of alphanumercial characters starting with a lower case lettter, such as foo
  • Types which are runs of alphanumerical characters starting with an upper case letter. such as Foo