Parsing 在racket中编写解析器时出现类型检查器问题
我有一个语言规划,支持评估 点(数)序列上的多项式。 这种语言允许表达Parsing 在racket中编写解析器时出现类型检查器问题,parsing,racket,typed-racket,Parsing,Racket,Typed Racket,我有一个语言规划,支持评估 点(数)序列上的多项式。 这种语言允许表达 形式{第一个问题是由一对额外的括号引起的。请记住,在Racket、键入的Racket和#lang pl中,括号通常表示这样的函数应用程序: (function argument ...) 因此,当您编写(code)时,它试图将code解释为一个函数,以零参数调用它 您可以通过在parse函数体中将(code)替换为code来解决此问题 (define (parse str) (let ([code (string-&g
形式{第一个问题是由一对额外的括号引起的。请记住,在Racket、键入的Racket和
#lang pl
中,括号通常表示这样的函数应用程序:
(function argument ...)
因此,当您编写(code)
时,它试图将code
解释为一个函数,以零参数调用它
您可以通过在parse
函数体中将(code)
替换为code
来解决此问题
(define (parse str)
(let ([code (string->sexpr str)])
(parse-sexpr code)))
出现第二个问题是因为指定了parse
函数应返回PLANG
,但它会返回parse sexpr
的结果,该结果返回AE
另一种说法是,您已经为
AE
s而不是PLANG
s实现了解析。第一个问题是由一对额外的括号引起的。请记住,在Racket、键入的Racket和#lang pl
中,括号通常表示如下函数应用:
(function argument ...)
因此,当您编写(code)
时,它试图将code
解释为一个函数,以零参数调用它
您可以通过在parse
函数体中将(code)
替换为code
来解决此问题
(define (parse str)
(let ([code (string->sexpr str)])
(parse-sexpr code)))
出现第二个问题是因为指定了parse
函数应返回PLANG
,但它会返回parse sexpr
的结果,该结果返回AE
另一种说法是,您已经为
AE
s实现了解析,但没有为PLANG
s实现解析。您使用的是#lang typed/racket
,还是类似于它的语言,例如#lang pl
或#lang plai typed
?@AlexKnauth我正在使用的是#lang plAre您使用的是#lang typed/racket>还是一种语言例如#lang pl
或#lang plai键入的
?@AlexKnauth我正在使用#lang plSo我应该添加另一个解析实现来将AE转换为PLANG?那么我应该添加另一个解析实现来将AE转换为PLANG?