Joureny 的核心功能是实现 Rails 路由描述 DSL 的解析功能 一个 path. e.g. /page/:id(/:action)(.:format)
DSL 语法解析器使用的是 Ruby 标准库中的 Racc,自动生成的 整个 lib 的核心是 parser.y 这个文件 这个文件定义了 Rails 路由 DSL 的 BNF 解析的过程和一般语言的一样,token 化,语法解析,从源码生成 AST AST 中的每个节点都定义了一个 class 在 nodes/node.rb 中定义 每个节点都是一个终结符号。(要搞懂 joureny 最主要的还是需要你有一定的编译原理知识, 和懂得.y 文件的语法)
这就是 Joureny 和核心功能.剩下的 gtg/, nfa/ 和 visitors.rb 文件完成了另一个功能 是路由表的解析过程可视化功能.会把路由的匹配转换为 NFA 的状态转换图.使用 svg 绘图生成 对应的 html 文件. 这一部分没有细看.
上述理解只是个人看法.可能有错误.欢迎拍砖吐槽.