GithubHelp home page GithubHelp logo

sxeme's Introduction

codecov Testing Coverage

sunburst

Description

  • Scheme Compiler written in Rust, compiled to LLVM

Time line (1 month inc)

  • Parsers
  • Linear IR (extra time will be needed here)
  • LLVM

Testing

Full Descriptions and updates will be given on my blog in long form

sxeme's People

Contributors

snowmang1 avatar

Watchers

 avatar

sxeme's Issues

Parser: const glob

Notes

  • scanner should grab constants as globs delimited by whitespace
  • scanner should read lexemes efficiently, delimiting them by white space
    • this means that the parser will get mangled lexemes s.a "(+"
    • the parser should be able to detect this and smart enough to dissect it
  • possible solve for mangled lexemes
    • spawn thread/process to dissect lexeme inside scanner

Tasks

  • scanner delimits by whitespace
  • parser dissects mangled lexemes
  • scanner spawns native thread for dissecting lexemes

llvm toolchain

Goal

One command will produce a binary from one scheme file

Tasklist

  • main should activate scanner
  • An LLVM IR should get output to a target directory (Rust style)
  • main detects LLVM IR output & pipes it to llc to produce a native assembly language
  • main detects when llc finishes producing native assembly and runs clang on the assembly to produce native binary

Notes/Rules

llvm Vars

Tasks

  • #4
  • #5
  • integrate variable names into IR
  • IR should use SSA form
  • variables should be shadowed & NEVER mutable
  • vars should obey scope

Notes

Parser: Var

Tasks

  • Parser definitions
    • define
    • set!
    • lambda
    • include
    • let
    • let*
  • Adjust Parse Table & Diagram(s)

Notes

  • (Tail-)Recursion / Itteration is not in the plan for this ticket
  • values type will not be handled in this ticket
  • This ticket is concerned only with Bindings

pipeline-creation

Tasks

  • Rust compilation (build & test only)
    • cargo build should complete without error (warnings are fine for non-trunk branch)
    • cargo test should strictly block when tests do not pass
    • if possible generate coverage and post
  • Readme
    • list status of test & build
    • Rustc version
    • cargo version ?
    • list license
    • update to list build and testing steps (includes install of cargo-llvm-cov)

Write Scanner mk1

Tasks

  • Write Scanner for all text input
  • Ignore Comments
    • single line
    • block
  • Scanner should be unit testable
  • Callable from Parser

Notes

  • Speed is not an issue with the mk1 series
  • Scanner will not directly create the Read stream, only use it
  • Scanner errors include: input stream err

llvm IR: numeric

Tasks

  • #4
  • internal IR structure for LLVM IR generation
    • draw.io diagrams
  • integrate IR into Parser
    • IR should be updated on reductions
  • integration testing
    • LLVM IR generation
    • Parser IR integration
  • Unit testing
    • internal IR
    • Parser IR integration

Parser: expand math

This ticket will create parsers for all string based math operators

Requirements

  • Test coverage needs to be retained within 1%
  • math operators needs object hierarchy

Parser: math

Tasks

  • Paser start
    • Open input stream and call scanner
    • implement handle identification
    • use stack to store inter-reduce data
  • Paser for math ops only
    • +
    • -
    • /
    • *
    • modulo
    • ceiling
    • abs
    • denominator
    • square
    • quotient
    • gcd
    • expt
    • lcm
  • Testing
    • coverage of all operator functions
    • coverage of error library
    • coverage of token object (hierarchy of objects)
  • Bottom-up Parse Table needed for Report
    • Idealy with accompanying NFA
      • StarUML / Latex table + Latex Diagram

Notes

  • This badly needs a testing pipeline else I am going to taint trunk
  • LR(1) Bottom up Parsering is the goal
  • No Rollback in the parse
  • the only type signiture for parser mk1 is integer

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.