flex学习 - 诊断 限制 附加阅读

news/2025/3/25 17:54:35/文章来源:https://www.cnblogs.com/xiaobing3314/p/18788285

下面是flex诊断消息的列表:
1、’warning,rule cannot be matched’指示给定的规则不能被匹配,因为它遵循的其它规则总是与它匹配相同的文本。例如,在下面的例子中,’foo’不能被匹配,因为它出现在标识符’catch-all’规则之后:
[a-z]+ got_identifier();
foo got_foo();
在扫描器中使用REJECT将抑制此警告。
2、‘warning,-s option given but default rule can be matched’意味着有可能(或许只在特定的开始条件下)默认规则(匹配任何单个字符)是唯一匹配特定输入的规则。既然给出了’-s’,想必这不是有意的。
3、reject_used_but_not_detected undefined或yymore_used_but_not_detected undefined。这些错误可能在编译时发生。它们表明扫描器使用REJECT或yymore(),但是flex没有注意到这一事实,这意味着flex扫描了前两部分,寻找这些操作的发生,但是没有找到任何操作,但不知怎么的,你偷偷的将一些操作(例如,通过#include文件)带了进来。使用%option reject或%option yymore向flex表明你确实使用了这些特征。
4、‘flex scanner jammed’。使用’-s’编译的扫描器遇到了一个与它的任何规则都不匹配的输入字符串。此错误也可能由于内部问题而发生。
5、‘token too large,exceeds YYLMAX’。你的扫描器使用%array,其中一条规则匹配比YYLMAX常量(默认为8K字节)长的字符串。你可以通过在flex输入的定义部分中#define YYLMAX来增加该值。
6、‘scanner requires -8 flag to use the character ‘x’’。你的扫描器规范包括识别8位字符’x’,并且你没有指定-8标志,且你的扫描器默认为7位,因为你使用了’-Cf’或’-CF’表压缩选项。查看在扫描器选项章节中’-7’标志的详细讨论。
7、‘flex scanner push-back overflow’。你使用unput()弹出了许多的文本,以致于扫描器的缓冲区无法同时保存弹出的文本和在yytext中的当前标记。在这种情况下,扫描器应该动态调整缓冲区的大小,但目前还没有。
8、‘input buffer overflow,can’t enlarge buffer because scanner uses REJECT’。扫描器正在匹配一个非常大的标记,需要扩展输入缓冲区。这个不适用于REJECT的扫描器。
9、‘fatal flex scanner internal error --end of buffer missed’。这可能发生在长跳转(或越过)扫描器激活帧后重新进入的扫描器中。在重入扫描器之前,请使用:
yyrestart(yyin);
或者,如上所述,切换到使用C++扫描器类。
10、‘too many start conditions in <> construct!’你在<>结构中列出的启动条件比实际存在的要多(因此你必须至少两次列出其中一个)。

限制
某些尾随上下文模式无法正确匹配并生成警告信息(危险尾随上下文)。在这些模式中,规则第一部分的结尾与第二部分的开头匹配,例如’zx/xy’,其中’x*’与末尾上下文开头的’x’匹配。(请注意,POSIX草案声明由这种模式匹配的文本是未定义的。)对于一些尾随上下文规则,实际上是固定长度的部分不会被识别出来,从而导致上述性能损失。特别是,使用’|’或’{n}’的部分(例如’foo{3}’)总是被认为是可变长度的。将尾随上下文与特殊的’|’操作结合起来可能会导致固定尾随上下文被转换为代价更高的变量尾随上下文。例如:
%%
abc |
xyz/def
使用unput()将使yytext和yyleng无效,除非使用了%array指令或’-l’选项。NULs的模式匹配比匹配其它字符要慢的多。动态调整输入缓冲区的大小很慢,因为它需要重新扫描到目前为止与当前(通常很大)标记匹配的所有文本。由于输入缓冲和预读,你不能对<stdio.h>程序(如getchar())的调用与flex规则混合,并期望它能正常工作。改为调用input()。’-v’标志列出的表项总数不包括确定匹配了什么规则所需的表项数。如果扫描器不适用REJECT,则条目的数量等于DFA状态的数量,如果使用REJECT,则条目的数量略大于状态的数量。REJECT不能与’-f’或’-F’选项一起使用。
flex内部算法需要文档。

附加阅读
你可能希望阅读更多关于以下程序:
1、lex
2、yacc
3、sed
4、awk
下列书籍可能包含有趣的材料:
John Levine, Tony Mason, and Doug Brown, Lex & Yacc, O’Reilly and Associates. Be sure to get the 2nd edition.
M. E. Lesk and E. Schmidt, LEX – Lexical Analyzer Generator
Alfred Aho, Ravi Sethi and Jeffrey Ullman, Compilers: Principles, Techniques and Tools, Addison-Wesley (1986). Describes the pattern-matching techniques used by flex (deterministic finite automata).

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/904363.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WEBGL 学习使用代码

目录杂七杂八第一节 绘制出了一个点第二节 动态传递点数据第三节 缓冲区和画线第四节 彩色线段第五节 单个 buffer 渲染颜色第六节 抽离代码 & 画彩色三角形第七节 图元的七种绘制方式第八节 uniform 传值变换数据第九节 旋转矩阵三角函数矩阵的计算推导代码实现第十节 线框…

Kettle 版本这么多,到底该怎么选?

Kettle(Pentaho Data Integration)作为一款功能强大的开源 ETL(Extract, Transform, Load,即数据抽取、转换和加载)工具,拥有众多版本,这让许多用户在选择时犯了难。 1、提出问题 经常有群友提出使用kettle版本的问题,如下图所示:2、kettle版本 有许多的的历史版本,…

C++实验二

实验一#include <stdio.h>#include <stdlib.h>#include <time.h>#define N 5int main() {int number;int i;srand(time(0)); // 以当前系统时间作为随机种子for(i = 0; i < N; ++i) {number = rand() % 100 + 1;printf("20490042%04d\n", n…

ESP32 Audino 驱动12864点阵屏 自定义中文字库

一.安装u8g2 #include <Arduino.h> #include <U8g2lib.h>U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/U8X8_PIN_NONE, /* clock=*/22, /* data=*/21); // ESP32 Thing, HW I2C with pin remappingvoid setup(void) {u8g2.begin();u8g2.enableU…

Linux 离线安装 lz4

前言:本文操作是在 CentOS-7 下执行的,不确定在其他 Linux 发布版是否能同样正常执行。1、检查前置依赖组件在安装 lz4 之前,需要确认已安装了相关依赖组件: gcc 。 rpm -qa | grep gcc前置依赖组件的具体离线安装方法请参考:CentOS-7离线安装gcc 2、下载lz4安装包 官方下…

sql语句把图片存入数据库

这是一个小的练习,目的是把图片以二进制字符串形式存入sql数据库表中,后续练习尝试在WINCC把其还原成图片。 在以前的数据库MyDB中新建一个数据表,有四个字段: imageID 类型为bigint,作为标识符,自增1 mydatetime 日期事件类型 imagename varchar(100)数据类型 imagedata…

FSRCNN:加速超分辨率卷积神经网络

作为一种成功的图像超分辨率 (SR) 深度模型,超分辨率卷积神经网络 (SRCNN) 在速度和恢复质量方面都表现出优于以往手工制作模型的性能。然而,高计算成本仍然阻碍了它需要实时性能 (24 fps) 的实际使用。在本文中,我们旨在加速当前的 SRCNN,并提出一种紧凑的沙漏形 CN…

GNSS测量实习

实 习 报 告学院:建筑工程与空间信息学院 专业:地理信息科学 实习性质:校内实习 实习单位:建筑工程与空间信息学院 指导教师:冯建迪目录 一、实习的性质和目的要求 二、实习的任务和内容 三、静态测量 3.1 静态测量简介 3.2作业流程 3.3注意事项 3.4 GPS 控制网设计…

花束搭配

提取公式:Ai+Aj>Bi+Bj 变形得:Ai-Bi+Aj-Bj>0#include<bits/stdc++.h> using namespace std; #define int long long const int N = 1e6 + 10; int n, m, k, cnt, ans; string s;void solve() {cin >> n;vector<int> a(n), b(n), c(n);for (int i = 0…

题解:P11955 「ZHQOI R1」覆盖

https://www.luogu.com.cn/article/20vbz4zk对于一颗线段树,它的结构如图所示。一定是先有红色,再有绿色,再有蓝色,再有紫色。如果靠前的颜色没有那么靠后的颜色不可能出现。我们先考虑上一层(黑色)都已经处理完,新的一层会有什么影响,即已知 \(f_{2^j}\) 求 \(f_{2^j+…

sir.net,一个类似itdog/pingpe/chinaz的网络质量检测/监视工具

相信不少站长或主机爱好者都使用过itdog/pingpe/chinaz网络质量和ip质量检测这类工具,这其中最重要最常用的就是ping值检测工具了,如果你熟悉或接确过这方面的应用,那么现在,不防尝鲜下 sir.net(中文名:站长先生) ,它将不失作为你一个更有趣更稳定的选择。 1)类似google.…