问题标签 [fslex]
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.
f# - F# fslex fsyacc 成熟的生产代码?
在阅读了一个 2 年历史的网页后,与他们的 OCamel 同行相比,它确实撕裂了 fslex/fsyacc、错误、缓慢、愚蠢等,我想知道什么是词法解析需求的最佳选择?
我以前用 C# 绑定使用过 ANTLR,但目前正在学习 F#,当我看到它带有解析器生成器时很兴奋。由于 F# 现已正式发布,微软似乎真正致力于支持和开发。你会说 fslex 和 fsyacc 对于生产代码来说值得吗?
f# - FsLex - 2 个字符串之间的差异
我有几个令牌:
PNAME
和ENAME
- 都是字符串。
现在我想在我的词法分析器中设置 2 条规则,以匹配这些标记。
当字符串由字符 az 和可选的特殊字符 @/() 组成时,第一条规则( PNAME
) 应该匹配。
ENAME
当字符串由字符 az 和可选前缀 (#/.) 组成时,第二条规则( ) 应该匹配。
现在,我将如何在我的词法分析器文件中制定一条仅匹配的规则ENAME
- 即使没有前缀?
如果它有任何区别,那么它的字符串后面ENAME
会有一个: - 但是这个括号不应该传递给解析器......{
(prefix)eName {
有什么建议么?
f# - 选择 fsycc/fslex 或 FParsec 什么?
我需要解析简单的 DSL 语言,如下所示:
解析这种语言最合适的工具是什么?
f# - Fslex,二进制文件词法分析
是否有任何能力使用 Fslex 对二进制文件格式(例如 jpeg 图像)进行词法分析(不缺乏可读性),或者我应该编写自己的词法分析器/使用 fparsec 之类的东西?
f# - 我应该使用 Workflow 还是 fsYacc?
我有一个非常简单的 DSL,需要在 .Net 平台上解析。我对解析器不是很有经验,我一直在查看使用 F#(fsLex、fsYacc、FParsec)的示例。我对 F# 不是很熟悉,但对 Workflow 和 LINQ 有一些经验。
鉴于 DSL 的简单性,我可以使用 LINQ 来实现词法分析器。工作流(我将使用 V4)对实现语法很有吸引力,因为我更熟悉它,鉴于它的图形性质,它更容易向其他人解释,并且它受到 Microsoft 的支持,并且可能会继续发展。
但是,如果我的 DSL 变得更加复杂,我可以将 WF 实现想象成一个嵌套的活动地狱,并且一个基于 LINQ 的词法分析器也会以同样的方式进行。那时学习 F# 并使用其中一种 F# 工具会更有意义。
我想知道其他人是否比较了 WF 和 F# 解析工具来实现一个简单的 DSL 解释器以及可能的结论。
parsing - 如何捕获没有引号字符的字符串
我正在尝试捕获没有引号的带引号的字符串。我有这个终端
而这个制作
连同这些词法分析器规则
它似乎将导致 a 的所有内容解释QUOTE
为一个不解析的单个词素。所以也许我的问题出在语法的其他地方——不确定。我会以正确的方式解决这个问题吗?在我尝试从字符串中排除引号之前,它解析得很好。
更新
我认为以下词法分析器规则可能存在一些歧义
以下规则先于STRING
有没有办法在不包括STRING
正则表达式的引号的情况下消除这些歧义?
f# - 获取 FS0035 => 构造已弃用
在基于 fsycc 的项目中,我有这一行:
这是我得到的完整错误描述:
CALast.fs(117,9):错误 FS0035:不推荐使用此构造:此类型缩写具有一个或多个声明的类型参数,这些参数未出现在被缩写的类型中。类型缩写必须使用被缩写类型中所有声明的类型参数。考虑删除一个或多个类型参数,或使用包装底层类型的具体类型定义,例如'type C<'a> = C of ...'。
知道如何解决这个问题吗?
f# - FSlex/FSyacc 崩溃 - 找不到 FSharp.Core 程序集
我遇到了 FSlex/FSyacc 在我的机器上崩溃的问题。
在上下文中,这是在 Parallels 虚拟机内运行的 Windows 8 Consumer Preview(32 位)上运行的 Visual Studio 11 beta 内。
------ 构建开始:项目:基础,配置:调试任何 CPU ------ C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1546,5):警告 MSB3245:无法解析此引用。找不到程序集“log4net,Version=1.2.11.0,Culture=neutral,PublicKeyToken=669e0ddf0bb1aa2a”。检查以确保该程序集存在于磁盘上。如果您的代码需要此引用,您可能会遇到编译错误。基础 -> C:\Users\nexus\Desktop\Statical\trunk\Statical\Basis\bin\Debug\Basis.dll ------ 构建开始:项目:语法,配置:调试任何 CPU ----- - cd C:\Users\nexus\Desktop\Statical\trunk\Statical\Syntax\ CALL C:\Users\nexus\Desktop\Statical\trunk\Statical\Syntax\fsyacc.cmd CALL C:\Users\nexus\Desktop\ Statical\trunk\Statical\Syntax\fslex.cmd 运行 fsyacc.cmd... CalParser。fsp 正在运行 fsyacc.exe... 未处理的异常:System.IO.FileNotFoundException:无法加载文件或程序集“FSharp.Core,版本=2.0.0.0,文化=中性,PublicKeyToken=b03f5f7f11d50a3a”或其依赖项之一。该系统找不到指定的文件。文件名:'FSharp.Core,版本=2.0.0.0,文化=中性,PublicKeyToken=b03f5f7f11d50a3a'
在 .$FSharp.PowerPack.FsYacc.Driver.main@() 警告:程序集绑定日志记录已关闭。要启用程序集绑定失败日志记录,请将注册表值 [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) 设置为 1。注意:与程序集绑定失败日志记录相关的一些性能损失。要关闭此功能,请删除注册表值 [HKLM\Software\Microsoft\Fusion!EnableLog]。运行 fslex.cmd... 不运行 fslex.exe,因为 CalLexer.fs 比 CalLexer.fsl C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1036,5): 错误 MSB3073 :命令“cd C:\Users\nexus\Desktop\Statical\trunk\Statical\Syntax\ CALL C:\Users\nexus\Desktop\Statical\trunk\Statical\Syntax\fsyacc.cmd CALL C:\Users\nexus \Desktop\Statical\trunk\Statical\Syntax\fslex.cmd”退出,代码为 -532459699。
相关的部分似乎是这样的:
未处理的异常:System.IO.FileNotFoundException:无法加载文件或程序集'FSharp.Core,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a'或其依赖项之一。该系统找不到指定的文件。文件名:'FSharp.Core,版本 = 2.0.0.0,文化 = 中性,PublicKeyToken = b03f5f7f11d50a3a'
at .$FSharp.PowerPack.FsYacc.Driver.main@()
不知道为什么它找不到 FSharp.Core 程序集。
想法?
parsing - 在 F# 中同时进行词法分析和解析
在使用 fslex 和 fsycc 时,是否有一种简单的方法可以让词法分析和解析同时运行?