Expand description

Heraclitus - the compiler frontend

With heraclitus you can create your language by skipping the cumbersome lexing step and using convenience parsing methods that can get you started on your language much quicker.

The main construct that you need is the Compiler. The compiler will tokenize your code and assemble it in a way that you can use to create AST by implementing predefined trait that helps you parse your code.

It’s pretty simple. In order to get started you need 3 steps:

  1. Create lexing rules
  2. Create your ast nodes and let them implement trait provided by this package
  3. Create compiler and tie all the components together

Voilá! Now you got yourself a ready to analyze / interpret / validate / compile AST.

Ready to get started?

Example

use heraclitus_compiler::prelude::*;
Compiler::new("HerbScript", rules);

It is recommended to use included prelude to import just the things we will actually need.

The Compiler requires lexer rules in order to exist.

let cc = Compiler::new("HerbScript", rules);
let tokens = cc.tokenize()?;

Modules

Module for compiling your language
Rules for lexing
Use all the necessary modules

Macros

Macro that helps you capture failures thrown by inner parsing function calls
Macro for sending errors
Macro for sending errors by position (Quiet Failure)
Convenience macro that creates regions
This macro is a syntax sugar for the name method All this does is setting the new name without all the syntax clutter.