问题标签 [flex-lexer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1849 浏览

parsing - 如何使用 Flex 实现两遍扫描仪?

作为一个宠物项目,我想尝试实现一种我自己设计的基本语言,可以用作网络脚本语言。将 C++ 程序作为 Apache CGI 运行是微不足道的,因此真正的工作在于如何解析包含非代码(HTML/CSS 标记)和服务器端代码的输入文件。

在我本科的编译器课程中,我们使用FlexBison为一种简单的语言生成扫描器和解析器。我们得到了一份语法副本,并编写了一个解析器,将简单的语言翻译成虚拟机的简单程序集。flex 扫描器对输入进行标记,并将标记传递给 Bison 解析器。

这与我想做的不同之处在于,就像 PHP 一样,这种语言可以有纯 HTML 标记,而脚本语言可以像下面这样穿插:

我假设按如下方式解析输入文件会很有效,我是否不正确:

  1. 扫描输入,直到找到脚本开始标记('
  2. 第二个扫描器标记输入文件的服务器端脚本部分(来自打开标记:'')并将标记传递给解析器,它不需要知道文件中的标记。
  3. 控制权返回到继续这种一般模式的第一个扫描仪。

基本上,第一个扫描器只区分标记(直接返回到浏览器未修改)和代码,它被传递给第二个扫描器,第二个扫描器反过来标记代码并将标记传递给解析器。

如果这不是一个可靠的设计模式,PHP 等语言如何有效地处理扫描输入和解析代码?

0 投票
2 回答
2478 浏览

regex - flex(词法分析器)正则表达式 - 重用定义

我有这个工作定义:

我不想一直重复 [a-zA-Z] 和 [0-9],所以我做了两个新定义

如何重写 IDENTIFIER 规则以使用 DIGIT 和 VALID 定义?

我不知道如何进行“第二次”比赛,我被困在这里:

谢谢。

编辑:我正在使用的整个测试程序:http: //pastebin.com/f5b64183f

0 投票
2 回答
1522 浏览

c++ - 清除野牛生成的解析器的解析器状态

我使用的是 Flex 生成的 C 词法分析器和 Bison 生成的 C++ 解析器。我已修改解析器以仅接受字符串输入。

yyparse()在循环中调用解析器函数,并逐行读取用户输入。如果输入是“退出”,我会停止循环。

我面临的问题是,当输入与任何规则都不匹配时,解析器会突然停止,并且在下一次迭代时以相同的状态开始,期望被停止的规则(由于语法错误)完成。

如果输入有效并且与解析器规则匹配,则它可以正常工作。

关于语法错误,我重新定义了该yyerror()函数,该函数显示一条简单的错误消息。

当输入与任何解析器规则都不匹配时,如何清除解析器的状态,以便在下一次迭代时重新启动解析器?

0 投票
4 回答
2789 浏览

c - 如何在 Visual Studio 2005/2008 中编译 flex?

我想不通这个。我可以从 gnuwin32 下载 flex 2.5.4a 的 win32 二进制文件,但我想使用 Visual Studio 2005 构建最新版本(2.5.35)。我想我可以在 cygwin 中构建,但其中的乐趣在哪里?

0 投票
9 回答
8395 浏览

parsing - 开发一个简单的解析器

我的日常工作包括开发一个类似 Pascal 的编译器。我一直致力于优化和代码生成。

我也想开始学习为同一种语言构建一个简单的解析器。但是,我不确定该怎么做。Flex 和 Bison 似乎是首选。但是,难道不能使用 C++ 或 C# 编写解析器吗?我对C有点毛骨悚然。

Yacc++ 支持 C#,但它是一个许可的。我正在寻找在这方面我能找到的所有帮助。建议将不胜感激。

0 投票
9 回答
1230 浏览

c++ - C++:大整数

我正在编写一个词法分析器作为编译器项目的一部分,我需要检测一个整数是否大于 int 可以容纳的整数,以便打印错误。是否有适合此目的的大整数 C++ 标准库?

0 投票
3 回答
2992 浏览

regex - FLEX:有没有办法一次返回多个令牌

在 flex 中,我想为一个正则表达式的匹配返回多个标记。有没有办法做到这一点?

0 投票
2 回答
332 浏览

parsing - 在嵌入式系统中使用 Lex 分词器

我正在尝试编写一个用于非标准 C 环境的配置文件解析器。具体来说,我不能依赖<stdio.h>.

我正在寻找使用 Flex,但我需要使用自己的输入结构而不是<stdio.h>FILE 指针。

0 投票
5 回答
52382 浏览

parsing - Flex/Lex 和 Yacc/Bison 有什么区别?

Flex & Lex 和 Yacc & Bison 有什么区别。我在互联网上疯狂搜索,但没有找到任何可靠的答案。

我可以在 Ubuntu 上安装纯 Lex 和 Yacc,还是只能安装 flex 和 bison。我很困惑。

  • Lex 或 Yacc 是否仍由某人维护?
  • 他们都是免费的吗?
  • 如果 Lex 不是免费的,为什么我要在我的 Ubuntu 发行版上安装它?

    /li>
0 投票
1 回答
808 浏览

ant - 使用 Hudson 设置 Flex 项目的资源

我正在研究为我们的 flex 项目设置 CI 环境。我在设置这样的环境方面经验很少,但是已经阅读了很多关于它的内容,并且认为我们可以在我们的项目中从中受益匪浅。我确实有使用 ANT 的经验,我们目前正在将它用于我们的建筑。我一直在关注 Hudson,它看起来非常漂亮和简单,同时仍然具有支持适当 CI 环境的能力。

所以基本上,我的问题是,是否有人有与 Hudson 建立 Flex 项目的经验?如果是这样,请分享一些关于问题、成本/收益以及每个项目需要什么样的努力才能与 Hudson 一起启动和运行的信息。我已经用谷歌搜索了一段时间,可以自豪地说我对快速词法分析器和哈德逊河都了解得更多,但对这篇文章的主题知之甚少 =)