ezc

Crates.ioezc
lib.rsezc
version0.2.0
sourcesrc
created_at2020-10-31 20:52:46.522794
updated_at2020-11-02 12:52:35.028558
descriptionA compiler for ez
homepagehttps://github.com/g-w1/ezc
repositoryhttps://github.com/g-w1/ezc
max_upload_size
id307323
size337,208
Jacob G-W (g-w1)

documentation

README

ezc

https://github.com/g-w1/ezc/workflows/Rust/badge.svg

Compiler for ez.

This is for an independent study in school.

Goals

  • To learn a lot
  • ez should resemble english
  • Use only rust standard library
  • Write a (minimal) working compiler. probably only u64 but maybe arrays
  • Write a (minimal) standard library for ez in another language (zig, rust, c, asm, ..)

Instructions

To run just do ezc file use -g flag for debug info (it will generate a out.asm file). then you can open in gdb or lldb

To get the standard library pass -stdlib-path /path/to/stdlib to the compiler. To compile the standard library, go into the lib directory in this compiler. Then run zig build in that directory and find the library in zig-cache/lib/libstd.a. You will probably need pretty close to master branch zig. You can find that here: https://ziglang.org/download/.

To test the code: cargo test To test the generated code you can do cd tests; ./test.sh. Note: this requires gcc.

Dependencies:

  • Zig (master). NOTE: If you want to build without zig run HAS_NO_ZIG=1 cargo ...(whatever command you want). This may be useful if you are on a system without zig or want to provide your own standard library.
  • nasm
  • cargo
  • gcc (only for testing)

Resources

Features

  • lexer

  • ast (structs for ast items)

  • parser

  • codegen

  • immutable assignments

  • mutable variables

  • semantic analysis.

  • expressions (the start of recursive parsing)

  • if statements

  • loops

  • fancy compile errors (with carets)

  • functions

  • modules

  • char literals

  • standard library

  • io

  • arrays and string literals

  • finish blog bost

  • finish documentation

  • remove all the TODOs

Commit count: 209

cargo fmt