Nav apraksta

Beoran 6c4c374381 Make EOF work slightly better in muesly command interpreter. 5 gadi atpakaļ
cmd 6c4c374381 Make EOF work slightly better in muesly command interpreter. 5 gadi atpakaļ
test b19c0c32ae A few things work better now 5 gadi atpakaļ
LICENSE 534d46d7c8 Add MIT LICENSE. 5 gadi atpakaļ
README.md d765d498f6 Add README.md 5 gadi atpakaļ
alias.go 1a81159c54 Support operators, finally, if in a slightly roundabout way. Also support aliasing. 5 gadi atpakaļ
ast.go 027d3a2f29 Signatures for all callables. Think about type system. 5 gadi atpakaļ
ast_test.go 969734636f Improve the lexer and work on the parser. 6 gadi atpakaļ
block.go 027d3a2f29 Signatures for all callables. Think about type system. 5 gadi atpakaļ
bool.go 027d3a2f29 Signatures for all callables. Think about type system. 5 gadi atpakaļ
builtin.go 1a81159c54 Support operators, finally, if in a slightly roundabout way. Also support aliasing. 5 gadi atpakaļ
callable.go 027d3a2f29 Signatures for all callables. Think about type system. 5 gadi atpakaļ
cover.go 027d3a2f29 Signatures for all callables. Think about type system. 5 gadi atpakaļ
defined.go 027d3a2f29 Signatures for all callables. Think about type system. 5 gadi atpakaļ
design_muesli.muesli 5e6a17f72a Starting to become runnable. 5 gadi atpakaļ
doc.go 5ffa4a6725 Lexer is still flaky, considering switching to state machine based lexer. 6 gadi atpakaļ
door.go 027d3a2f29 Signatures for all callables. Think about type system. 5 gadi atpakaļ
empty.go 027d3a2f29 Signatures for all callables. Think about type system. 5 gadi atpakaļ
error.go 027d3a2f29 Signatures for all callables. Think about type system. 5 gadi atpakaļ
float.go 027d3a2f29 Signatures for all callables. Think about type system. 5 gadi atpakaļ
go.mod 5e6a17f72a Starting to become runnable. 5 gadi atpakaļ
go.sum 5e6a17f72a Starting to become runnable. 5 gadi atpakaļ
help.go 027d3a2f29 Signatures for all callables. Think about type system. 5 gadi atpakaļ
int.go 027d3a2f29 Signatures for all callables. Think about type system. 5 gadi atpakaļ
keyword.go 027d3a2f29 Signatures for all callables. Think about type system. 5 gadi atpakaļ
lexer.go 1a81159c54 Support operators, finally, if in a slightly roundabout way. Also support aliasing. 5 gadi atpakaļ
lexer_test.go 433b2c57d0 Parser starts to work correctly. 6 gadi atpakaļ
list.go 027d3a2f29 Signatures for all callables. Think about type system. 5 gadi atpakaļ
logger.go 433b2c57d0 Parser starts to work correctly. 6 gadi atpakaļ
map.go 027d3a2f29 Signatures for all callables. Think about type system. 5 gadi atpakaļ
muesli.go 5ffa4a6725 Lexer is still flaky, considering switching to state machine based lexer. 6 gadi atpakaļ
parser.go 1a81159c54 Support operators, finally, if in a slightly roundabout way. Also support aliasing. 5 gadi atpakaļ
parser_test.go 5e6a17f72a Starting to become runnable. 5 gadi atpakaļ
redispatch.go 027d3a2f29 Signatures for all callables. Think about type system. 5 gadi atpakaļ
signature.go 027d3a2f29 Signatures for all callables. Think about type system. 5 gadi atpakaļ
string.go 027d3a2f29 Signatures for all callables. Think about type system. 5 gadi atpakaļ
token.go 07e59b880b Consider adding operators as commands. 5 gadi atpakaļ
type.go 027d3a2f29 Signatures for all callables. Think about type system. 5 gadi atpakaļ
value.go 027d3a2f29 Signatures for all callables. Think about type system. 5 gadi atpakaļ
vm.go 027d3a2f29 Signatures for all callables. Think about type system. 5 gadi atpakaļ
vm_test.go ad6c510461 WIP return or fail. 5 gadi atpakaļ
word.go 027d3a2f29 Signatures for all callables. Think about type system. 5 gadi atpakaļ

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