首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用#lang plai定义类型时出现错误的语法错误

使用#lang plai定义类型时出现错误的语法错误
EN

Stack Overflow用户
提问于 2017-09-14 10:48:18
回答 1查看 140关注 0票数 0

我在这段代码中遇到了一个严重的语法错误

代码语言:javascript
复制
deleted

更具体地说,这个错误:

代码语言:javascript
复制
xxx:22.0: define-type: bad syntax in: xxx
  #(739 316)

我刚接触这门语言,所以有没有人愿意告诉我我的代码出了什么问题,以及如何消除这个错误?

EN

回答 1

Stack Overflow用户

发布于 2017-09-15 02:23:11

以下是导致语法错误的有问题的行

代码语言:javascript
复制
i   --> [give (expr1 OE?) name (id-ref1 symbol?) in (expr2 OE?)]
ii  --> [(string-literal string?)]
iii --> [(id-ref2 symbol?)]

正如docs中所指出的,define-type具有如下结构

代码语言:javascript
复制
(define-type type-id variant ...)

哪里

代码语言:javascript
复制
variant = (variant-id (field-id contract-expr) ...)

因此,每个变量必须有一个变量id,每个field-id必须有一个相关的约定。违反这一点是语法错误的原因。

(i)的情况下,name和In都缺少合同,因此一个可能的修复方法是将合同添加到字段中(使用string?作为示例合同):

代码语言:javascript
复制
[give (expr1 OE?) (name string?) (id-ref1 symbol?) (in string?) (expr2 OE?)]

(ii)(iii)都缺少variant-ids,所以添加它们可以解决这个问题:

代码语言:javascript
复制
[some-variant-id (string-literal string?)]
[some-other-variant-id (id-ref2 symbol?)]

以下是该类型的可能重写,并建议进行更改:

代码语言:javascript
复制
(define-type OE
  (group (expr1 OE?) (expr2 OE?))
  (sequentially (expr1 OE?) (expr2 OE?))
  (together (expr1 OE?) (expr2 OE?))
  (join (expr1 OE?) (expr2 OE?))
  (arrive (expr OE?))
  (give (expr1 OE?) (name string?) (id-ref1 symbol?) (in string?) (expr2 OE?))
  (some-variant-id (string-literal string?))
  (some-other-variant-id (id-ref2 symbol?)))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46209715

复制
相关文章

相似问题

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