Skip to content

GrayHat12/helium

Repository files navigation

Helium

Just a language for me to understand writting compilers.

Grammar

Grammar

AST Example

// Sample code
let x = 60 + 9 + 2 - 2;
let y = 96;
exit(x);
Program{
    .stmts=[
        Statement{
            .statement=Let{
                .identifier=Token{.type=5, .value=x}, 
                .expression=Expression{
                    .expression=Operation{
                        .left=Expression{
                            .expression=Term{
                                .expression=IntLiteral{
                                    .int_lit=Token{.type=2, .value=60}
                                }
                            }
                        }, 
                        .operator=Token{.type=8, .value=+}, 
                        .right=Expression{
                            .expression=Operation{
                                .left=Expression{
                                    .expression=Term{
                                        .expression=IntLiteral{.int_lit=Token{.type=2, .value=9}}
                                    }
                                }, 
                                .operator=Token{.type=8, .value=+}, 
                                .right=Expression{
                                    .expression=Operation{
                                        .left=Expression{
                                            .expression=Term{
                                                .expression=IntLiteral{.int_lit=Token{.type=2, .value=2}}
                                            }
                                        }, 
                                        .operator=Token{.type=8, .value=-}, 
                                        .right=Expression{
                                            .expression=Term{
                                                .expression=IntLiteral{.int_lit=Token{.type=2, .value=2}}
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }, 
        Statement{
            .statement=Let{
                .identifier=Token{.type=5, .value=y}, 
                .expression=Expression{
                    .expression=Term{
                        .expression=IntLiteral{.int_lit=Token{.type=2, .value=96}}
                    }
                }
            }
        }, 
        Statement{
            .statement=Exit{
                .expression=Expression{
                    .expression=Term{
                        .expression=Identifier{
                            .int_lit=Token{.type=5, .value=x}
                        }
                    }
                }
            }
        }, 
    ]
}

Requirements

Build

just build

Compile helium code

./build/helium <input.he> <output>

Example

./build/helium test/test.he out && ./out; echo $?

About

a twat compiler

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages