intellij-idea - 我们如何使用 Intellij ANTLR V4 插件测试 ANTLR Lexer 规则?
问题描述
intellij 中的 ANTLR V4 插件提供了一个选项,可以使用右键单击窗口中的“测试规则”选项来测试语法中的解析器规则。但是,对于 Lexer 规则,此选项是灰色的。如何使用此插件测试 Lexer 规则?
解决方案
如果在预览面板的源视图中按住 Ctrl 键并将鼠标悬停在您的输入上,您可以在指针下获得令牌的弹出预览。您可以在 github 上提取 Intellij Plugin read.me并搜索“ctrl key”以获取示例。您仍然需要选择一个解析规则来调试以获取此输出。
将鼠标悬停在所有内容上以获得全貌很有用,但有点乏味。
grun
您可能会发现将别名与-tokens
选项或替代项一起使用更有用grun <GrammarName> tokens
(使用tokens
而不是启动规则只会运行词法分析器并将 tokenStream 转储到 sysout)。它不是插件的一部分,但通常是从命令行(甚至是 IntelliJ 中的终端选项卡)验证词法分析器规则的一种非常有用的方法。您需要运行antlr
命令来生成源代码,并编译 java 源代码以运行grun
别名。
( ANTLR 主页上的快速入门向您展示了如何设置grun
别名。
推荐阅读
- java - Servlet @Resource 读取 getInitParameters
- node.js - 如何从 express/node 应用程序在“.localhost”上设置 cookie,以便可以从“something.localhost”访问它
- c# - 如何使用 Gecko 导航到 reactJS 子页面并捕获 DocumentCompleted 事件
- wordpress - 从自定义 wordpress 配置文件连接到 mysql docker 服务
- python - 带有关键字args的python函数问题
- python - 如何在python中的两个不同y轴上绘制两个变量?
- php - MySQL 选择语句不适用于`*`
- python - Python中sklearn包中的Gaussianmixture有什么问题?
- node.js - 有什么方法可以将 .xlsx 文件导入 nodejs 并使用 mongodb 作为数据库?
- amazon-web-services - 使用 AWS SQS 和 Lambda 作为消费者的优先级队列