问题标签 [quex]
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.
gpl - 由受 LGPL 覆盖的词法分析器 (Quex) 生成的程序是否需要采用 LGPL?
我想使用Quex作为扫描仪生成器,但我注意到 Quex 包含在 LGPL 中。这是否意味着我生成的二进制文件也将被 LGPL 覆盖?
(我希望这算作一个“编码”问题——我不知道要问哪个其他堆栈交换站点。)
c++ - 使用标记器时的 QUEX_PATH 问题
我正在尝试安装 trainable-tokenizer。我已经按照自述文件安装了所有依赖项。这是 trainable-tokenizer https://github.com/jirkamarsik/trainable-tokenizer。我已经使用来自 quex.org 的安装程序安装了 quex.deb,这是 trainable-tokenizer 的依赖项。
当我尝试这样做时sudo make install
,出现以下错误
但我已经设置了 QUEX_PATH。
我还添加export QUEX_PATH=/opt/quex/quex-0.65.4/
到.bashrc
但我仍然得到同样的错误。
c++ - 将词法分析器移植到 Quex 的较新版本时出现问题
我曾经向我的 Quex 驱动的词法分析器提供一个std::basic_stringstream<char>
发送到构造函数的信息,如下所示:
这工作 using Quex 0.64.8
,但似乎 API 从那时起发生了变化,因为它似乎不适用于 version 0.67.4
。
任何关于我应该如何将我的代码移植到新版本的指针将不胜感激。
此致,
帕特里克·J
编辑:删除了关于字符串累加器的问题,它将作为一个单独的问题重新发布。
c++ - 将词法分析器字符串累加器移植到新版本的 Quex 时出现问题
在将我的词法分析器文件从 Quex 0.64.8 移植到 0.67.4 时,我遇到了字符串累加器的一些问题。我得到的问题如下所示:
我想Accumulator__clear
问题的原因是双下划线。也许我需要为 Quex 提供一个新的开关,或者 API 在新版本中发生了变化。无论哪种方式,我都不知道如何解决这个问题。
以及来自我的词法分析器(.qx)的示例,它产生了问题:
任何解决此问题的帮助将不胜感激。
最好的问候,帕特里克 J
c++ - Quex:为标识符定义 UTF8 正则表达式
我正在升级以前使用的 Ecmascript
Quex 0.64.8
引擎Quex 0.67.5
。我已经启动并运行了词法分析器,它现在似乎只能检测 ANSI 令牌,而不能像以前那样检测 UTF-8 令牌。
本质上,我所做的是--codec utf8
在运行 Quex 时提供标志并使用以下代码来识别标识符:
这个想法是,而不是指定我定义的所有允许的令牌,而不是不可接受的,而是排除那些。新的词法分析器可以很好地检测诸如“test1”或“safari”之类的标识符,但似乎对“日本语”和“Örjan”有问题。我也只使用 utf-8,不使用 ICU 或 Iconv。
感觉好像我在这里误解了一些东西。任何解决此问题的帮助将不胜感激。
编辑:
知道我使用以下参数运行 Quex 可能很有用:
编辑2:
由于 utf-8 解析在示例中有效,因此我未能重新创建一个小示例。因此,我创建了我的 ecmascript 引擎的词法分析器部分的独立版本,希望更容易看出哪里出了问题。
我不再清楚我的问题是否实际上与解析 utf8 令牌有关。很可能在我的 .qx 文件中可能有问题......无论哪种方式,这是我的 ecmascript 词法分析器的独立版本。
CMakeLists.txt
ecmascript.qx
ecmascript_yacc.hpp
_main.cpp
id_test.js // 用于测试词法分析器
此致,
帕特里克·J
compiler-construction - Quex 0.69.4 generates include file that includes itself causing infinite loop
I work on inherited code base that uses Quex 0.65.7. It compiles, but requires -fpermissive
during compilation, which isn't something that I'm willing to live with. As code requiring -fpermissive
option in g++ lives in files provided as a base by Quex itself, I'm trying to build lexer using Quex 0.69.4, installed using quex_0.69.4-0_all.deb
file from project's download page. Lexer definition is very simple. It lives in file lexer.qx
, wholly pasted below:
From this, lexer is generated as follows:
File mentioned in --foreign-token-id-file
option is equally simple:
Output from option --foreign-id-file-show
indicates that all tokens were read and are understood:
Lexer generation finishes successfully, but among generated files is zs_expr_eng-token.hxx
and its content is pasted below:
This is not everything, there are also 7 new line characters - so it is basically empty and includes itself without guards. This of course means that compiler fails to compile this source code:
Any ideas what should be done to prevent it? I don't think this is common occurrence as it would break all Quex-based projects.