Giter VIP home page Giter VIP logo

moon's Introduction

Moon status version

Moon is a small Lisp-dialect written purely in Rust. This should allow Rust programs (including games) to have access to a high-quality scripting language that's also safe. Moon is made to work extremely well with Rust or even C.

===

(defn shoot
    [player bullet]
    ...)

;; The core render loop for the scripting engine.
;; On every tick, draw the ship.
(defn render
    [inter]
    (draw-ship inter))

Repl

Repl 2

Installing

Clone the repo:

git clone [email protected]:TheHydroImpulse/moon.git
cd moon/

Build the project:

make moon

Access the Repl:

./target/moon

Testing

make test

License

The MIT License (MIT)

Copyright (c) 2014 Daniel Fagnan [email protected]

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

moon's People

Contributors

thehydroimpulse avatar

Stargazers

Gaurav Kanoongo avatar Alan D. Salewski avatar Vic avatar Brian Sunter avatar Arystan avatar Mike Cluck avatar Michael R. Bernstein avatar Olivia Lucca Fraser avatar Asim Jalis avatar Daniel Rosengren avatar Pete Doherty avatar Stanislav Tkach avatar  avatar Kenneth Bruskiewicz avatar Angus H. avatar hamlet avatar Peter Hoffmann avatar Chris McDevitt avatar Luna Stadler avatar Vilson Vieira avatar Val Packett avatar Matthew Chadwick (work) avatar Timo Sulg avatar  avatar Tavy avatar Forrest O. avatar Adam Frey avatar Andrew Rosa avatar James Brown avatar Eric Bailey avatar Jon Atack avatar Greg Katkov avatar Mike English avatar Korbik avatar Geoffroy Couprie avatar Sergey avatar Mattias Lundell avatar Sébastien Arnaud avatar Quinlan Pfiffer avatar Cameron Hart avatar VVK avatar ルス avatar Alan Moore avatar Chad avatar Mike McGirr avatar Erik Svedäng avatar Steven Rémot avatar The Dude avatar Suvash Thapaliya avatar Chris Heimpel avatar David Wilson avatar Yegor Wienski avatar Arnau Siches avatar Christoph Grabo avatar  avatar Jacky Alciné avatar Sunguk Lee avatar Peter Rudenko avatar Ferris avatar

Watchers

Michael R. Bernstein avatar  avatar James Cloos avatar Jon Atack avatar Ferris avatar  avatar

moon's Issues

Combine Parser + Lexer

Lisp doesn't require two separate pieces, they should be combined. This will allow things like macros and such.

Iteration

The underlying implementation will be different for each use case, and thus, probably not tied to Moon.

(loop expr
  body)

Extra Ident

Ident is probably taking in some line breaks.

Reader

Iterators are nice, but we don't want to have to store everything in memory first. We should implement a Reader that's agnostic to the source (stdin, file, etc...)

Error Handling

The lexer should never be responsible for reporting errors. If something is incorrect, the lexer should return an Unknown token. The parser will be responsible for dealing with it.

Integers

Forgot to lex floats, integers, etc...

JIT Compiler

It'd be nice to integrate LLVM's JIT compiler.

Figure out Integer Story

I'm leaning on having a powerful integer story. Moon is going to be optionally typed with the ability of having strong integer support. This is quite important for games and such. By default, a signed-64-bit integer will be used. Otherwise, you can specify the type: 9u8, 5555u64, -1233i64.

There also needs to have support for negation in the integer lexer.

Variables

A new built-in form let should allow variables to be bound. This would implement a lexical scoping to moon.

(let [x 100
      y :keyword]
  ...)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.