解析器 - 调用 yytext 时出现分段错误

2024-04-17

我的解析器正在识别语法并使用 yylineno 指示正确的错误行。我想打印导致错误的符号。

int yyerror(string s)
{
  extern int yylineno;  // defined and maintained in lex.yy.c
  extern char *yytext;  // defined and maintained in lex.yy.c

  cerr << "error: " << s << " -> " << yytext << " @ line " << yylineno << endl;
  //exit(1);
}

当我写一些语法不可接受的内容时,我会收到此错误:

错误:语法错误 -> 分段错误

我不应该使用 yytext 吗?如果不是,哪个变量包含导致语法错误的符号?

Thanks


根据您使用的 lex 版本,yytext可以是数组,也可以是指针。由于它是在不同的编译单元中定义的,如果它是一个数组并且您将其声明为指针,您将不会看到来自编译器或链接器的任何错误消息(链接器通常不进行类型检查)。相反,它会将数组中的前几个字符视为指针,并尝试取消引用它,并且可能会崩溃。

如果你使用的是flex,你可以添加一个%pointer声明 .l 文件的第一部分,以确保它是指针而不是数组

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

解析器 - 调用 yytext 时出现分段错误 的相关文章

  • 在 python 中将 Latex 代码转换为 mathml 或 svg 代码

    是否有任何 python 代码允许获取乳胶代码 用于方程 并将其解析为 mathml 或 svg 代码 一个以字符串 latex 代码 作为参数并输出字符串 svg 或 mathml 代码 的简单函数将是完美的 附言 我找到了这个http
  • 从数字字符串生成行

    我有一个 Oracle 18c 表 其中包含如下字符串 select 0 5 0 10 10 11 18 30 0 33 54 50 10 33 54 60 10 43 54 as multipart lines There are mor
  • 如何将 XML 数据解析为 PHP 变量

    我对 php 很平庸 对 XML 一无所知 如果你能详细一点 它将帮助我学习 我正在尝试使用 PHP 编程来执行此链接的脚本 VARIABLE ZIP 是在表单中输入的实际邮政编码 该表单将在上面的链接中提交信息 该链接的输出创建了一个 X
  • 使用 bash 解析 ICS 文件

    这是一个谷歌日历 ics 文件 我每次都会下载它来检查是否有新的比赛事件被添加或更改 并且我出现在IRC上 我需要转换这样的文件 BEGIN VEVENT DTSTART 20160612T201000Z DTEND 20160612T21
  • 如何在 C# 中将 IEnumerable 转换为 Enum?

    我已将多个字符串解析为枚举标志 但看不到将它们合并为单个枚举位字段的巧妙方法 我使用的方法循环遍历字符串值 然后 将值转换为 Enum 对象 如下所示 Flags public enum MyEnum None 0 First 1 Seco
  • 如何将格式化的电子邮件地址解析为显示名称和电子邮件地址?

    给定电子邮件地址 Jim 电子邮件受保护 gt 如果我尝试将其传递给 MailAddress 我会得到异常 指定的字符串不符合电子邮件地址所需的格式 如何将此地址解析为显示名称 Jim 和电子邮件地址 电子邮件受保护 cdn cgi l e
  • 提升解析器中的 Spirit 段错误

    我一直在尝试将我在本科编译器中编写的一些 lex 和 yacc 代码转换为精神代码以学习精神 我发现了一个我似乎无法弄清楚的段错误 我这样写了词法分析器 namespace lex boost spirit lex enum Tokens
  • 在 Java 中从复杂的 HTML 表格中提取数据到二维数组

    如何转换 HTML 表格带有 colspan 和 rowspanJava中的二维数组 矩阵 我在 Python 和 jQuery 中找到了很好的解决方案 但在 Java 中却没有 只有通过 jsoup 的非常简单的表 XSLT 有一种很好的
  • 如何从 C# 解析/简单分析 C/C++ 代码以获取方法列表

    我需要浏览 C C 文件并提取类和方法的列表以及它们在文件中的位置 libclang 是最好的选择吗 或者对于这项任务来说 太多了 只寻找配对支架会更好吗 如果选择 libclang 有没有办法从 c 调用它 Thanks 你可以考虑cta
  • 改进/修复 C 样式块注释的正则表达式

    我正在 用 C 编写一个简单的解析器来处理看起来很像经典 C 的脚本语言 在我拥有的一个脚本文件中 我用来识别 块注释 的正则表达式会进入某种无限循环 长时间占用 100 的 CPU 我使用的正则表达式是这样的 r n r n 关于为什么这
  • 如何在 C# 中导航任何 JSON 树?

    我需要像导航 XML 一样导航 Json 结构XmlDocument 结构未知 我需要迭代节点来解析一些数据 这可能吗 我知道我可以使用JavaScriptSerializer将其反序列化为已知类型 但事实并非如此 因为我可以接收任何有效的
  • 使用 MaltParser 和 NLTK 进行依存分析

    考虑一下这个句子 new sent PeterParker loves MaryJane 我尝试使用 malparser 和 NLTK 解析这句话 如下所示 maltParser nltk parse malt MaltParser wor
  • 使用 Python 2.7 解析 msg/eml 文件

    有没有可以解析msg或eml文件的库 我编写了一个脚本 一旦将电子邮件转换为 txt 文件 就会对其进行解析 但是我找不到一个电子邮件客户端 可以让我轻松地将电子邮件从 gui 拖放到文件夹中作为 txt 文件 如果有人知道这一点 我会很高
  • Flex,连续扫描流(来自套接字)。我是否错过了使用 yywrap() 的某些内容?

    使用 Flex 进行模式识别 在基于套接字的扫描仪 连续流 上工作 Flex 找不到与 数组边界 重叠的匹配项 所以我实现了 yywrap 来设置新的数组内容 一旦 yylex 检测到 它将调用 yywrap 到目前为止还没有成功 基本上
  • 在Java中解析日期的毫秒分数

    我正在使用以下模式在 Java 中解析日期 从服务器获取 yyyy MM dd T HH mm ss SSS 传入的字符串可能属于以下类型 2015 01 01T00 00 00 561 2015 01 01T00 00 00 5 我的问题
  • C# 编译器错误?为什么这个隐式用户定义转换无法编译?

    给定以下结构 public struct Foo
  • 为什么这个 SimpleDateFormat 无法解析这个日期字符串?

    简单日期格式 SimpleDateFormat pdf new SimpleDateFormat MM dd yyyy hh mm ss SSSaa 抛出的异常pdf parse Mar 30 2010 5 27 40 140PM java
  • PDF解析提取CheckBox字段值

    我有一个 PDF 文档 想要从 PDF 和 Chackbox 和单选按钮类型字段值中提取内容 PDF 文件的版本为 1 4 Acrobat 5 x 可以从网络浏览器生成 CheckBox appear such types in PDF 我
  • 关于Java中trim()方法的查询

    我之前提出了一个问题 但遭到了严厉的批评 所以我在这里再次提出 更简单 并重新措辞以吸引那些可能担心我之前提出问题的方式的人 背景 我正在解析一些 HTML 以获取信息 我将所有内容隔离在一系列行中 但我希望抓取的内容以及后面的一堆空格 为
  • float.Parse 不再在 Unity 中工作 (C#)

    我有一个包含以下代码行的工作项目 public InputField mass float val float Parse mass text 非常简单 用户输入一定量的质量 然后将其从文本解析为浮动 几天前这工作得很好 我什至能够多次导出

随机推荐