Tag: 解析

重入Flex和Bison的问题

我正在学习如何一起使用可重入的Bison和Flex。 我已经有一个简单的计算器工作,没有可重入的function。 但是,当我激活可重入function并进行必要的修改时,我无法使其工作。 这是代码: scanner.l %{ #include #include “parser.tab.h” %} %option 8bit reentrant bison-bridge %option warn noyywrap nodefault %option header-file=”lex.yy.h” DIGIT [0-9] %% “+” { return ADD; } “-” { return SUB; } “*” { return MUL; } “/” { return DIV; } {DIGIT}+ { *yylval = atof(yytext); return NUM; } \n { return EOL; […]

如何在没有解析器生成器的情况下在C或Objective-C中编写解析器?

我试图在C或Objective-C中创建一个接受字符串的计算器 8/2+4(3*9)^2 并返回答案2920.我不想使用像Lex或Yacc这样的生成器,所以我想从头开始编写代码。 我该怎么做呢? 除了龙书,是否有任何推荐的文本涵盖这个主题?

用C解析文本

我有这样一个文件: … words 13 more words 21 even more words 4 … (一般格式是一个非数字字符串,然后是一个空格,然后是任意数量的数字和一个换行符) 我想解析每一行,将单词放入结构的一个字段中,将数字放入另一个字段中。 现在我正在使用一个难看的黑客读取线,而字符不是数字,然后阅读其余的。 我相信有一个更清晰的方式。

TrueType字体在C中解析

我想读取一个ttf并在缓冲区上绘制带有该字体的文本。 即使有像freetype,gd这样的库来执行此任务,我也想编写自己的代码。 你能告诉我如何完成这项任务吗?

微软在“C”中的文字解析器

我想知道从Microsoft word(.doc和.docx)文档中解析和获取文本内容的过程。 使用的编程语言应该是普通的“C”(应该是gcc)。 是否有任何图书馆已经完成这项工作, 扩展:我可以使用相同的过程来解析Microsoft power point文件中的文本吗?

调车场算法能解析POSIX正则表达式吗?

乍一看, 分流码算法似乎适用于POSIX正则表达式解析,但由于我在编写解析器方面没有太多经验(或理论背景),我想在跳入并写入内容之前先询问SO半途而废。 也许这个问题的一个更复杂的版本是:对于分流码算法可以应用的问题类别的正式陈述是什么? 澄清:这个问题是关于您是否可以使用分流算法的基本原理将POSIX语法解析为抽象语法树,而不是您是否可以使用正则表达式来实现分流算法。 对不起我说不清楚开头!

预处理器#if语句的工具/解析器?

我正在处理许多C源代码文件,其中包含许多预处理器#if , #if #elseif和#else语句。 这些语句通常会检查#define ,例如 #if(Switch_TestMode == Switch_TestModeON) /* code 1 */ #else /*code 2 */ #endif 这些预处理程序语句通常位于c-if语句中,这使得源代码几乎不可读。 用于此预处理程序#if语句的#define在额外文件中定义。 我现在的想法是有一个工具来检查这个#define d开关设置,然后只复制使用当前#define / switch设置应用的源代码行。 对于上面的示例,我想获得一个仅包含的新.c文件 /*code 2 */ 假设Switch_TestMode的#define不等于Switch_TestModeON 。 是否有工具(免费软件||低成本)可以完成这项工作? 或者我是否必须为此编写自己的预处理器解析器? (我不可能使用执行此工作的特殊参数来运行编译器,因为我们公司正在创建C源代码,另一家公司正在编译。) 谢谢你的提示! 问候 托马斯

ANTLR解析器生成器最适合具有受限内存的C ++应用程序吗?

我正在寻找一个好的解析器生成器,我可以用它来读取我们的大型商业应用程序中的自定义文本文件格式。 目前,这种特殊的文件格式是使用手工递归解析器读取的,但格式已经增长并且复杂化到了这种方法变得无法管理的程度。 似乎最终的解决方案是为这种格式构建一个正确的语法,然后使用像yacc这样的真正的解析器生成器来读取它,但我无法确定使用哪个这样的生成器,或者即使它们值得麻烦一点都不 我看过ANTLR和Spirit,但是我们的项目除了早期的答案之外还有特定的限制因素让我想知道它们是否适合我们。 特别是,我需要: 使用MSVC生成C或C ++代码的解析器。 ANTLR 3不支持C ++; 它声称直接产生C,但是让它实际工作的文档有点令人困惑。 严重限制内存使用量。 内存在我们的应用程序中占据了巨大的优势,即使是微小的泄漏也是致命的。 我需要能够覆盖解析器的内存分配器以使用我们的自定义malloc(),或者至少我需要为它提供一个连续的池,从中抽取所有内存(之后我可以解除分配)。 我可以为解析器可执行文件本身节省大约200kb,但是它在解析时分配的任何动态堆都必须在之后释放。 很好的表现。 这不太重要,但我们应该能够在3ghz处理器上解析不超过一秒的100kb文本。 必须是GPL免费的。 我们不能使用GNU代码。 我喜欢ANTLRworks的IDE和调试工具,但看起来让它的C目标实际上与我们的应用程序一起工作将是一项艰巨的任务。 在开始使用这个问题之前,ANTLR是否适合这项工作? 有问题的文字格式如下: attribute “FluxCapacitance” real constant asset DeLorean { //comment foo bar baz model “delorean.mdl” animation “gullwing.anm” references “Marty” loadonce } template TimeMachine { attribute FluxCapacitance 10 asset DeLorean }

C库解析大致日期

我正在寻找date.js date.parse()的普通C对应物。 也就是说,将“一周前”或“昨天”理解为输入的东西。 只有英语才行。 注意:库不应该在GPL下许可,因此Git的date.c或GNU date -d解析器不会。 顺便说一句,如果你想知道为什么我不能坐下来编写代码,那么去看看提到的库的来源……

Flex,Bison和C:寻找一个非常基本的介绍

我正在寻找一个非常简短的flex和bison工作示例,附带Makefile,它使用了内置规则。 我已经尝试了几个谷歌搜索结果,这些搜索结果很乱,不会构建,或者使用C ++,这是不可接受的。 良好的在线资源和简短的示例代码表示赞赏。 额外 # Makefile example — scanner and parser. # Creates “myprogram” from “scan.l”, “parse.y”, and “myprogram.c” # LEX = flex YACC = bison -y YFLAGS = -d objects = scan.o parse.o myprogram.o myprogram: $(objects) scan.o: scan.l parse.c parse.o: parse.y myprogram.o: myprogram.c 我想要一个看起来与此类似的Makefile,附带的源文件可以做任意简单的事情。