lexeme和token

最近在看《Crafting Interpreters》,梳理了一下 lexeme 和 token。

lexeme

定义

源代码中的"连续字符序列"。

示例

复制代码
a = 1
sum = a + 2

上面两行代码总共包含 8 个 lexeme: a = 1 sum = a + 2。

token

定义

将 lexeme 分类并附加一些额外的属性就得到 token。根据定义,token 包含两部分:类别(token type, 如:IDENTIFIER, STRING, NUMBER... )和可选属性(如:lexeme, literal, line)

示例

复制代码
a = 1
sum = a + 2

上面两行代码总共包含 8 个 token: a = 1 sum = a + 2。

复制代码
class Token:
    # 这里的 literal Java 里面用的类型是 Object, Python 里面类型注解暂时用 Any
    def __init__(self, token_type: TokenType, lexeme: str, literal: Any, line: int) -> None:
        self.token_type = token_type
        self.lexeme  = lexeme
        self.literal = literal
        self.line = line

    def __str__(self) -> str:
        return f'{self.token_type} {self.lexeme} {self.literal} {self.line}'

假设 token 的定义如上,那么 第一个 token a 的 token_type 为 identifier, lexeme 为 "a", literal 为 "a", line(行号) 为 1。

欢迎搜索及关注:编程人(a_codists)

相关推荐
天赐范式1 小时前
天赐范式第182天:让变异开始存活——主线重启与变异存续条件
python·ar模型·数字生命·天赐范式·动态运行时·稳态方差·变异存续
lusklusklusk1 小时前
Python 四大数据结构详解:元组、列表、集合、字典的特点与增删改查
数据结构·windows·python
打工仔折腾 AI2 小时前
把模型切换交给平台:用蓝耘智能路由搭建商品评论分析工具
java·服务器·前端·后端·python·性能优化·ai agent 实战
ynchyong2 小时前
python list 地常用操作
开发语言·python
梦在远山后2 小时前
PostgreSQL 锁与死锁:结合 DevMind 讲清楚
python·postgresql·agent
郝学胜_神的一滴2 小时前
AI 编程智能体 01:普通程序员的下一个逆天改命风口
人工智能·python
zh路西法2 小时前
【ResNet18】从图像到视觉特征:卷积神经网络如何理解图像
pytorch·python·神经网络·cnn·resnet·resnet18
外收内放3 小时前
Python基础语法练习题(40-42)
开发语言·python
m0_547486663 小时前
《数据挖掘:理论、方法与实践基于Python语言》全套PPT课件2026(中国地质大学)
人工智能·python·数据挖掘