首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以下ocamlyacc代码的fsyacc等价物是什么?

以下ocamlyacc代码的fsyacc等价物是什么?
EN

Stack Overflow用户
提问于 2011-04-08 09:47:01
回答 2查看 267关注 0票数 3

我正在使用F#开发一个玩具编译器,也就是FsLex和FsYacc的组合。为了熟悉它们,我已经阅读了Expert F# (v2)一书的词法分析器/解析器章节(顺便说一句,这是一本好书)。现在,我已经完成了推荐的ocamlyacc教程的一半,并停留在最后一个示例多功能计算器mfcalc。具体地说,以下语句

代码语言:javascript
复制
%token <float->float> FNCT

在解析器文件中,在我的F# version中一直收到错误" error : parse error“。我是不是遗漏了什么,或者这是F#目前不支持的特性?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-04-08 21:00:41

这看起来像是个bug。添加括号无济于事。我已经尝试了各种变通方法,但我找不到一种干净的方法。你应该做一个错误报告。

如果您只有一个函数(如教程示例中所示),则应在前言中定义一个类型:

代码语言:javascript
复制
type floatFunction = float -> float
...
%token <floatFunction> FNCT

如果你有很多函数,你也可以定义一个泛型类型:

代码语言:javascript
复制
type functionType<'a, 'b> = 'a -> 'b
...
%token < ('a, 'b) functionType > FNCT

类型中的任何尖括号都会导致解析错误(甚至是functionType<float,float>)。

票数 4
EN

Stack Overflow用户

发布于 2011-04-08 10:09:47

您可能需要将括号放入,例如

代码语言:javascript
复制
%token <(float->float)> FNCT

我忘记了(我离开了F#机器去检查)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5589574

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档