问题标签 [sedlex]

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 回答
49 浏览

ocaml - 以外的任何字符

我为 ocamllex 定义了一个标记let non_line_termination_character = [^ '\x0D' '\x0A'],它代表除'\x0D'and之外的任何字符'\x0A'

现在,我想把它翻译成 sedlex。

有谁知道如何正确翻译?我应该使用SUB(例如,SUB(SUB(any, '\x0D'), '\x0A')SUB(any, ('\x0D' | '\x0A')))吗?

0 投票
2 回答
72 浏览

parsing - 确定是什么减慢了词法分析器的编译速度

我有一个词法分析器和解析器,用 OCaml 中的 sedlex 和 menhir 构建,用于解析电子表格公式。

词法分析器的以下部分在引用之前定义了路径+工作簿+工作表部分的正则表达式。例如,'C:\Users\Pictures\[Book1.xlsx]Sheet1'!='C:\Users\Pictures\[Book1.xlsx]Sheet1'!A1:B2

没有最后4个lex_before(即(lex_file, "!") | (lex_file_wo_brackets, "!") | ("'", lex_file, "'!") | ("'", lex_file_wo_brackets, "'!")),项目编译(by)的总时间ocamlc是3分30秒(耗时是编译的lexer.ml)。加上这 4 个案例,编译的总时间是 13 分 40 秒。需要时间的总是编译lexer.ml

有谁知道我们如何确定是什么减慢了编译速度?

我编写命名正则表达式的方式有什么问题会减慢编译速度吗?

0 投票
0 回答
24 浏览

ocaml - sedlex 和 ocaml 不会向 $startpos 和 $endpos 发送相同的位置信息

以前,我有一个由 menhir 和 ocamllex 制作的解析器和词法分析器。在解析器中,我使用$startposand $endpos

其中Loc.print定义为:

在词法分析器中,我具有以下功能来打印 loc 信息:

结果,'a\n+b'返回以下输出:

然后,我使用 sedlex 制作词法分析器,我有以下功能来打印 loc 信息:

结果, 'abc\n+d'返回以下输出:

注意,因为换行,这里的location of+和location ofd没有很好的计算。结果,我的 loc 信息expression不再好。

有谁知道如何解决这一问题?

0 投票
2 回答
105 浏览

unicode - Unicode 标准第四章的字符和数字

在语言规范中,有

谁能告诉我如何any code points which are characters as defined by the Unicode character properties, chapter four of the Unicode Standard在词法分析器中正确表示它?

同样,有

有谁知道如何any code points which are digits as defined by the Unicode character properties, chapter four of the Unicode standard在词法分析器中忠实地表示它?

我找到了这个,但我很难理解。

PS:我使用sedlex编写我的词法分析器。

编辑1:

以前,我使用以下代码制作name_start_character. 尽管它没有完全完成,但它或多或少地工作了。

然后,我尝试了 rici 更简单的解决方案:

Fatal error: exception Stack overflow随后返回Error: Error while running external preprocessor

0 投票
1 回答
39 浏览

ocaml - Sedlexing.lexbuf 类型与 Lexing.lexbuf 类型不兼容

我想通过 sedlex+menhir 在我的项目中添加 Menhir 的增量 API 和错误处理;我正在尝试在我的代码attempt2fail采用这个示例。这是attempt2示例:

在我的代码中,我尝试了:

但是,编译给了我一个错误:

有人可以帮忙吗?

(* GitHub中的链接*)