Some basic parsing, with interned strings.

This commit is contained in:
2020-08-02 17:58:51 -07:00
parent 81f98cc2c9
commit 2881c5104a
9 changed files with 315 additions and 22 deletions

View File

@@ -1,12 +1,19 @@
pub enum Stmt {
Binding(String, Expr),
Expr(Expr),
use crate::syntax::token_stream::Location;
pub struct Program {
pub statements: Vec<Statement>,
pub result: Expression,
}
pub enum Expr {
Value(Value),
Reference(String),
Primitive(String, Vec<Expr>),
pub enum Statement {
Binding(Location, String, Expression),
Expr(Location, Expression),
}
pub enum Expression {
Value(Location, Value),
Reference(Location, String),
Primitive(Location, String, Vec<Expression>),
}
pub enum Value {