写点什么

ParseTree 前路茫茫

  • 2009 年 4 月 26 日
  • 本文字数:1005 字

    阅读完需:约 3 分钟

ParseTree 是一个用来访问 Ruby 代码解析树的程序库,这个 Ruby 代码可以是源代码,也可以是已经加载到解释器的代码(即实时访问)。
ParseTree 的开发者之一,Ryan Davis,在最近的一篇博客中宣布了 ParseTree 的去留

ParseTree 在 ruby 1.9 上已经玩完了,我们也没打算让它在 ruby 1.9 上再运行起来。 主要原因在于 ruby 1.9 内部实现的改变,我们也试图获取一些钩子或者能让 ParseTree 工作的其它方法,但迟迟没有得到回复。

如果你想用 ParseTree 来获取一个运行时方法 / 块 / 过程的抽象语法树,那么我们只好说抱歉了。如果你只是想用 ParseTree 来做静态分析,那么你可以在一分钟内切换到 ruby_parser,它是 ParseTree 的一个最佳替代者。

所以我们看到,ParseTree 在 Ruby 1.8.x 上能很好地工作,但它不再提供对 Ruby 1.9.1 的支持。尽管我们也能通过一些办法,让 ParseTree 的部分功能工作起来。幸运的是,Ruby 1.9.x 带来了 Ripper ,一个用来解析 Ruby 代码和分析语法树的工具。

ruby_parser 是 Ryan Davis 编写的另一个 Ruby 语法分析器,它是纯 Ruby 实现的,并且在输出上和 ParseTree 保持一致。如果只是对源代码进行静态分析,那么最好的选择就是切换到ruby_parser,因为你不需要更改任何代码。Ruby_parser 还能提供抽象语法树节点的源码位置,这是Ruby 代码分析或者代码转换工具的必需信息。使用ruby_parser 可以让这些工具得以在大多数Ruby 实现上工作,而ParseTree 只能在MRI 上工作(虽然在一个接近完成版本的JRuby 上也可以,但还是缺少一些运行时特性)。

但跟ruby_parser 相比,ParseTree有一个重要特性,就是能实时访问解析树。有些库利用这个特性来对运行时Ruby 代码进行分析。比如Merb 的action arguments,一个用来分析方法形参的工具。这个功能已经被移植到JRuby 上(无需ParseTree),往Ruby 1.9.1 上的移植也已经通过methopara 项目完成。Methopara 是YARV 创建者Sasada Koichi 和 asakusa.rb (一个东京的 Ruby 用户组)的成员们共同完成的。 Methopara 项目给 Ruby 1.9.1 带来了新的 API

这个 gem 只提供给 Ruby-1.9.1。因为 Ruby18x 已经拥有 merb-action-args,而 Ruby-1.9.2 和它的后续者将会内置 Method#parameters。

那么,你是否在使用 ParseTree 呢?如果是,你可以用 ruby_parser 来做替代么?如果不行,ParseTree 在 Ruby-1.9.x 上的不可再用是否给你带来了很大的困扰呢?

查看英文原文: The Future of ParseTree

2009 年 4 月 26 日 03:41830

评论

发布
暂无评论
发现更多内容

小码农也有大目标,最新BAT大厂Java面试总结

Java架构师迁哥

【性能优化】小伙伴问我性能指标监控怎么做,这次我安排上了!!

冰河

tomcat 性能优化 监控 性能调优 jvm调优

解构 Dubbo-go 的核心注册引擎 Nacos

apache/dubbo-go

dubbogo

2020年最新最全BAT499道Java面试题(附答案):JVM+分布式+算法+锁+MQ+微服务+数据库【完美搞定金九银十】

编程 程序员 面试 架构师 计算机

在审计工作中如何运用区块链技术

CECBC

区块链 金融 审计

开发者说:愿为你点亮“懂环境知冷暖”智能的灯

华为云开发者联盟

人工智能 物联网 NB-IoT 路灯 华为IoT平台

大作业

Geek_196d0f

9省市新基建规划比较:区块链成标配,多地提及数字资产交易

CECBC

区块链 数字资产 新基建

食堂就餐卡系统设计

Gosling

极客大学架构师训练营

第一周学习心得

alpha

极客大学架构师训练营

架构师训练营 大作业(一)

陆不得

iOS面试梳理 - 2020年8月初

iOSer

ios 面试

一个敏捷教练成长必备的8项技能

华为云开发者联盟

程序员 敏捷 敏捷开发 敏捷教练 技术技能树

架构师0期大作业2

Nan Jiang

架构师训练营第 1 期 -- 第一周学习总结

发酵的死神

极客大学架构师训练营

超详细超级细B站视频爬取

海绵宝宝re儿

python 爬虫 多进程

第一周总结

黄立

架构师 架构总结

防止重复点击2.0

老菜鸟

Vue

我在项目内使用了设计模式后,同事直呼看不懂

学习 编程 程序员 架构师

test

leesofte

test

架构师训练营第一周--UML图练习&学习总结

我是谁

极客大学架构师训练营

架构师0期大作业1

Nan Jiang

10大高性能开发宝石

浩宇の天尚

你有没有想过为什么交易和退款要拆开不同的表?

程序员小航

设计 开发 交易 拆表

极客大学架构师训练营 0 期 结课作业

chun1123

架构师 架构师技能

Spring-技术专题-重试机制Retry机制

浩宇の天尚

食堂就餐卡系统设计

发酵的死神

极客大学架构师训练营

食堂就餐卡系统设计

天天向上

极客大学架构师训练营

大作业

区块链如何使金融服务更安全更公平

CECBC

区块链 金融

架构师训练营大作业一

qihuajun

ParseTree前路茫茫_Ruby_Werner Schuster_InfoQ精选文章