Git Product home page Git Product logo

cheddar's Introduction

Cheddar

Travis Status Join the chat at https://gitter.im/cheddar-lang/Cheddar Codecov Coverage Status Dependency Status

Website โ€” Download โ€” Documentation

The language that works for you

Manual Installation

Manual installation is simple. The only dependencies you must have are git and nodejs + npm. Additionally you should have make (preferably GNU), but this comes by default on almost every *nix system.

  1. The first step is to clone the repository from GitHub:
$ git clone https://github.com/cheddar-lang/Cheddar.git && cd Cheddar

Note: If you want to clone a specific branch (e.g. develop for development), use the following command:

$ git clone -b <branch> https://github.com/cheddar-lang/Cheddar.git && cd Cheddar
  1. The next step is to install the dependencies with npm. An automatic build should trigger if dependencies are installed succesfully. Once this command is finished you should see a dist/ directory created. If you don't, look for any errors in the installation.
$ npm install
  1. Manually building / testing

You can use make to run the build, test, and install tasks:

$ make         # Production Build
$ make build   # Development Build
$ make test    # Run tests
  1. Installing.

If you want to install the Cheddar CLI, you have some options. If you are doing a production installation, use make install. For all other cases use ./bin/install; with this you can pass a --method argument to specify whether you'd like to install for yourself (--method=alias) or for everyone on your computer (--method=path, the default) which may require elevated privileges. With --method=alias, provide the location of your bashrc file or equivalent with the --rcloc flag (usually for *nix systems this is ~/.bashrc, and for Mac this is ~/.bash_profile). You may specify the installation path with --method=path, Cheddar installs the binary in <path>/bin/cheddar and <path>/share/cheddar; this defaults to /usr/local.

Roadmap

Tokenizer roadmap excluded.

  • Define streams
  • Define class structure
  • Define basic runtime enviorment
  • Token linking
  • Call stack handling
  • Define namespaces
  • Handle lookups
  • Define primitive classes
  • String
  • Array
  • Number
  • Boolean
  • Nil
  • Expression evaluation integration
  • Linking
  • Call stack configuration
  • Scope linking
  • Explicit Casting
  • Conditional expression handling
  • Loop expression handling
  • Functions
  • Syntax definition
  • Functional design
  • Function scope
  • Function handling
  • Function lookup
  • Function execution
  • Token linking
  • Class handling
  • Syntax definition
  • Class design, and implementation
  • Class scoping
  • Class lookup
  • Class Execution
  • Token linking
  • I/O Interfacing
  • Statement handling
  • Interpretation
  • Call stack optimization

Congrats! Cheddar is done!

Critical Running Bugs:

  • Fix infinite precedence with unary operators bug
  • Precendence ignored

Bugs:

  • Stack overflowing during various invalid expression syntax
  • Error handling is completely borked.
  • Syntax Errors (index & prop data is lost)
  • Runtime Errors

Further Development

  • JS Interfacing
  • A bunch of libraries

cheddar's People

Contributors

vihanb avatar conorobrien-foxx avatar the-quill avatar mego avatar

Watchers

James Cloos avatar  avatar

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.