当前位置: 首页 > 知识库问答 >
问题:

如何访问ANTLR AST中的隐藏令牌?

郜琦
2023-03-14

共有1个答案

商高谊
2023-03-14

可以通过CommonTokenStream.getTokens()访问标记的完整列表,您可以在调用树遍历器之前调用该标记。令牌列表将是Walker的一个参数。没有必要更改CommonTree,除非您希望将恢复的信息嵌入到树中。

我使用令牌列表将隐藏的令牌(如注释和显式行号)与最接近的可见令牌关联起来。这是在对AST进行后处理并查看行、列和字符索引信息后完成的,这些信息可用于列表中的令牌和AST中的节点。

在AST构建过程中,我试图这样做,结果导致了黑客攻击、不可维护的代码。后处理代码OTOH是编程-101算法。

 类似资料:
  • 问题内容: 我正在将Laravel用于Web应用程序。上传了生产过程中的所有内容,发现其中的某些文件可以通过url直接访问- 如何避免这种直接访问? 问题答案: 您使用的是错误的Web服务器配置。将您的Web服务器指向目录并重新启动它。 对于 Apache, 您可以使用以下指令: 对于 nginx ,您应该更改以下行: 完成此操作后,将不再可以从浏览器访问所有Laravel文件。

  • 我正在使用Laravel的web应用程序。上传了制作中的所有内容,发现一些文件可以通过url直接访问——例如http://example.com/composer.json 如何避免直接访问?

  • 我想让我的Bash脚本对最终用户来说更加优雅。当Bash执行命令时,如何隐藏输出? 例如,当Bash执行时 以下内容将显示给执行Bash的用户: 现在我想对用户隐藏这一点,而是显示: 我怎样才能完成这项任务?我一定会帮助使脚本更加用户友好。如果发生错误,则应向用户显示。 我想知道如何显示相同的消息,而一组命令正在执行。

  • 在实现selenium测试之前,我尝试在工作中为selenium测试解决一个recaptcha。 我使用的用例:https://www.google.com/recaptcha/api2/demo 系统也是如此。我试图找到验证码令牌,但每次它都返回null元素。到目前为止,硒的主要作用是: Bys. CssSelector等也是如此。 我已经在正确的IFrame中了,因为页面源已正确打印出来,但通

  • 这不是直截了当的问题。在我的例子中,外部类变量和内部类setter方法的参数名称是相同的。比如: 现在我不能用初始化外部类实例变量p,因为它指示内部类。同样,我不能执行会出现错误。现在,我如何分配外部p,使内部类方法的参数与名称p相同?

  • 我想要一些关于如何在隐式授予流中使用ID令牌和访问令牌的澄清。我有一个使用msal.js for Angular包的Angular SPA和一个Web API。API不调用任何外部服务,如MSFT Graph。后端仅使用JWT中的角色声明来建立对API功能的RBAC授权。 这个文档写着:https://docs.microsoft.com/en-us/azure/active-directory/