restructure syntax

This commit is contained in:
nora 2022-04-26 20:13:34 +02:00
parent c916611bdc
commit 266eeb7327
96 changed files with 624 additions and 151 deletions

View file

@ -5,13 +5,13 @@ use std::{cell::RefCell, rc::Rc};
use bumpalo::{collections::Vec, Bump};
use crate::{
ast::{
Assignment, BinaryOp, BinaryOpKind, Block, Call, CallKind, Declaration, ElsePart, Expr,
FnDecl, Ident, IfStmt, Literal, Program, Stmt, UnaryOp, WhileStmt,
},
bytecode::{FnBlock, Instr},
errors::{CompilerError, Span},
gc::Symbol,
syntax::ast::{
Assignment, BinaryOp, BinaryOpKind, Block, Call, CallKind, Declaration, ElsePart, Expr,
FnDecl, Ident, IfStmt, Literal, Program, Stmt, UnaryOp, WhileStmt,
},
vm::Value,
HashMap, RtAlloc,
};

View file

@ -1,22 +1,22 @@
#![deny(clippy::disallowed_types)]
mod ast;
mod bytecode;
mod compile;
mod errors;
mod gc;
mod lex;
mod parse;
mod syntax;
mod util;
mod vm;
use std::io::Write;
pub use bumpalo::Bump;
pub use lex::*;
pub use parse::*;
use crate::{ast::Program, gc::RtAlloc};
pub use crate::syntax::{lex::*, parse::*};
use crate::{
gc::RtAlloc,
syntax::{ast::Program, lex, parse},
};
#[cfg(not(feature = "fxhash"))]
#[allow(clippy::disallowed_types)]

View file

@ -1,12 +0,0 @@
---
source: src/parse/test.rs
expression: ast
---
Literal(
Number(
10.0,
Span(
0..0,
),
),
)

View file

@ -1,12 +0,0 @@
---
source: src/parse/test.rs
expression: ast
---
Literal(
Number(
10.0,
Span(
0..0,
),
),
)

View file

@ -1,12 +0,0 @@
---
source: src/parse/test.rs
expression: ast
---
Literal(
Number(
10.0,
Span(
0..0,
),
),
)

View file

@ -1,12 +0,0 @@
---
source: src/parse/test.rs
expression: ast
---
Literal(
Number(
10.0,
Span(
0..0,
),
),
)

View file

@ -1,12 +0,0 @@
---
source: src/parse/test.rs
expression: ast
---
Literal(
Number(
10.0,
Span(
0..0,
),
),
)

3
src/syntax/mod.rs Normal file
View file

@ -0,0 +1,3 @@
pub mod ast;
pub mod lex;
pub mod parse;

View file

@ -11,9 +11,9 @@ use std::iter::Peekable;
use bumpalo::{collections::Vec, Bump};
use crate::{
ast::*,
errors::{CompilerError, Span},
lex::{Token, TokenKind},
syntax::ast::*,
};
#[derive(Debug)]

View file

