flex-lexer相关内容

Flex和Bison需要从对方那里得到什么?

同时使用flex和bison时 flex文件为什么需要#include由Bison创建的C标头? 编译需要bison和flex创建的C源文件。Bison和flex创建的C源文件对彼此有什么要求? 推荐答案 Bison生成的头中最重要的是用于标识令牌类型的枚举值(这些值是由词法操作返回给解析器的值)。 标头还声明YYSTYPE语义类型和变量yylval(具有该类型),用于将 ..
发布时间:2022-08-31 13:11:54 其他开发

将AST从flex+bison输出到main.cpp

免责声明:尽管我已经完成了本教程:http://ds9a.nl/lex-yacc/cvs/lex-yacc-howto.html ,但我只是个新手 现在,我正在为OpenGL-C++中的一个项目构建一个视频游戏。Cpp包含所有的游戏图形、逻辑等(相当容易管理,所以不是问题)。在游戏开始之前,它需要解析一个配置文件(让我们假设它是任意格式,所以INI和JSON API是不成问题的)。 我了 ..
发布时间:2022-08-31 13:04:43 C/C++开发

如何在bison和flex中使用缩进作为块分隔符

我想知道如何在bison+flex中将缩进实现为块分隔符。就像巨蟒一样。我正在编写自己的编程语言(主要是为了好玩,但我打算将其与游戏引擎一起使用),我会尝试想出一些特殊的东西,使样板程序最小化,开发速度最大化。 我已经用C编写了一个编译器(实际上是`langToy‘到Nasm的转换器),但失败了。由于某种原因,它只能处理整个源文件中的一个字符串(嗯,我已经醒了超过48小时-所以……你知道,大 ..
发布时间:2022-08-31 12:47:49 其他开发

使用 Flex 检测和跳过行注释

如何在 Flex 中检测像 // 这样的一行注释并跳过这些行? 另外,对于 /* 注释,以下代码段是否足够? "/*" { 评论();}%%评论(){字符 c, c1;环形:而 ((c = input()) != '*' && c != 0)putchar(c);if ((c1 = input()) != '/' && c != 0){输出(c1);转到循环;}如果 (c != 0)pu ..
发布时间:2022-01-17 08:39:21 其他开发

YAML 解析 - lex 还是手卷?

我正在尝试编写一个简单的 YAML 解析器,我从 yaml.org 阅读了规范,在开始之前,我想知道编写手动解析器是否更好,或者使用 lex (flex/bison).我查看了 libyaml (C 库) -似乎没有使用 lex/yacc.YAML(不包括流样式),似乎更面向行,所以,是吗更容易编写手动解析器,或使用 flex/bison谢谢. 解决方案 这个答案基本上是对以下问题的回答: ..
发布时间:2022-01-14 11:24:50 其他开发

使用正则表达式匹配utf-8编码的任意汉字

比如我想把一个m组成的字符串匹配到n个汉字,那么我可以使用: [单汉字正则表达式]{m,n} 是否有单个汉字的正则表达式,可以是任何存在的汉字? 解决方案 匹配中文(好吧,CJK)字符的正则表达式是 \p{script=Han} 可以简单地理解为 \p{Han} 这假设您的正则表达式编译器满足要求RL1.2来自UTS#18的属性Unicode 正则表达式.Perl 和 Java ..
发布时间:2021-12-26 13:32:38 其他开发

是否可以让 GCC 从管道中读取?

我正在寻找 gcc 的一个选项,它可以让它从标准输入中读取一个源文件,主要是为了我可以做这样的事情来从像 flex 生成 C 代码(flex 的 -t 选项将生成的 C 写入标准输出): flex -t lexer.l |gcc -o lexer.o -magic-option-here 因为我并不真正关心生成的 C 文件. 是否存在这样的东西,或者我必须使用临时文件? 解决方案 ..
发布时间:2021-12-18 22:45:23 其他开发

是否有可用于 8 位嵌入式系统的 flex/bison 替代方案?

我正在为一种简单的类似 BASIC 的语言编写一个小型解释器,作为使用 avr-gcc 工具链在 C 语言中的 AVR 微控制器上的练习.但是,我想知道是否有任何开源工具可以帮助我编写词法分析器和解析器. 如果我写这个在我的 Linux 机器上运行,我可以使用 flex/bison.现在我把自己限制在 8 位平台上,我必须手工完成,还是不? 解决方案 我已经实现了一个针对ATmega ..
发布时间:2021-12-12 23:04:39 其他开发

Doxygen - 找不到 FLEX(丢失:FLEX_EXECUTABLE)

我知道这里有一些措辞非常相似的问题,但我在那里找不到我的问题的答案,所以我们开始: 我想看看我的哪些 C++ 方法被其他人调用,所以我在谷歌搜索后找到了 Doxygen. 在他们的页面上,安装看起来非常简单: 如果您安装了必要的构建工具(即 g++、python、cmake、flex、bison),您应该执行以下操作以获得初始存储库的副本: git clone https://gi ..
发布时间:2021-11-17 01:04:38 其他开发

ANTLv4 中的 Flex 'r/s'

弹性:‘r/s’ 一个“r",但前提是它后面跟着一个“s".在确定此规则是否为最长匹配时,包含与“s"匹配的文本,但在执行操作之前将其返回到输入.所以动作只看到与“r"匹配的文本.这种类型的模式称为尾随上下文.(有一些 'r/s' 的组合不能正确匹配.参见限制,关于危险的尾随上下文.) 在 ANTLRv4 中如何做到这一点? 解决方案 我主要通过两种方式完成了这项工作. ..
发布时间:2021-11-11 04:11:16 其他开发

ANTLv4 中的 Flex 'r/s'

弹性:‘r/s’ 一个“r",但前提是它后面跟着一个“s".在确定此规则是否为最长匹配时,包含与“s"匹配的文本,但在执行操作之前将其返回到输入.所以动作只看到与“r"匹配的文本.这种类型的模式称为尾随上下文.(有一些 'r/s' 的组合不能正确匹配.参见限制,关于危险的尾随上下文.) 在 ANTLRv4 中如何做到这一点? 解决方案 我主要通过两种方式完成了这项工作. ..
发布时间:2021-11-11 03:54:28 其他开发

为什么这个语法不解析 return 语句?

我正在尝试编写一个可以解析以下 3 个输入的语法 -- 测试文件--类 hi 实现 ho:var x:int;结尾;-- 测试文件 2 --接口xs:myFunc(int,int):int结尾;-- 测试文件 3 --类 hi 实现 ho:方法 myMethod(x:int)返回 y;结尾结尾; 这是lexer.l: %{#include #include #include "parser. ..
发布时间:2021-10-04 18:57:12 其他开发

Bison/Flex 解析问题

我正在使用 bison 和 flex,目前遇到了一些问题.当前读取第一个字符并将其传递给 Bison,但立即抛出 yyerror().它应该打印 1,因为 'w' 是由我的 Flex 规则定义的 Ident. 我无法确定问题的根源.我没有使用 Bison 的经验. 这是我的野牛解析规则: %%程序:StmtSeq {printf(“13");};StmtSeq : Stmt Stm ..
发布时间:2021-10-04 18:57:09 其他开发

Flex发生C错误:缺少类型说明符?

在iTerm2 bash中运行以下代码.代码文件是使用Vim创建的. /*就像Unix wc */%{int chars = 0;int字= 0;整数行= 0;%}%%[a-zA-Z] + {个单词++;字符+ = strlen(yytext);}\ n {字符++;线++;}.{chars ++;}%%main(int argc,char ** argv){yylex();printf(“%8 ..
发布时间:2021-05-08 19:51:30 其他开发

在Flex中处理数字后跟字母

在某些Flex/Lex代码中, DIGIT [0-9]字母[A-Za-z]ID {LETTER} {LETTER} | {DIGIT})*NUM {DIGIT} +(\.{DIGIT} +)? 因此, 123 匹配 NUM ,而 abc123 匹配 ID .的情况下 123abc ,它匹配 NUM ,后跟和 ID .然而,我希望它生成一条错误消息而不是匹配消息. 有没有简单的方法可以 ..
发布时间:2021-05-08 19:51:27 其他开发

Flex/Lex:正则表达式匹配双字符

我有一个用C ++编写的flex程序,需要完成以下规则: 我希望yytext接受以下内容: ○零或以下字符之一ABCDEFGH 例如-输入: “三角形ABC"指的是“三角形ABC".是有效的形状,我希望程序打印“有效形状" “三角形AAC"指的是“三角形AAC".不是有效的形状,因为它包含双精度A,并且我希望程序在这种情况下不打印任何内容 “三角形ABCD"指的是“三角形ABC ..
发布时间:2021-05-08 19:51:24 C/C++开发

JFLEX AND CUP,无法使其正常工作

我正在使用jflex和cup,试图制作一个html解析器,但无法使其正常工作, Netbeans,编译过程不会停止,始终会继续,无法在分析树中正确添加更多“令牌",也不能在"TEXTO"中添加空间,这会破坏整棵树 lexicoh.jlex 包compiladorhtml;导入java_cup.runtime.*;%%%class Lexer%线%柱子%杯子%{私人符号symbol(i ..
发布时间:2021-05-08 19:51:20 其他开发