Giter Club home page Giter Club logo

durian's Issues

EBNF

Write EBNF for Durian, in file grammar.ebnf.

VM

write bytecode VM

Implement bytecode file loading for VM

The VM currently takes a pointer to bytecode, but doesn't include the metadata or static data described on the wiki. Now that we have at least some bytecode being written to a file, we need to write the metadata at the top of every bytecode file, load the file after writing and pass it to the VM, and change the VM to take into account the metadata.

Compiler

Write source to bytecode compiler.

Implement functions in VM

Implement RET and CALL opcodes as described in the calling conventions section of the implementation decisions wiki page, as well as a DurianObject to represent functions.

Implement string literal compiling

String literals still need to be compiled. In particular, we would like to have (immutable) shared string literals in the static data section of the bytecode. To do so, the compiler will store a dictionary of string literals/static data indices, and when compiling of an entire source file is finished, the string literals will be written as appropriate to the static data section. The actual string literal nodes, then, will simply determine the appropriate index, push this onto the stack, and then output the NEWSTR8 opcode.

Create token definition

Create a class to represent different types of tokens, storing the token type, value (if an identifier), literal (if a literal), and line number (at least).

Implement lexer

Implement the actual lexer, taking a string and producing a list of tokens (as defined in #13).

Design

finish design of Durian.

Setup build system and Travis

Set up a build system (possibly CMakeLists?) and hook it up to Travis for continuous integration.

It would also be good to have a basic main file and maybe a sample unit test (GTest?).

Create MVP Project

Write a small command-line game or utility in our new programming language.

Do more parser testing

We should add more unit tests of the parser, as well as stress-testing it with complex inputs.

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.