用rust写一个玩具解释器3

本文档介绍了使用Rust编写一个玩具解释器的第三部分,重点关注项目的目录结构和令牌化过程。项目中,尽管只有一个核心文件,但作者建议简化目录。令牌被分为预定义操作符如+、-、*、/、if、return、fn、let,以及用户自定义的如变量名和整数。
摘要由CSDN通过智能技术生成

项目目录

项目地址
项目目录
画质有点渣
其实不应该创建太多的包,因为里面其实只有一个有效文件(mod.rs和test.rs算是辅助) . 所以说目录可以更简单一些.

token

在上文中提到了把token看为字符串, 而其大致分为两种.

  1. 我们预先定义的
    比如 +,-,*,/,if,return,fn和let等
  2. 留给用户的
    比如: 变量名,整数
//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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值