0.0.0-dev1 2020年7月21日

#88 in #ruby

MIT 许可证

120KB
3K SLoC

背景

本项目旨在使用解析组合器创建Ruby语言的完整词法分析器。

MRI的差异

  • 控制字符可以被递归转义
    "\C-\C-\\n" # => "\n"
    

实现说明

表达式 / 语句 / 组

  • 在实现中有表达式和语句的区别
  • Token 包含一个列表的语句(每个项目都被视为一个语句)
  • Token 包含构成单个语句的标记
  • 块和表达式标记可以通过括号嵌套使用
    (2 + (puts "hi"; 4 - 8;;)) * 5
    #hi
    #=> -10
    

输入标记化

Input 类型可以被扩展以跟踪布尔字段,表示标记器的输入是否完整或部分完整

我还没有决定是否应该使用开始/结束标记,但它们可能对处理复杂对象很有用

待办事项

~2MB

~41K SLoC
memchr