parsing - Lex:规则无法匹配
问题描述
我收到“[”和“]”的警告,但我不知道问题出在哪里。
lex.l:27:警告,规则无法匹配
lex.l:28:警告,无法匹配规则
%{
#include <stdio.h>
#include "y.tab.h"
%}
delim [ \t\n]
ws {delim}+
digit [0-9]
number {digit}+
real_number [0-9]+\.[0-9]+([eE][0-9]+)?
sym [a-zA-z]
word {sym}+[a-zA-Z0-9_]*
instruction [0-9xX]+
%%
{delim} {}
{instruction} { yylval.cval = yytext; return INSTRUCTION; }
{real_number} { yylval.dval = atof(yytext); return REAL_NUMBER; }
{word} { yylval.cval = strdup(yytext); return WORD; }
"--".* { /* empty */ }
":=" { return EQUATE; }
"[" |
"]" |
"(" |
")" |
";" |
":" |
"," |
"." |
"*" |
"\"" { return yytext[0]; }
%%
int yywrap (void)
{
return 1;
}
解决方案
sym [a-zA-z]
错了,应该是:
sym [a-zA-Z]
看起来A-z
匹配任何字符 from A
toz
但介于Z
anda
包括[
and ]
。
推荐阅读
- java - Maven Spring Boot 编译失败
- r - 如何找到一个值在 R 数据集中的不同列中出现的实例数?
- delphi - 如何在 fmx delphi 中为 utf8 语言(如波斯语)模拟键盘事件?
- javascript - 通过 html datalist 和 *ngFor 显示一个值并提交另一个值
- google-apps-script - 如何将 onEdit 限制为特定单元格中的更改?
- android - 如何使用 FilePcker.Builder 的相机选项隐藏我正在拍摄的画廊中的图像?
- kubernetes - glusterfs heketi 使用分区而不是原始设备以允许轻松扩展
- php - 发送多封电子邮件时出错,应该只发送一封
- rest - 如果休息端点正在使用外部休息端点,Swagger/其他 API 文档/工具能否提供信息
- c# - HTTP 错误 403.14 - 禁止,本地主机:12401