Skip to content

Commit

Permalink
[chore] 重新组织代码结构
Browse files Browse the repository at this point in the history
  • Loading branch information
BreakingLead committed Sep 6, 2024
1 parent 8bb24da commit 592877f
Show file tree
Hide file tree
Showing 22 changed files with 59 additions and 312 deletions.
144 changes: 0 additions & 144 deletions src/MiniMoonBit.g4

This file was deleted.

2 changes: 1 addition & 1 deletion src/lib/lib_context.mbt → src/context.mbt
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
pub struct Ctx {
// args : Args
code : String
tokens : Array[Token]?
tokens : Array[@types.Token]?
// ast_tree : AstTree
// cfg_graph : CfgGraph
// symtab : SymTab
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
9 changes: 8 additions & 1 deletion src/lex/moon.pkg.json
Original file line number Diff line number Diff line change
@@ -1 +1,8 @@
{}
{
"import": [
{
"path": "breakinglead/moonbite",
"alias": "types"
}
]
}
3 changes: 3 additions & 0 deletions src/lex/pass_parser.mbt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
fn parse(ctx : @types.Ctx) -> @types.Ctx {
ctx
}
68 changes: 34 additions & 34 deletions src/lib/pass_tokenizer.mbt → src/lex/pass_tokenizer.mbt
Original file line number Diff line number Diff line change
Expand Up @@ -134,49 +134,49 @@ test "split whitespaces" {
assert_eq!(a, ["hello", "world", "why", "it", "is", "so::messy"])
}

pub fn tokenize(ctx : Ctx) -> Ctx {
pub fn tokenize(ctx : @types.Ctx) -> @types.Ctx {
let code = ctx.code
let strings = split_whitespaces_easier_version(code)
let tokens = strings.map(
fn(i) {
match i {
"let" => Token::LET
"fn" => Token::FN
"if" => Token::IF
"else" => Token::ELSE
"true" => Token::TRUE
"false" => Token::FALSE
"unit" => Token::UNIT
"bool" => Token::BOOL
"int" => Token::INT
"double" => Token::DOUBLE
"array" => Token::ARRAY
"not" => Token::NOT
"->" => Token::ARROW
":" => Token::COLON
";" => Token::SEMICOLON
"," => Token::COMMA
"." => Token::DOT
"+" => Token::ADD
"-" => Token::SUB
"*" => Token::MUL
"/" => Token::DIV
"=" => Token::ASSIGN
"==" => Token::EQ
"<=" => Token::LE
"(" => Token::LPAREN
")" => Token::RPAREN
"[" => Token::LBRACKET
"]" => Token::RBRACKET
"{" => Token::LCURLYBRACKET
"}" => Token::RCURLYBRACKET
"let" => @types.Token::LET
"fn" => @types.Token::FN
"if" => @types.Token::IF
"else" => @types.Token::ELSE
"true" => @types.Token::TRUE
"false" => @types.Token::FALSE
"unit" => @types.Token::UNIT
"bool" => @types.Token::BOOL
"int" => @types.Token::INT
"double" => @types.Token::DOUBLE
"array" => @types.Token::ARRAY
"not" => @types.Token::NOT
"->" => @types.Token::ARROW
":" => @types.Token::COLON
";" => @types.Token::SEMICOLON
"," => @types.Token::COMMA
"." => @types.Token::DOT
"+" => @types.Token::ADD
"-" => @types.Token::SUB
"*" => @types.Token::MUL
"/" => @types.Token::DIV
"=" => @types.Token::ASSIGN
"==" => @types.Token::EQ
"<=" => @types.Token::LE
"(" => @types.Token::LPAREN
")" => @types.Token::RPAREN
"[" => @types.Token::LBRACKET
"]" => @types.Token::RBRACKET
"{" => @types.Token::LCURLYBRACKET
"}" => @types.Token::RCURLYBRACKET
// s =>{
// // identifier
// // [a-zA-Z_][a-zA-Z0-9_]*;
// // if s.iter().all(fn(c) { is_alphabetic(c) || is_numeric(c) }) &&
// // s.iter().any(is_numeric) &&
// // is_alphabetic(s.iter().last().unwrap()) {
// // Token::IDENTIFIER(s)
// // @types.Token::IDENTIFIER(s)
// }
// }
t =>
Expand All @@ -185,9 +185,9 @@ pub fn tokenize(ctx : Ctx) -> Ctx {
t.iter().any(is_numeric) &&
is_alphabetic(t.iter().last().unwrap()),
) {
Token::IDENTIFIER(t)
@types.Token::IDENTIFIER(t)
} else {
Token::NUMBER(t)
@types.Token::NUMBER(t)
}
}
},
Expand Down
Empty file added src/lex/tokenizer.mbt
Empty file.
5 changes: 0 additions & 5 deletions src/lib/README.md

This file was deleted.

3 changes: 0 additions & 3 deletions src/lib/pass_parser.mbt

This file was deleted.

2 changes: 1 addition & 1 deletion src/main/main.mbt
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
fn main {
let code = @fs.read_to_string("run/tmp.in")
let ctx = @lib.Ctx::new(code) |> @lib.tokenize
let ctx = @moonbite.Ctx::new(code) |> @lex.tokenize
let result = ctx.finish()
@fs.write_to_string("run/tmp.out", result)
}
5 changes: 3 additions & 2 deletions src/main/moon.pkg.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
{
"is-main": true,
"import": [
"breakinglead/moonbite/lib",
"breakinglead/moonbite/",
"lijunchen/unstable_io/io",
"lijunchen/unstable_io/fs"
"lijunchen/unstable_io/fs",
"breakinglead/moonbite/lex"
]
}
Loading

0 comments on commit 592877f

Please sign in to comment.