ANTLR4:隐式或显式标记定义

2024-04-05

在 ANTLR4 中使用显式标记定义有哪些优点和缺点?我发现单括号中的文本比创建单独的标记并使用它代替文本更具描述性且更易于使用。

E.g.:

grammar SimpleTest;

top: library | module ;

library: 'library' library_name ';' ;
library_name: IDENTIFIER;         

module: MODULE module_name ';' ;
module_name: IDENTIFIER;

MODULE: 'module' ;
IDENTIFIER: [a-zA-Z0-9]+;

生成的令牌是:

T__0=1
T__1=2
MODULE=3
IDENTIFIER=4
'library'=1
';'=2
'module'=3

如果我对此不感兴趣'library'“令牌”,因为规则已经确定了我要匹配的内容,而且无论如何我都会跳过它,将其替换为有任何意义吗LIBRARY和一个令牌声明? (然后代币的数量将会增加。)为什么这是 ANTLRWorks 中的警告?


实际上,隐式标记和显式标记之间存在差异:

来自“权威 ANTLR4 参考”,第 76 页:

ANTLR 收集并分离所有字符串文字和词法分析器 来自解析器规则的规则。诸如“enum”之类的文字成为词汇 规则并立即在解析器规则之后但在 明确的词汇规则.

ANTLR 词法分析器解决了之间的歧义 词汇规则倾向于首先指定的规则。

突出我的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ANTLR4:隐式或显式标记定义 的相关文章

  • 如何使antlr4完全标记化终端节点

    我正在尝试使用 Antlr 制作一个非常简单的解析器 它基本上标记了一系列 分隔标识符 我做了一个简单的语法 r STRUCTURE SELECTOR STRUCTURE SELECTOR ID STRUCTURE SELECTOR ID
  • 如何编写 GraphQL 查询

    我有一个有效的网络 graphql 查询 me on Student profile fullName emailId mobileNumber civilId address city state country zipCode user
  • OAuth 2.0 令牌对于提供商来说永远是唯一的吗?

    当 OAuth 2 0 提供商颁发令牌时 该令牌值对于提供商而言是否永远是唯一的 或者是否有可能在未来的某个时候 大概在令牌过期后 可能会为不同的用户发行具有相同值的另一个令牌 在搜索中 我发现了很多有关令牌过期的信息 但没有关于该令牌值将
  • python 2.7中没有名为antlr4的模块

    我想将 ANTLR4 与 Python 2 7 一起使用 为此我执行了以下操作 我安装了这个包antlr4 4 6 1在 Arch Linux 上sudo pacman S antlr4 我写了一个MyGrammar g4文件并成功生成了词
  • C 编程:预处理器、宏作为标记

    我正在尝试做一些概念上与此类似的事情 但似乎无法让它发挥作用 最后显示错误 任何想法 include
  • 如何生成24小时后过期的唯一令牌?

    我有一个 WCF Web 服务来检查用户是否有效 如果用户有效 我想生成一个 24 小时后过期的令牌 public bool authenticateUserManual string userName string password st
  • Lucene 3 上的“令牌”列表

    我是 Lucene 的新手 我开始学习版本 3 分支 但有一件事我不明白 显然是因为我在该主题上没有经验 在 Lucene 2 9 中 如果我想要一个令牌列表 我会创建一个 Token 类的 ArrayList 例如 ArrayList 这
  • Android:Google 登录令牌无效

    我通过 Android 中的 google 登录收到的令牌收到错误 error invalid token error description 无效值 我还注意到 与我在 iOS 中获得的令牌相比 我的令牌看起来有点短 ya29 4AFYx
  • 将 WebApp 授权给 ADFS 以访问 Dynamics CRM Web API

    我有一个 Web 应用程序需要与 Dynamics CRM 365 Web API 通信 Dynamics CRM 配置为 ADFS 上的依赖方 服务器是 Windows Server 2016 一切都在本地 而不是在 Azure 上 我为
  • 使用 Antlr4 解析任意分隔符

    我尝试在 Antlr4 中创建一个接受正则表达式的语法由任意字符分隔 与 Perl 中的类似 我怎样才能实现这个目标 需要明确的是 我的问题不是正则表达式本身 实际上我不在 Antlr 中处理 而是在访问者中处理 而是分隔符 我可以轻松地为
  • 使用antlr4获取预处理器行并解析C代码

    我正在使用 Antlr4 来解析 C 代码 并使用以下语法来解析 链接到 C g4 https github com antlr grammars v4 blob master c C g4 上面的语法默认不提供任何解析规则来获取预处理器语
  • 自动解析 PHP,将 PHP 代码与 HTML 分离

    我正在开发一个大型 PHP 代码库 我想将 PHP 代码与 HTML 和 JavaScript 分开 我需要对 PHP 代码进行多次自动搜索和替换 对 HTML 进行不同的搜索和替换 对 JS 进行不同的自动搜索和替换 有没有一个好的解析器
  • 在 Angular 4 中处理来自 Api 的过期令牌

    我需要帮助来处理我的角度应用程序中的过期令牌 我的 api 已过期 但我的问题是当我忘记注销我的角度应用程序时 一段时间后 我仍然可以访问主页但没有数据 我能做点什么吗 有没有可以处理这个问题的库 或者有什么我可以安装的吗 更好 如果我什么
  • Keycloak-js updateToken(minValidity) 需要澄清

    我在Keycloak js中阅读了很多该方法的示例 但没有对以下方法进行明确的解释 updateToken minValidity number KeycloakPromise
  • “WSGIRequest”对象没有属性“successful_authenticator”

    我已经创建了一个像这样的身份验证类 RESTful API 的令牌身份验证 是否应该定期更改令牌 https stackoverflow com questions 14567586 token authentication for res
  • antlr4-tool 在 Win10 中失败,并显示:错误:命令失败:哪个 java

    在Win10中运行 为了尝试在Node JS中创建解析器 我安装了ANTLR4工具 npm install save dev antlr4 tool Ran c prj parser node modules bin antlr4 tool
  • Antlr3 匹配没有空格的标记

    给定输入 term gt 1 数字 1 和比较运算符 gt 应该在 AST 中生成单独的节点 如何才能实现这一目标 在我的测试中 仅当 c 和 1 用空格分隔时才会发生匹配 如下所示 term lt 1 当前语法 startExpressi
  • 在简单整数列表语法中使用 AntLR4 中的访问者

    我是 AntLR 的新手 我使用的是AntLR4版本 我编写了以下属性语法 它识别整数列表并在末尾打印列表的总和 list g4 grammar list header import java util List import java u
  • 如何使用放心获取 Rest API 中的授权令牌?是否可以?

    目前使用 Postman 我必须向 API URL login 发送请求 并传递用户名和密码 作为回报 我得到令牌 如下所示 请求示例 login POST Body username admin password admin Return
  • 来自 ANTLR 解析树的 Python AST?

    我找到了一个ANTLR4 Python3 语法 https github com bkiers python3 parser 但它会生成一个解析树 该树通常有许多无用的节点 我正在寻找一个已知的包来从该解析树获取 Python AST 这样

