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)

相关推荐
quantdash_cc41 分钟前
从实时行情到价格观察表:用 Python 和 Pandas 构建策略输入数据
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
镜子AI42 分钟前
镜子AI工程实践:用 Python 做 GEO 实体一致性审计,并自动生成 JSON-LD 结构化数据
人工智能·python·json
2601_962885725 小时前
如何用 Python 计算 VaR 和 CVaR(在险价值)?
开发语言·python
李航19835 小时前
DeepSeekAI建模三 - 实战建模一组柜子
人工智能·python·计算机视觉·ai·ai编程
严谨的麻辣烫6 小时前
静态代理 IP 的出口一致性如何验证?Python 请求检测与异常排查
开发语言·python·http·网络安全
我命由我123457 小时前
5-1.Python 编码进阶 - 函数进阶(参数、返回值、递归、函数作为参数传递、lambda 匿名函数)
java·服务器·数据库·后端·python·java-ee·python3.11
FITA阿泽要努力7 小时前
Fork Agent:共享上下文的艺术
开发语言·python·agent
DeeGLMath7 小时前
optimtool最新版研究梯度优化
python·optimtool·梯度优化
坐吃山猪7 小时前
Python-Hermite基函数
开发语言·python
空~自由8 小时前
Python 正则 . * ? .* .*? (.*?) 通俗讲解
开发语言·python