17得票3回答
找出正则表达式失败的位置

我正在尝试使用JavaScript编写一个词法分析器,用于查找简单领域特定语言的标记。我开始采用简单的实现方式,它只是尝试从当前行的位置匹配后续的正则表达式,以查找其是否匹配某些标记格式并接受它。 问题在于,当某些内容不匹配正则表达式时,整个正则表达式都失败了,因此我不知道到底是哪个字符导致...

8得票2回答
如何使用Flex实现双向扫描器?

作为一个宠物项目,我想尝试实现一种基本语言,可以用作 web 脚本语言。将 C++ 程序作为 Apache CGI 运行非常简单,因此真正的工作在于如何解析包含非代码(HTML/CSS 标记)和服务器端代码的输入文件。 在本科编译器课程中,我们使用 Flex 和 Bison 为简单语言生成扫...

11得票7回答
从文本中解析意义

我知道这是一个广泛的话题,但我正在寻找一个简洁易懂的教程,介绍从文本中提取含义的方法,最好使用Python。举个例子,如果用户发布了以下博客帖子: "曼尼·拉米雷斯今天将回归道奇队对阵休斯顿太阳" 有什么轻量/简单的方法可以从句子中获取名词?首先,我认为我会限制它只提取专有名词,但我不想仅...

16得票10回答
你是否曾在实际应用中成功使用过词法分析器和语法分析器?

最近,我开始学习ANTLR。我知道词法分析器/语法分析器可以一起用于构建编程语言。 除了DSL或编程语言,你是否曾经直接或间接地使用过词法分析器/语法分析器工具(以及相关知识)来解决现实世界中的问题?平均程序员是否可以在没有词法分析器/语法分析器知识的情况下解决这些问题?

8得票1回答
在Ruby中解析结构化文本

在SO上有一些关于在Ruby中解析结构化文本的问题,但它们都不适用于我的情况。 我是Ruby Whois库的作者。该库包括几个解析器,用于解析WHOIS响应并从内容中提取属性。 到目前为止,我使用了两种方法: 正则表达式用于基本解析器(例如whois.aero) StringScann...

8得票1回答
如何在词法分析器生成器中高效实现最长匹配?

我想学习如何编写像flex这样的词法分析器生成器。我一直在阅读“编译原理:技术、原理和工具”(即“龙书”),对flex的工作原理有了基本的了解。 我的初始方法是:用户将提供一个正则表达式的哈希映射,将一个正则表达式映射到一个标记枚举。程序将按照给定顺序循环遍历每个正则表达式,并查看它们是否与...

12得票1回答
flex中yywrap()的含义

在flex(lex)中,指令#define yywrap() 1的含义是什么? 以及这个正则表达式[ \t]+$是什么意思?我在下面的代码中找到了它: (%% [ \t]+ putchar('_'); [ \t]+% %% 输入“hello world” 输出“hello_world”)

9得票1回答
使用Flex编写可重入的词法分析器

我是一个新手,想要学习flex。我试图使用flex编写一个简单的可重入词法分析器/扫描器。下面是词法分析器的定义。但是我遇到了编译错误,如下所示(yyg问题): reentrant.l: /* Definitions */ digit [0-9] letter ...

10得票1回答
如何在Flex/bison中实现If语句

我不理解这个错误,请你帮帮我,这里有 .l 和 .y 文件。谢谢。 %{ #include "ifanw.tab.h" extern int yylval; %} %% "=" { return EQ; } "!=" { return NE; } "<" {...

8得票7回答
如何在不使用解析器生成器的情况下,用C或Objective-C编写解析器?

我是一名有帮助的助手,以下是您需要翻译的内容: 我正在尝试用C或Objective-C制作一个计算器,它接受类似于字符串 8/2+4(3*9)^2 并且返回答案2920。我不想使用像Lex或Yacc这样的生成器,所以我想从头开始编码。我该如何做到这一点?除了龙书之外,是否有任何推荐的文...