* Requirements - llvm-10 - valgrind - cmake - ninja - clang - clang-tidy * TODOs ** TODO Add support for release builds with NODEBUG macro :: https://www.cplusplus.com/reference/cassert/assert/ * Parser First of all you need to read [[https://tomassetti.me/guide-parsing-algorithms-terminology/][All you need to know about Parser algorithms]]. Then here is the list or parsers that we have considered - Rust parser combinator framework :: https://github.com/Geal/nom/ - LR(1) parser generator for Rust :: https://github.com/lalrpop/lalrpop - A parser combinator library for Rust :: https://github.com/Marwes/combine - Parsing Expression Grammar (PEG) parser generator for Rust :: https://github.com/kevinmehall/rust-peg - General purpose parser :: https://pest.rs/ * Considerations ** Hashmaps *** DOS attack - https://www.anchor.com.au/blog/2012/12/how-to-explain-hash-dos-to-your-parents-by-using-cats/ - https://en.wikipedia.org/wiki/Collision_attack * Resources ** LLVM - Brief overview of LLVM :: https://www.infoworld.com/article/3247799/what-is-llvm-the-power-behind-swift-rust-clang-and-more.html - A bit in depth details on LLVM :: https://aosabook.org/en/llvm.html - Rust binding :: https://crates.io/crates/llvm-sys - Official LLVM tutorial C++ :: https://llvm.org/docs/tutorial/ - Rust LLVM tutorial :: https://github.com/jauhien/iron-kaleidoscope ** Data structures - Pure functional datastructures papaer :: https://www.cs.cmu.edu/~rwh/theses/okasaki.pdf - Dynamic typing: syntax and proof theory :: https://reader.elsevier.com/reader/sd/pii/0167642394000042?token=CEFF5C5D1B03FD680762FC4889A14C0CA2BB28FE390EC51099984536E12AC358F3D28A5C25C274296ACBBC32E5AE23CD - Representing Type Information in Dynamically Typed Languages :: https://citeseer.ist.psu.edu/viewdoc/summary?doi=10.1.1.39.4394 - An empirical study on the impact of static typing on software maintainability :: https://www.researchgate.net/publication/259634489_An_empirical_study_on_the_impact_of_static_typing_on_software_maintainability ** Other languages - Julia: A Fresh Approach toNumerical Computing :: https://julialang.org/research/julia-fresh-approach-BEKS.pdf ** Cranelift - Source tree :: https://github.com/bytecodealliance/wasmtime/tree/master/cranelift