问题标签 [fsyacc]

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 投票
0 回答
64 浏览

f# - 我参考库(来自 Nuget)的预构建事件命令不编译程序

我学习 F# 已经有一段时间了,我想尝试创建一个小型 SQL 解析器。我找到了一个教程,它解释了如何通过 FsLex 和 FsYacc 执行此操作,但是,该站点没有提供任何下载链接。在 Visual Studio 下,通过 nuget,我遇到了这个,然后我下载了它。它似乎与网站提供的解释非常相似,所以我认为这与问题无关。

我离它不远了,这是我的两个小文件:

Sql.fs:

SqlParser.fsp:

这是我的项目的文件/参考列表:

这是预构建命令,它应该与“SqlParser.fsp”文件交互:

当我使用这个命令编译时,Visual Studio 告诉我“生成失败”,但没有错误,这些列表是空的。当我删除此命令时,项目“正常”编译,实际上文件“SqlParser.fsp”应该生成其他文件(因此是 prebuild 命令)。

  • 我错过了什么吗?
  • FsLexYacc 库是否已过时?
  • 教程不对吗?
  • ...

先感谢您。

0 投票
1 回答
41 浏览

debugging - F# 中的简单解析器规范中的错误

我想知道下面的解析器规范哪里出错了。解析器旨在解析和评估像 2+3*4 到 14 这样的表达式。它将与 FsLexYacc 一起运行。

我得到了错误

第 18 行是指“Main”之前的行。错误在哪里?

0 投票
1 回答
50 浏览

parsing - 为什么 1*2+3 被解析为 1*(2+3) 即使没有声明运算符优先级或关联性?

我使用 fsyacc(用于 fsharp 的 yacc)来编写一个小型解析器。语法类似于

然后,在没有声明优先级或关联性的情况下,我将“1 * 2 + 3”解析为

为什么?

0 投票
1 回答
62 浏览

makefile - FsLexYacc 编译错误?

我正在尝试在 F# 中设置一个新项目。

我使用 FsLexYacc 作为工具,上次我使用它是在 Fsharp 电源组“进入”时。网站上的文档不是很好。在我看来,泛型类型注释 'end 因为它是一个关键字..

但我首先只是从页面复制粘贴虚拟文件以确保生成文件已启动并运行。(词法分析器、解析器和程序)

页面: https ://fsprojects.github.io/FsLexYacc/index.html

然后我得到

../../FSharp/Project/src/Lexer.fsl(21,81):错误 FS0001:“char”类型与“byte”类型不匹配

试图通过将 _ 更改为根本没有帮助的字节来强制执行类型

生成文件:

0 投票
1 回答
50 浏览

f# - 给定在 FsLexYacc 中实现的词法分析器,我如何获取所有标记?

我在 FsLexYacc 中实现了一个词法分析器和解析器。为了调试词法分析器,我想打印给定字符串的所有标记。

这是我到目前为止所拥有的:

1号

但这只是第一个令牌!

如何将所有标记作为列表或序列获取?

0 投票
0 回答
30 浏览

f# - 我可以通过 FsLex 词法分析器线程化状态并返回一个令牌吗?

根据文档,可以向词法分析器规则传递状态参数。

但是有没有办法将先前的状态传递给下一个规则应用程序?

例如,假设我想返回FOO令牌,但只要"foo"找到 a 就改变状态......我该怎么做?