@ -1,5 +1,5 @@
---
source: src/parse/test.rs
source: src/syntax/parse/test.rs
expression: ast
---
Assignment(

View file

@ -1,5 +1,5 @@
---
source: src/parse/test.rs
source: src/syntax/parse/test.rs
expression: ast
---
Assignment(

View file

@ -1,5 +1,5 @@
---
source: src/parse/test.rs
source: src/syntax/parse/test.rs
expression: ast
---
Block {

View file

@ -1,5 +1,5 @@
---
source: src/parse/test.rs
source: src/syntax/parse/test.rs
expression: ast
---
Block {

View file

@ -1,5 +1,5 @@
---
source: src/parse/test.rs
source: src/syntax/parse/test.rs
expression: ast
---
Block {

View file

@ -1,5 +1,5 @@
---
source: src/parse/test.rs
source: src/syntax/parse/test.rs
expression: ast
---
Call(

View file

@ -1,5 +1,5 @@
---
source: src/parse/test.rs
source: src/syntax/parse/test.rs
expression: ast
---
Call(

View file

@ -1,5 +1,5 @@
---
source: src/parse/test.rs
source: src/syntax/parse/test.rs
expression: ast
---
Call(

View file

@ -1,5 +1,5 @@
---
source: src/parse/test.rs
source: src/syntax/parse/test.rs
expression: ast
---
Call(

View file

@ -1,5 +1,5 @@
---
source: src/parse/test.rs
source: src/syntax/parse/test.rs
expression: ast
---
Call(

View file

@ -1,5 +1,5 @@
---
source: src/parse/test.rs
source: src/syntax/parse/test.rs
expression: ast
---
BinaryOp(

View file

@ -1,5 +1,5 @@
---
source: src/parse/test.rs
source: src/syntax/parse/test.rs
expression: ast
---
BinaryOp(

View file

@ -1,5 +1,5 @@
---
source: src/parse/test.rs
source: src/syntax/parse/test.rs
expression: ast
---
BinaryOp(

View file

@ -1,5 +1,5 @@
---
source: src/parse/test.rs
source: src/syntax/parse/test.rs
expression: ast
---
BinaryOp(

View file

@ -1,5 +1,5 @@
---
source: src/parse/test.rs
source: src/syntax/parse/test.rs
expression: ast
---
Literal(

View file

@ -1,5 +1,5 @@
---
source: src/parse/test.rs
source: src/syntax/parse/test.rs
expression: ast
---
BinaryOp(

View file

@ -1,5 +1,5 @@
---
source: src/parse/test.rs
source: src/syntax/parse/test.rs
expression: ast
---
BinaryOp(

View file

@ -1,5 +1,5 @@
---
source: src/parse/test.rs
source: src/syntax/parse/test.rs
expression: ast
---
Literal(

View file

@ -1,5 +1,5 @@
---
source: src/parse/test.rs
source: src/syntax/parse/test.rs
expression: ast
---
BinaryOp(

View file

@ -1,5 +1,5 @@
---
source: src/parse/test.rs
source: src/syntax/parse/test.rs
expression: ast
---
BinaryOp(

View file

@ -1,5 +1,5 @@
---
source: src/parse/test.rs
source: src/syntax/parse/test.rs
expression: ast
---
Literal(

View file

@ -1,5 +1,5 @@
---
source: src/parse/test.rs
source: src/syntax/parse/test.rs
expression: ast
---
BinaryOp(

View file

@ -1,5 +1,5 @@
---
source: src/parse/test.rs
source: src/syntax/parse/test.rs
expression: ast
---
BinaryOp(

View file

@ -1,5 +1,5 @@
---
source: src/parse/test.rs
source: src/syntax/parse/test.rs
expression: ast
---
BinaryOp(

View file

@ -1,5 +1,5 @@
---
source: src/parse/test.rs
source: src/syntax/parse/test.rs
expression: ast
---
BinaryOp(

View file

@ -1,5 +1,5 @@
---
source: src/parse/test.rs
source: src/syntax/parse/test.rs
expression: ast
---
Literal(

View file

@ -1,5 +1,5 @@
---
source: src/parse/test.rs
source: src/syntax/parse/test.rs
expression: ast
---
BinaryOp(

View file

@ -0,0 +1,12 @@
---
source: src/syntax/parse/test.rs
expression: ast
---
Literal(
Number(
10.0,
Span(
0..0,
),
),
)

View file

@ -0,0 +1,12 @@
---
source: src/syntax/parse/test.rs
expression: ast
---
Literal(
Number(
10.0,
Span(
0..0,
),
),
)

View file

@ -1,5 +1,5 @@
---
source: src/parse/test.rs
source: src/syntax/parse/test.rs
expression: ast
---
BinaryOp(

View file

@ -1,5 +1,5 @@
---
source: src/parse/test.rs
source: src/syntax/parse/test.rs
expression: ast
---
Literal(

View file

@ -1,5 +1,5 @@
---
source: src/parse/test.rs
source: src/syntax/parse/test.rs
expression: ast
---
Literal(

View file

@ -1,5 +1,5 @@
---
source: src/parse/test.rs
source: src/syntax/parse/test.rs
expression: ast
---
Literal(

View file

@ -1,5 +1,5 @@
---
source: src/parse/test.rs
source: src/syntax/parse/test.rs
expression: ast
---
Literal(

View file

@ -1,5 +1,5 @@
---
source: src/parse/test.rs
source: src/syntax/parse/test.rs
expression: ast
---
Ident(

View file

@ -1,5 +1,5 @@
---
source: src/parse/test.rs
source: src/syntax/parse/test.rs
expression: ast
---
Literal(

View file

@ -1,5 +1,5 @@
---
source: src/parse/test.rs
source: src/syntax/parse/test.rs
expression: ast
---
Literal(

View file

@ -0,0 +1,12 @@
---
source: src/syntax/parse/test.rs
expression: ast
---
Literal(
Number(
10.0,
Span(
0..0,
),
),
)

View file

@ -1,5 +1,5 @@
---
source: src/parse/test.rs
source: src/syntax/parse/test.rs
expression: ast
---
Literal(

View file

@ -1,5 +1,5 @@
---
source: src/parse/test.rs
source: src/syntax/parse/test.rs
expression: ast
---
Literal(

View file

@ -1,5 +1,5 @@
---
source: src/parse/test.rs
source: src/syntax/parse/test.rs
expression: ast
---
Literal(

View file

@ -1,5 +1,5 @@
---
source: src/parse/test.rs
source: src/syntax/parse/test.rs
expression: ast
---
Print(

View file

@ -1,5 +1,5 @@
---
source: src/parse/test.rs
source: src/syntax/parse/test.rs
expression: ast
---
FnDecl(

View file

@ -1,5 +1,5 @@
---
source: src/parse/test.rs
source: src/syntax/parse/test.rs
expression: ast
---
FnDecl(

View file

@ -1,5 +1,5 @@
---
source: src/parse/test.rs
source: src/syntax/parse/test.rs
expression: ast
---
IfStmt {

View file

@ -1,5 +1,5 @@
---
source: src/parse/test.rs
source: src/syntax/parse/test.rs
expression: ast
---
IfStmt {

View file

@ -1,5 +1,5 @@
---
source: src/parse/test.rs
source: src/syntax/parse/test.rs
expression: ast
---
IfStmt {

View file

@ -1,5 +1,5 @@
---
source: src/parse/test.rs
source: src/syntax/parse/test.rs
expression: ast
---
IfStmt {

View file

@ -1,5 +1,5 @@
---
source: src/parse/test.rs
source: src/syntax/parse/test.rs
expression: ast
---
Loop(

View file

@ -1,5 +1,5 @@
---
source: src/parse/test.rs
source: src/syntax/parse/test.rs
expression: ast
---
Loop(

View file

@ -1,5 +1,5 @@
---
source: src/parse/test.rs
source: src/syntax/parse/test.rs
expression: ast
---
Loop(

View file

@ -1,5 +1,5 @@
---
source: src/parse/test.rs
source: src/syntax/parse/test.rs
expression: ast
---
While(

View file

@ -1,5 +1,5 @@
---
source: src/parse/test.rs
source: src/syntax/parse/test.rs
expression: ast
---
While(

View file

@ -1,5 +1,5 @@
---
source: src/parse/test.rs
source: src/syntax/parse/test.rs
expression: ast
---
BinaryOp(

View file

@ -0,0 +1,12 @@
---
source: src/syntax/parse/test.rs
expression: ast
---
Literal(
Number(
10.0,
Span(
0..0,
),
),
)

View file

@ -1,5 +1,5 @@
---
source: src/parse/test.rs
source: src/syntax/parse/test.rs
expression: ast
---
BinaryOp(

View file

@ -1,5 +1,5 @@
---
source: src/parse/test.rs
source: src/syntax/parse/test.rs
expression: ast
---
UnaryOp(

View file

@ -1,5 +1,5 @@
---
source: src/parse/test.rs
source: src/syntax/parse/test.rs
expression: ast
---
UnaryOp(

View file

@ -0,0 +1,12 @@
---
source: src/syntax/parse/test.rs
expression: ast
---
Literal(
Number(
10.0,
Span(
0..0,
),
),
)

View file

@ -11,8 +11,8 @@ use crate::{errors::Span, parse::Parser, RtAlloc};
mod prelude {
pub(super) use super::{parser, rt, test_literal_bin_op, test_number_literal, token};
pub(super) use crate::{
ast::{Expr, Stmt},
lex::TokenKind::*,
syntax::ast::{Expr, Stmt},
};
pub type Token = crate::lex::Token;
pub type TokenType = crate::lex::TokenKind;
@ -165,7 +165,7 @@ mod r#fn {
mod r#if {
use super::prelude::*;
use crate::ast::IfStmt;
use crate::syntax::ast::IfStmt;
fn parse_if(tokens: Vec<Token>, alloc: &Bump) -> IfStmt {
let mut parser = parser(tokens, alloc);
@ -294,7 +294,7 @@ mod r#loop {
mod block {
use super::prelude::*;
use crate::ast::Block;
use crate::syntax::ast::Block;
fn parse_block(tokens: Vec<Token>, alloc: &Bump) -> Block {
let mut parser = parser(tokens, alloc);

View file

@ -1,5 +1,5 @@
---
source: src/lex.rs
source: src/syntax/lex.rs
expression: tokens
---
[

View file

@ -1,5 +1,5 @@
---
source: src/lex.rs
source: src/syntax/lex.rs
expression: tokens
---
[

View file

@ -1,5 +1,5 @@
---
source: src/lex.rs
source: src/syntax/lex.rs
expression: tokens
---
[

View file

@ -1,5 +1,5 @@
---
source: src/lex.rs
source: src/syntax/lex.rs
expression: tokens
---
[

View file

@ -1,5 +1,5 @@
---
source: src/lex.rs
source: src/syntax/lex.rs
expression: tokens
---
[

View file

@ -1,5 +1,5 @@
---
source: src/lex.rs
source: src/syntax/lex.rs
expression: tokens
---
[

View file

@ -1,5 +1,5 @@
---
source: src/lex.rs
source: src/syntax/lex.rs
expression: tokens
---
[

View file

@ -1,5 +1,5 @@
---
source: src/lex.rs
source: src/syntax/lex.rs
expression: tokens
---
[

View file

@ -1,5 +1,5 @@
---
source: src/lex.rs
source: src/syntax/lex.rs
expression: tokens
---
[

View file

@ -1,5 +1,5 @@
---
source: src/lex.rs
source: src/syntax/lex.rs
expression: tokens
---
[

View file

@ -1,5 +1,5 @@
---
source: src/lex.rs
source: src/syntax/lex.rs
expression: tokens
---
[

View file

@ -1,5 +1,5 @@
---
source: src/lex.rs
source: src/syntax/lex.rs
expression: tokens
---
[

View file

@ -1,5 +1,5 @@
---
source: src/lex.rs
source: src/syntax/lex.rs
expression: tokens
---
[

View file

@ -1,5 +1,5 @@
---
source: src/lex.rs
source: src/syntax/lex.rs
expression: tokens
---
[

View file

@ -1,5 +1,5 @@
---
source: src/lex.rs
source: src/syntax/lex.rs
expression: tokens
---
[

View file

@ -1,5 +1,5 @@
---
source: src/lex.rs
source: src/syntax/lex.rs
expression: tokens
---
[

View file

@ -1,5 +1,5 @@
---
source: src/lex.rs
source: src/syntax/lex.rs
expression: tokens
---
[

View file

@ -1,5 +1,5 @@
---
source: src/lex.rs
source: src/syntax/lex.rs
expression: tokens
---
[