项目目录
项目地址
画质有点渣
其实不应该创建太多的包,因为里面其实只有一个有效文件(mod.rs和test.rs算是辅助) . 所以说目录可以更简单一些.
token
在上文中提到了把token看为字符串, 而其大致分为两种.
- 我们预先定义的
比如 +,-,*,/,if,return,fn和let等 - 留给用户的
比如: 变量名,整数
//token/token.rs
//不想下载第三方包, 所以这样子是一个可接受的选择
use std::collections::HashMap;
pub fn lookup_ident(ident:& String) -> TokenType {
let mmap: HashMap<String,TokenType> = {
let mut map = HashMap::new();
map.insert("fn".to_string(), FUNCTION);
map.insert("let".to_string(), LET);
map.insert("true".to_string(),TRUE);
map.insert("false".to_string(),FALSE)