随机推荐

  • 有没有办法获取特定城市的所有 Facebook 活动?

    我可以获取特定城市的所有 Facebook 活动吗 我所需要的只是事件 ID 没有别的 它应该是所有事件 公共 而不仅仅是某人的事件 Facebook 会让我们获取这些信息吗 Elmcity 对活动标题中的关键字进行简单搜索 例如尝试 兰开
  • 使滚动条仅在将鼠标悬停在 Div 上时可见?

    我试图弄清楚如何拥有一个可滚动的 div 仅在悬停时显示其滚动条 示例是 Google 图片搜索 在下图中 您可以看到左侧边栏在将鼠标悬停在其上方之前似乎无法滚动 这可以通过 CSS 实现还是需要 Javascript 如果可能的话 也许一
  • NodeJS 从 AWS S3 存储桶下载文件

    我正在尝试在 NodeJS Express 中创建一个端点 用于从我的 AWS S3 存储桶下载内容 它运行良好 我可以在客户端下载文件 但我也可以在 网络 选项卡中看到流预览 这很烦人 QUESTION 我想知道我所做的是否正确并且是一个
  • Rundeck - 我创建的用于运行 python 脚本的作业调用不同的 python

    我对使用 Rundeck 还很陌生 我的工作应该是执行一个 python 文件 只是为了给您一个概述 我的设备有 python 3 8 5 和 3 7 Rundeck 使用版本 3 7 即使在我的环境变量中我将 PY HOME 设置为版本
  • 通过 Facebook Open Graph API 搜索视频

    我知道我们可以使用以下方法在 Open Graph API 中搜索公共对象 例如帖子 事件 签到 但是我无法搜索视频对象 有没有办法使用标题或描述在 Facebook 中搜索视频 您可以通过 FQL 使用某些属性搜索视频 http deve
  • background.html 与 background.js - chrome 扩展

    我在这里真的很困惑 我想了解 chrome 扩展的文件架构 我正在阅读这篇文档 https developer chrome com extensions overview arch https developer chrome com e
  • 尝试将服务注入角度组件时出错“异常:无法解析组件的所有参数”,为什么?

    我已经用 Angular 构建了一个基本的应用程序 但遇到了一个奇怪的问题 我无法将服务注入到我的一个组件中 然而 它可以很好地注入我创建的其他三个组件中的任何一个 对于初学者来说 这是服务 import Injectable from a
  • Node.js 捕获生成后抛出的 ENOMEM 错误

    我的 Node js 脚本因使用时抛出 ENOMEM 内存不足 errnoException 而崩溃spawn http nodejs org api child process html 错误 child process js 935 t
  • 在 Altair 中将图例分成多列

    抱歉无法提供大量代码 一切都是互连的 现在不可能 我的问题是我创建了一个点图作为 交互式图例 legend alt Chart source mark point encode y alt Y STATE axis alt Axis ori
  • 从列表中删除对象[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 如果我需要从 List 中删除一个对象 您更喜欢删除哪一个 假设字符串 abc linkedList 还是 ArrayList 我认为 两者
  • 解析具有未定义值的 JSON?

    可能的重复 解析或修复具有特殊 未定义 值的 JSON https stackoverflow com questions 59304404 parsing or fixing jsons with special undefined va
  • Hibernate:继承和关系映射+泛型

    我将 spring data JPA 与 hibernate 一起使用 我很难让我的继承和关系映射正常工作 Entity Inheritance strategy InheritanceType SINGLE TABLE Table nam
  • Unity2D - 如何在 2D 游戏中围绕圆移动和旋转游戏对象?

    我正在尝试围绕目标行星移动和旋转一些云 目前只是一个圆圈 我把动作搞定了 但旋转部分我真的很挣扎 我希望它按其在圆上的位置成比例旋转 但我一直试图猜测正确的数字 这是代码 public class CloudMovement MonoBeh
  • 对 Pandas 中的组进行优雅的重采样

    对于给定的 pandas 数据框 称为full df看起来像 index id timestamp data 1 1 2017 01 01 10 0 2 1 2017 02 01 11 0 3 1 2017 04 01 13 0 4 2 2
  • 无法从 Textmate 构建 XCode 4 项目

    我在 TextMate 中打开了一个新创建的 XCode 4 项目 通过按照手册的建议将项目文件夹放在 TextMate 图标上 并尝试使用 Command B 快捷方式构建它并选择 2 进行 XCode 构建 我收到以下错误 xcodeb
  • Android 中的 Joda-Time 错误:无法识别日期时间区域 id 'America/New_York'

    例外 引起原因 java lang IllegalArgumentException 无法识别日期时间区域 id America New York 安卓代码 DateTime dt new DateTime DateTimeZone dtZ
  • 确保 Firebase 托管链接只能从特定 IP 访问

    我在网络应用程序中使用 Angular 4 AngularFire 2 和 Firebase 我有条件使用 firebase 作为后端服务 因为该应用程序只能在办公室内使用 我想知道是否有任何方法可以配置一些 firebase 规则或任何东
  • 在Excel中使用单个切片器控制两个具有不同数据源的数据透视表

    我在 Excel 文件中使用切片器时遇到问题 在我的 Excel 文件中 我有两个工作表 在第一个中 有一个数据透视表从 OLAP 多维数据集获取数据 在第二个中 我有一个数据透视表从另一个 Excel 文件获取数据 我想要一个名为 组织
  • 禁用浏览器快捷键

    我本质上正在尝试创建一个 信息亭 我有一个 Web 应用程序 我希望它成为屏幕上唯一可访问的内容 我知道 chrome 有一个 kiosk 模式 快捷方式 chrome exe kiosk www url com 这可以处理自动全屏 但禁用
  • ANTLR4:隐式或显式标记定义

    在 ANTLR4 中使用显式标记定义有哪些优点和缺点 我发现单括号中的文本比创建单独的标记并使用它代替文本更具描述性且更易于使用 E g grammar SimpleTest top library module library libra