lex 有问题

2023-12-15

我的lex如下:

LNUM    [0-9]+
DNUM([0-9]*"."[0-9]+)|([0-9]+"."[0-9]*)                                                                                    
%%
{LNUM} {
printf("\t");ECHO;printf("\r\n");
}

{DNUM} {
printf("\t");ECHO;printf("\r\n");
}

但事实证明它只能匹配像这样的数字4.12 .2,not 42,45.等等(那些缩进是匹配的)

Output:

1.
1.
.1
    .1

12
12

我的目标是匹配整数和浮点数。

这里有人能告诉我上面出了什么问题吗?


迟到回答你的问题......但为了它的价值,我尝试更换*你在原始的 lex 文件中(第二个模式为DNUM)与一个+(因为这确保了小数点右侧至少有一位数字,以便该数字被计为小数......)并且它至少对我来说似乎有用。希望这对将来的人有帮助。


莱克斯文件:

%{
#include <iostream>
using namespace std;
%}

LNUM    [0-9]+
DNUM    ([0-9]*"."[0-9]+)|([0-9]+"."[0-9]+) 

%option noyywrap

%%
{LNUM}*  { cout << "lnum: " << yytext << endl; }
{DNUM}*  { cout << "dnum: " << yytext << endl; }
%%

int main(int argc, char ** argv)
{
    yylex();
    return 0;
}

输入示例(在命令行上):

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

