gpt4 book ai didi

c++ - flex 没有生成 yyFlexLexer.h header

转载 作者:搜寻专家 更新时间:2023-10-31 01:51:56 25 4
gpt4 key购买 nike

在使用 flex 创建词法分析器之前,我已经编写了几个解析器,但这次我希望 flex 生成 Lexer 类而不是经典的 C 文件,即我希望 flex 生成 C++ 扫描器类...问题是它没有为我生成 yyFlexLexer.h,只有 lex.yy.cc

我读过 the Flex manual C++ chapter ...所以我不知道该怎么办...是不是我的 flex for windows 工作不正常?

这些是我目前使用的弹性选项:

%option outfile="cmdsLexer.cpp"
%option stdinit
%option case-insensitive
%option c++

%{
#include "global-scope.h"
%}

ANDIGIT [a-zA-Z0-9]
IDNTIFIER [a-zA-Z_]({ANDIGIT}|_|-)*
INTEGER [-+]?[0-9]+
STRING \"[^\n\"]*\"
....

最佳答案

没有yyFlexLexer.h文件。相反,cmdsLexer.cpp文件将包含一行

#include <FlexLexer.h>

注意使用尖括号而不是双引号。该文件应该安装在您的系统上,例如作为/usr/include/FlexLexer.h .每个词法分析器都是一样的。对于 Windows,路径显然会有所不同。只需在您的 flex 安装中找到该文件,并将其添加到您的编译器搜索头文件的路径中,例如使用 -I gcc 的选项。

另请注意 the document you referenced 的最后一段对于该 header 的高级使用:

If you want to create multiple (different) lexer classes, you use the ‘-P’ flag (or the prefix= option) to rename each yyFlexLexer to some other ‘xxFlexLexer’. You then can include <FlexLexer.h> in your other sources once per lexer class, first renaming yyFlexLexer as follows:

     #undef yyFlexLexer
#define yyFlexLexer xxFlexLexer
#include <FlexLexer.h>

#undef yyFlexLexer
#define yyFlexLexer zzFlexLexer
#include <FlexLexer.h>

if, for example, you used %option prefix="xx" for one of your scanners and %option prefix="zz" for the other.

关于c++ - flex 没有生成 yyFlexLexer.h header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13367545/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com