0.0.0-dev1 |
|
---|
#88 in #ruby
120KB
3K SLoC
背景
本项目旨在使用解析组合器创建Ruby语言的完整词法分析器。
MRI的差异
- 控制字符可以被递归转义
"\C-\C-\\n" # => "\n"
实现说明
表达式 / 语句 / 组
- 在实现中有表达式和语句的区别
Token
包含一个列表的语句(每个项目都被视为一个语句)Token
包含构成单个语句的标记- 块和表达式标记可以通过括号嵌套使用
(2 + (puts "hi"; 4 - 8;;)) * 5 #hi #=> -10
输入标记化
Input
类型可以被扩展以跟踪布尔字段,表示标记器的输入是否完整或部分完整
我还没有决定是否应该使用开始/结束标记,但它们可能对处理复杂对象很有用
待办事项
- http://doc.ruby-lang.org.cn/core-2.7.0/doc/syntax/literals_rdoc.html
- 有理数 / 复数数值
- 数组
- 哈希表
- 范围
- 正则表达式
- 过程
- 字符串
- 依赖项
~2MB
~41K SLoC
memchr