微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 ANTLR V4 提取未定义的全局变量

如何解决如何使用 ANTLR V4 提取未定义的全局变量

我有一个 Python 语法和一个文本框,用户可以在其中编写简单的 Python 表达式,例如这个:

(lambda x: str(x))(wanted_input)

然后用wanted_input 注入表达式(通过使用在我们执行python expr 时创建的人工上下文)。

我很感兴趣是否可以使用解析树侦听器来提取wanted_input,它们基​​本上是未定义的全局变量

解决方法

是的,这是可能的。

我相信只有三种类型的表达式可以引入新的变量名称:lambdas、列表推导式和生成器推导式。因此,在您的侦听器或访问者中,您需要在输入这三种类型的表达式时将新引入的变量添加到当前作用域,然后在退出时再次删除它们(确保处理变量被隐藏的情况 - 某种堆栈通常是这里选择的工具)。然后当你看到一个变量时,你只需检查它是否在当前作用域中定义。如果不是,它就是您要提取的变量之一。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。