如果双引号字符串以转义反斜杠结尾,则词法分析器规则会保持匹配字符,就好像它们是带引号字符串的一部分一样

2024-01-01

如果双引号字符串以转义的反斜杠结尾,则词法分析器规则会变得贪婪并保持匹配字符,就好像它们是带引号的字符串的一部分一样。然后词法分析器认为实际开始下一个带引号的字符串的双引号正在结束第一个字符串,并在后面的字符上给出语法错误。我们需要调整词法分析器规则来解决这个问题。

词法分析器规则在 .g4 文件类型中设置。

例子:string demo = "a\\b" + "c";工作正常,但字符串 demo1 ="a\\" + "c"给出语法错误,指出表达式是无效字符串。

另一个例子:string demo = "a\\b" + "\\c";也给出了语法错误,与上面的错误相同。

如果有人有这方面的经验,我可以知道如何为此编写词法分析器规则吗?


反斜杠很特殊,它充当字符串内的转义字符。如果你想要字符串中的一个,你必须将它加倍\\.

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

如果双引号字符串以转义反斜杠结尾,则词法分析器规则会保持匹配字符,就好像它们是带引号字符串的一部分一样 的相关文章

随机推荐

  • 计算每个场点位于轮廓内的频率

    我正在处理二维地理数据 我有一长串轮廓路径 现在我想确定域中的每个点有多少个轮廓 即我想计算轮廓表示的特征的空间频率分布 为了说明我想要做什么 这是第一个非常幼稚的实现 import numpy as np from shapely geo
  • 实例新类型(Golang)

    谁能告诉我如何从字符串创建 Type 的新实例 反映 有一些示例 但它们适用于较旧的 Go 1 之前的版本 语言 所以 如果我正确理解你的问题 你是在问当你只有类型名称作为字符串时如何创建一个对象 例如 您可能有一个字符串 MyStruct
  • java.io.File:访问文件名编码无效的文件

    因为 java io File 的构造函数采用 java lang String 作为参数 所以似乎无法告诉它在访问文件系统层时需要哪种文件名编码 因此 当您通常使用 UTF 8 作为文件名编码并且有一些文件名包含编码为 ISO 8859
  • Rails 将脚本作为后台作业执行

    我有一个已作为独立功能实现的 ruby 脚本 现在我想在我的 Rails 环境中执行这个脚本 但将其作为后台作业执行会增加难度 因为它需要大量的时间处理 添加delayed job gem后 我尝试调用以下句子 delay system r
  • 发现 ASP.NET Core 中的通用控制器

    我正在尝试创建一个像这样的通用控制器 Route api controller public class OrdersController
  • 如何摆脱 wasm_bindgen 包装结构中的生命周期

    目前我有一些类似于以下的代码 Lifetime of child is enforced to be valid as far as Parent is valid struct Child lt a gt some data i32 ph
  • MySQL可重复读隔离级别和丢失更新现象

    In 高性能 Java 持久性 https vladmihalcea com books high performance java persistence 书的6 3 3 3部分写道 在MySQL可重复读隔离级别中可能会出现丢失更新现象
  • 如何使用Python的加密模块加载RSA公钥

    我正在尝试使用加载公钥密码学 https cryptography io 模块 这就是密钥的样子 gt gt gt print pubkey BEGIN RSA PUBLIC KEY MIGfMA0GCSqGSIb3DQEBAQUAA4GN
  • 为什么 Scala 的 Symbol 不被接受作为列引用?

    尝试 Spark SQL 的示例 它们似乎工作得很好 除非需要表达式 scala gt val teenagers people where age gt 10 where age lt 19 select name
  • Java 库运行时与编译时

    当使用 Tomcat 作为应用程序服务器设置 Java Web 应用程序时 我经常对库何时可用感到困惑 通过 Stack Overflow 上的一些讨论 我了解到一些库 jar 文件在运行时可用 而另一些则在编译时可用 我经常会遇到错误 并
  • UITableView选择的indexpath值给出错误

    Team 我有 UITableView 其中有 50 个以上的单元格数 每个单元格的宽度为 60 当我滚动到 20 个单元格时 然后点击任何单元格 它给出了单元格值之上的索引路径值 而不是单击单元格值 内部 CellForRowAtInde
  • 启用包还原时如何指定 nuget 包的位置?

    我正在开发 net 解决方案并使用 nuget 进行包管理 我选择了 启用 Nuget 包还原 选项 以便 nuget 包不会签入源代码管理 在此之前 我有一个与解决方案处于同一级别的 nuget config 文件 其中我包含以下内容 使
  • 在Silverlight中,如何知道代码是否在UI线程中运行?

    基本上我需要知道是否需要 Dispatcher BeginInvoke 或者是否不需要 Thanks 您可以使用Dispatcher CheckAccess http msdn microsoft com en us library sys
  • useEffect 运行后测试更改后的状态

    我使用 ReactJs jest 和 React 测试库 我有这个代码 const App data gt const state setState useState after useEffect runs state should be
  • git 重新连接到远程存储库

    我犯了一个巨大的错误 导致我的项目的本地版本不再与其曾经关联的远程存储库连接 是否有一些技巧可以重新建立连接 关联而不破坏代码的本地版本 你试过了吗 git remote add track master origin url to git
  • Linux 下双显示器设置上的 SDL 假全屏模式

    使用SDL 1 3我想在linux下创建假全屏SDL Window 如果我只有一台显示器 这很容易 我刚刚获得当前显示模式并创建了一个窗口 SDL GetDesktopDisplayMode 0 mode SDL Window win SD
  • Java 有 uudecoding 的标准机制吗?

    我正在编写一个 Java 程序来从 POP3 电子邮件下载附件 最初 如果内容类型经过验证 我会通过获取 MimePart 的输入流来实现此目的 然后我可以简单地通过 FileOutputStream 将输入流写入本地文件 然而 我遇到的一
  • 使用 JSTL 循环遍历 Map [重复]

    这个问题在这里已经有答案了 我正在寻找 JSTL 循环Map
  • 如何在 Firebase 中按应用版本阻止用户

    我有一个 Android 应用程序 它使用 Firebase 作为一般聊天室 用户输入昵称并开始聊天 实施没有问题 我的应用程序运行良好 但问题在于数据使用 由于实施错误 数据使用率过高 在应用程序版本 14 中 我正在获取聊天室中的所有数
  • 如果双引号字符串以转义反斜杠结尾,则词法分析器规则会保持匹配字符,就好像它们是带引号字符串的一部分一样

    如果双引号字符串以转义的反斜杠结尾 则词法分析器规则会变得贪婪并保持匹配字符 就好像它们是带引号的字符串的一部分一样 然后词法分析器认为实际开始下一个带引号的字符串的双引号正在结束第一个字符串 并在后面的字符上给出语法错误 我们需要调整词法