问题标签 [jflex]

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 投票
1 回答
275 浏览

java - JFlex 中可以继承吗?

我对 JFlex 和 JSyntaxPane 还很陌生,尽管我已经设法为 XPath 编写了一个词法分析器

我发现自己遇到的问题是我正在开发一个项目,该项目支持具有一些专有特性的 XPath 子集。恶心我知道。

如果这是一个常规的 Java 问题,我会转向继承,但似乎不可能通过让一个词法分析器扩展先前生成的词法分析器来实现继承。

例如

这似乎会导致大量错误告诉我我无法扩展某些最终方法。这是 JSyntaxpane 中 DefaultJFlexLexer 特有的问题,还是我做错了?有没有人遇到过类似的情况,并找到了一种在一堆词法分析器中实现某种特殊继承的方法?

0 投票
1 回答
1675 浏览

java - 在 JFlex 中跟踪状态

我正在编写一个自定义 flex 文件来生成一个用于 JSyntaxpane 的词法分析器。

我需要 lex 的自定义语言具有不同的状态,可以在一种堆栈中相互嵌入。

在 IE 中,您可以编写一个包含单引号字符串的表达式,然后使用特殊标记 eval() 在字符串中嵌入另一个表达式。但您也可以将表达式嵌入双引号字符串中。

例如:

这是一个简化,有比这更多的状态,但假设我需要为 DOUBLE_STRING 和 SINGLE_STRING 设置不同的状态,它充分描述了我的情况。

确保在关闭 eval 表达式后返回正确状态的最佳方法是什么(即,如果我在双引号中,则返回 DOUBLE_STRING,如果我在单引号中,则返回 SINGLE_STRING)

我提出的可行的解决方案是使用 Stack 和一些自定义方法来跟踪状态,而不是使用 yybegin 来启动不同的状态。

这是实现这一目标的最佳方式吗?是否有我可以利用的更简单的 JFlex 内置功能或我应该了解的最佳实践?

0 投票
3 回答
2334 浏览

regex - 匹配 Lua 的“长括号”字符串语法

我正在为 Lua 编写一个 jFlex 词法分析器,并且在设计正则表达式以匹配语言规范的一个特定部分时遇到问题:

文字字符串也可以使用长括号括起来的长格式来定义。我们将第 n 级的左长括号定义为一个左方括号,后跟 n 个等号,然后是另一个左方括号。因此,级别 0 的左长括号写为 [[,级别 1 的左长括号写为 [=[,依此类推。闭合长括号的定义类似;例如,第 4 级的右长括号写为]====]。长字符串以任何级别的左长括号开始,并在同一级别的第一个右长括号结束。这种括号形式的文字可以运行多行,不解释任何转义序列,并忽略任何其他级别的长括号。它们可以包含除适当级别的右括号之外的任何内容。

简而言之,我正在尝试设计一个正则表达式,它将匹配一个开始的长括号、中间的字符串内容和结束的长括号。只有当开始长括号和结束长括号具有相同数量的等号(可以是零或更多)时,才会发生匹配。

0 投票
3 回答
7411 浏览

antlr - 与 Flex/Bison 相比,使用 ANTLR 有什么缺点?

几年前,我在本科学习期间曾在 Flex, Bison 工作过。然而,我现在已经不记得太多了。最近,我听说了 ANTLR。

  • 你会建议我学习 ANTLR 还是更好地复习 Flex/Bison?
  • ANTLR 的功能是否比 Flex/Bison 多/少?
0 投票
2 回答
4019 浏览

java - 某处是否有 java 字符串文字的 jflex 规范?

我所说的字符串文字是指那些\123也包含 -like 字符的文字。我写了一些东西,但我不知道它是否完美:

事实上,我知道这并不完美,因为对于解析类似字符的三行\ddd,我没有将字符本身放在字符串中,而是将其表示。我可能会尝试使用 Character 方法对其进行转换,但也许我并不详尽,也许还有其他我没有处理的转义序列......所以如果有一个规范的 jflex 文件,那将是完美的。

0 投票
1 回答
157 浏览

java - 用 flex 区分字符串

我需要标记一些字符串,这些字符串将根据= and !=. 在字符串具有运算符之前,我成功使用了正则表达式!=。在我的情况下,字符串被分成两部分,这是意料之中的,但!标记在左侧,即使它是给定运算符的一部分。因此,我认为 regex 不适合它,我想从中受益lex。由于我对 lex 没有足够的知识和经验,我不确定它是否适合我的工作。基本上,我试图用来自其他数据的实际值替换运算符的右侧。你们认为这对我的案子有帮助吗?

谢谢。

0 投票
1 回答
1097 浏览

regex - 使用 JFlex 而不是正则表达式

我是 JFlex 的新手。我收集到 JFlex 是一个解析器生成器。但是,我仍然不清楚以下内容,需要对此进行澄清。

  1. 这与使用正则表达式进行模式识别和数据隔离有什么不同,以及使用 JFlex 的额外好处是什么。

  2. JFlex 对正则表达式有用的任何特定用例。

  3. 它对一般解析有用吗,比如文本/xml 文件?

提前致谢。

0 投票
4 回答
84583 浏览

compiler-theory - 什么是词汇错误的例子?一种语言是否可能没有词汇错误?

对于我们的编译器理论课,我们的任务是为我们自己设计的编程语言创建一个简单的解释器。我正在使用 jflex 和 cup 作为我的生成器,但我对什么是词法错误有点困惑。另外,是否建议我使用 jflex 的状态功能?感觉不对,因为解析器似乎更适合处理该方面。您是否推荐任何其他工具来创建该语言。对不起,如果我不耐烦,但它是在星期二到期。

0 投票
1 回答
2190 浏览

regex - 如何在 JFlex 中使用正则表达式捕获组?

尽管这个问题是关于 JFlex 的,但它可能也适用于其他扫描仪生成器,例如 lex、flex。

如果我有一些规则,我如何在该规则的一部分中创建一个捕获组并将该捕获组的结果用作在规则匹配时调用的代码的参数?

例如,假设我有一个简单的规则来匹配 SGML 标签:

如何捕获内部字符部分([a-zA-Z]+)并将其用作我的 Token 构造函数中的参数?

编辑:我知道我可以简单地使用 yytext() 来获取整个匹配值,然后将代码中的其他部分分开,但这似乎会使事情变得比需要的更复杂。

0 投票
2 回答
635 浏览

java - 从 GNUMake 迁移到 Maven

我是 Make 构建系统的长期用户,但我决定开始学习 Maven 构建系统。虽然我已经阅读了大多数在线文档,但似乎没有一个能给我我正在寻找的类比。我了解系统的生命周期,但我没有看到编译步骤依赖项的参考。例如,我想生成一个 JFlex 语法作为编译生命周期步骤的一部分。目前,我认为没有办法将该步骤作为预编译阶段步骤。文档似乎仅限于此。一般来说,步骤依赖的概念似乎已经融入了 Maven,并且需要一个插件来进行任何更改。是这样吗?我错过了什么,因为目前 Maven 构建系统在如何设置编译步骤方面似乎非常有限。