lex 有问题 的相关文章

  • Ply Lex 解析问题

    我使用 ply 作为我的 lex 解析器 我的规格如下 t WHILE r while t THEN r then t ID r a zA Z a zA Z0 9 t NUMBER r d t LESSEQUAL r lt t ASSIGN
  • 无法编译 lex 的输出

    当我尝试编译这个简单的 lex 程序的输出时 lex l integer printf found keyword INT using gcc lex yy c I get Undefined symbols yywrap referenc
  • 用于创建 C/C++ 解析器/分析器的好工具 [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 有哪些可以快速开始解析和分析 C C 代码的好工具 特别是 我正在寻找处理 C C 预处理器和语言的开源工具 优选地 这些工具将使用 lex yacc 或 flex bison 作为
  • lex & yacc 获取当前位置

    在 lex yacc 中有一个名为 YY INPUT 的宏 可以重新定义 例如以这样的方式 define YY INPUT buf result maxlen do const int n gzread gz yyin buf maxlen
  • flex/lex 中字符串文字的正则表达式

    我正在尝试学习 flex 并希望匹配字符串文字 我的代码目前如下所示 n n matches string literal 我已经在一个小时左右的时间里与各种变化作斗争 但无法让它按应有的方式工作 我本质上希望匹配一个不能包含换行符 除非它
  • lex 有问题

    我的lex如下 LNUM 0 9 DNUM 0 9 0 9 0 9 0 9 LNUM printf t ECHO printf r n DNUM printf t ECHO printf r n 但事实证明它只能匹配像这样的数字4 12 2
  • Lex 正则表达式获得一些额外的字符

    我的 lex 文件中有以下定义 L a zA Z A a zA Z 0 9 L A yylval id yytext return IDENTIFIER 我在 YACC 文件中执行以下操作 primary expression IDENTI
  • YAML 解析 - lex 还是手工?

    我正在尝试编写一个简单的 YAML 解析器 我从 yaml org 阅读了规范 在开始之前 我想知道是否编写一个手卷解析器更好 或者 使用lex flex bison 我看了看libyaml C 库 好像没用lex yacc YAML 不包
  • Bison/Yacc 语法中的无意串联

    我正在尝试 lex 和 yacc 并遇到了一个奇怪的问题 但我认为最好在详细说明问题之前向您展示我的代码 这是我的词法分析器 include
  • Flex/bison,错误:未声明

    你好 我有一个问题 下面的程序返回一个错误 error Undeclared first use in function 为什么会出现这个错误所有令牌都被声明了 但是这个错误来了 任何人都可以帮助我 这里是 lex 和 yac 文件 谢谢
  • 是否可以设置规则的优先级以避免“最长最早”的匹配模式?

    另一个简单的问题 有没有办法告诉 flex 更喜欢匹配短事物的规则而不是匹配长事物的规则 我找不到任何关于这方面的好的文档 这就是我需要它的原因 我解析一个伪语言文件 其中包含一些与控制指令相对应的关键字 我希望它们成为绝对优先级 这样它们
  • YACC 中的错误处理

    你好 我正在尝试制作一个简单的解析器并使用 lex 和 yacc 问题是我想打印我自己的错误消息而不是erroryacc 使用的打印符号syntax error 例如这是我的 yacc 代码 include
  • ply lexmatch 正则表达式与通常的 re 有不同的组

    我正在使用 ply 并注意到存储在 t lex lexmatch 中的令牌 re 匹配与 re 模块以通常方式定义的 sre pattern 之间存在奇怪的差异 组 x 似乎偏离了 1 我定义了一个简单的词法分析器来说明我所看到的行为 im
  • Python 中的词法分析、标记化和解析资源

    人们可以向我指出有关使用 Python 进行词法分析 解析和标记化的资源吗 我正在对一个开源项目进行一些黑客攻击 hotwire http www hotwire shell org 并想对代码进行一些更改lexes http code g
  • 跟踪编译器中 AST 节点的源位置 (ocaml)

    我正在使用 ocamllex yacc 在 ocaml 中编写编译器 一切进展顺利 但我遇到了设计问题 对于我创建的每个 AST 节点 最好能获得有关源代码中该节点的行 字符位置的信息 这对于稍后向用户提供错误消息很有用 现在 我可以向我的
  • iOS 的标准语法解析器是什么?

    iPad 和 iPhone 的 iOS 支持解析器吗 特别是 lex yacc 或 flex bison 是否可用于 iOS 开发 xcode4 有原生支持的库吗 我可以通过 lex yacc 生成语法 然后获取 c 文件并将它们放入我的项
  • 如何解决2+2和2++2冲突

    在更大的程序中 我给出了以下内容 flex bison In flex pn dig 0 9 exp e E dig printf detected n return PLUS SIGN pn dig printf digit detect
  • 如何使 YY_INPUT 指向字符串而不是 Lex & Yacc (Solaris) 中的标准输入

    我想要我的yylex 解析字符串而不是文件或标准输入 如何使用 Solaris 提供的 Lex 和 Yacc 来做到这一点 重新定义YY INPUT 这是一个工作示例 使用命令编译并运行 yacc d parser y lex lexer
  • Flex,连续扫描流(来自套接字)。我是否错过了使用 yywrap() 的某些内容?

    使用 Flex 进行模式识别 在基于套接字的扫描仪 连续流 上工作 Flex 找不到与 数组边界 重叠的匹配项 所以我实现了 yywrap 来设置新的数组内容 一旦 yylex 检测到 它将调用 yywrap 到目前为止还没有成功 基本上
  • 对“yylex()”的未定义引用

    我正在尝试使用 flex 和 bison 创建一种简单的脚本语言 现在 我只是想让计算器工作 但我无法编译它 当我运行这个 makefile 时 OBJECTS hug tab o hug yy o PROGRAM hug exe CPP

随机推荐

  • 指定 Automator 中运行哪个版本的 Python?

    在我的终端和 CodeRunner 中 我的 Python 已更新为 2 7 6 但是当我在 OSX Automator 中运行 shell 脚本时 我发现它正在运行 2 7 2 如何像其他编译器一样将 Automator Python 更
  • Sonarqube API 单类测试覆盖率

    我正在尝试通过 SonarQube API Sonar 版本 4 1 2 检索各个类的单元测试代码覆盖率 一切工作正常 当我直接进入声纳仪表板并进入某个类的覆盖选项卡时 我可以看到指标正常 93 9 by unit tests Line c
  • 使用 json-smart 读取 JSON 文件

    我正在尝试将 JSON 文件中的值读取到数组中以进行进一步处理 我正在使用 JSON Smart 1 2 0 库来实现同样的目的 由于一些限制 我无法使用2 0版本 我收到以下异常 java lang ClassCastException
  • 通过firestore安全规则引用Firebase实时数据库数据

    我想使用实时数据库中的数据来允许用户访问 firestore 数据库中 是否可以从 firestore 安全规则引用实时数据库中的节点 目前在安全规则中还无法实现这样的数据库产品之间的交叉 请随时归档功能对此提出要求 但是 您可以编写在 C
  • 我应该使用哪个框架在 Android 上运行 OData API? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我正在为 Android 手机创建一个程序 它将通过 Web 服务查询 检索然后处理来自 OData 提供商的 OData 请您告诉我哪个工具包最适
  • 丢弃来自套接字的输入

    From Socket文档 关机输入 public void shutdownInput throws IOException 将此套接字的输入流放置在 流末尾 发送到套接字输入流端的任何数据都会被确认 然后默默地丢弃 如果在套接字上调用
  • 如何在真实设备中查看我的应用程序的 sqlite 数据库的内容?

    我想在我部署它的设备中查看在我的应用程序中创建的数据库的内容 我可以在 shell 中使用 sqlite 命令并在模拟器中查看 但不能在真实设备中查看 有谁知道如何在真实设备中执行此操作吗 如果应用程序被标记为可调试 则不需要 root 您
  • Bootstrap 翻转卡与 css3 转换

    我想使用 CSS3 变换创建引导翻转卡 我确实是从这个开始的工作和基本示例 但是我想修改它以具有固定高度的卡和一些小的增强功能 特别是 当用户单击我在右上角创建的图标时 我需要翻转卡片 我已经修改了代码 如你所见here 问题是卡片在正确翻
  • Ruby 的 public_send 方法有什么等价的吗?

    在 Ruby 中 要构造方法的名称并将其发送到对象 可以执行以下操作 class Foo def foo FOO end end Foo new public send foo gt FOO Foo new public send foo
  • cpp (C++) 中的 sha1 函数

    首先我要说的是我对 C 一无所知 我用 google 搜索了一下 没有任何东西可以让我理解如何在 C 中使用 SHA1 不过找到了这个目标 C SHA1但它是关于目标 c 我不确定它是否相同 我需要执行以下操作 我有很多文件 我通过执行 m
  • 什么是 Scala 上下文和视图边界?

    简单来说 什么是上下文和视图边界 它们之间有什么区别 一些易于理解的示例也很棒 我认为这个问题已经被问过 但是 如果是这样 这个问题在 相关 栏中并不明显 所以 这里是 什么是视图绑定 A 视图绑定是 Scala 中引入的一种机制 可以使用
  • 我可以提取sql中重复的提取记录吗?

    在我的表中 我有以下列 id name gender 我想提取所有重复的名称 但我不想扫描所有数据库来一一统计每条记录 我只想知道谁有相同的名字 例子 0 mary F 1 tom M 2 peter M 3 mary F 4 chris
  • 使用 PredicateBuilder、LINQPad 和运算符 ANY 生成 SQL

    I 之前问过关于 Linq To Entities 中的链接条件的问题 现在我用LinqKit一切正常 我想查看生成的 SQL 并阅读后这个答案 I use LinqPad 这是我的声明 var predProduct PredicateB
  • 在继续之前等待另一个可观察的结果

    我不知道是否应该为此发布任何代码 但如果需要的话我会的 我有一个 Angular2 指令 MyDirective和一项服务MyService 该服务在其构造函数中进行 http 调用以获取某些内容并存储在其中this list 指令注入服务
  • Oracle:为什么不使用并行执行?

    看下面的查询 如果我评论子查询 它会使用并行执行 否则不会 查询完成后 SELECT parallel c 20 1 SELECT 2 FROM DUAL FROM DUAL c 你可能已经找到答案了在文档中 仅当满足以下条件时 SELEC
  • 当提供的字符串不为空时 string.IsNullOrEmpty 返回 true

    我有一个单元测试 它调用传入字符串的对象的方法 被调用的方法要做的第一件事就是检查字符串是否为 null 或空 但是 无论 filePath 的值是什么 对 string IsNullOrEmpty 的调用都是 true 见下图 我在这里错
  • 如何在 Scala 中编写返回 Option[List] 的函数?

    假设我有两个函数来获取订单和订单商品 def getOrders Option List Int def getOrderItems orderId Int Option List Int 请注意 两个函数都返回Option List 因为
  • SendInput VB 基本示例

    我希望有人可以提供帮助 我试图找到模拟键盘命令的 SendInput 代码的示例 我希望找到记事本窗口并输入测试消息 我最初在我正在从事的一个项目中使用 SendKeys SendKeys 功能使我能够将键盘命令转发到我们在工作场所使用的定
  • Google App Engine NDB:如何存储文档结构?

    来自 App Engine NDB文档 NDB API 在无模式对象中提供持久存储 数据存储 它支持自动缓存 复杂的查询和 原子交易 NDB 非常适合存储结构化数据 记录 我想使用 NDB 创建如下结构 其中每个实例如下所示 city SF
  • lex 有问题

    我的lex如下 LNUM 0 9 DNUM 0 9 0 9 0 9 0 9 LNUM printf t ECHO printf r n DNUM printf t ECHO printf r n 但事实证明它只能匹配像这样的数字4 12 2