首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java解析器重命名变量

Java解析器重命名变量
EN

Stack Overflow用户
提问于 2012-03-09 00:35:37
回答 1查看 510关注 0票数 0

我需要为Java编程语言编写一个解析器。我已经看到了一些实现(JavaCC、SableCC),我认为我可以处理它。

问题是我需要重命名变量。我可以使用解析器来做这件事吗?

如果是,是如何实现的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-09 00:54:15

如果您只想全局重命名变量,则不需要解析器。您所需要的只是一个(孤立的) lexer,它可以挑选出标识符,这样您就可以替换它们。您可以从任何具有Java语法的解析器生成器中获得这样的词法分析器,只需忽略解析器部分。这应该会给你省去很多麻烦。

如果您尝试使用解析器来构建AST,那么将很容易确定标识符(将有标识符树节点),甚至可能通过粉碎树节点来替换它们。您的问题将是重新生成合法的源文本。大多数解析器生成器不提供文本到树到文本的功能。

如果你想根据作用域重命名变量,你需要一个解析器,以及全名和类型解析。这比单纯的解析器难得多;Java7中关于名称查找的规则相当复杂。同样,Java语法中也有解析器生成器;但在这种情况下,除非您想实现名称和类型解析,否则它们不会对您有所帮助。你会发现这比你预期的要多得多。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9621259

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档