Scheme 显示错误,在racket中创建编程语言

Scheme 显示错误,在racket中创建编程语言,scheme,lisp,racket,dr.racket,Scheme,Lisp,Racket,Dr.racket,我正在Racket中创建一种编程语言,我目前正在使用ragg,我正在阅读Danny Yoo的指南,例如,我定义了一种语法 #lang ragg nested-word-list: WORD | LEFT-PAREN nested-word-list* RIGHT-PAREN 我通过传递标记使用函数解析 #lang racket (require ragg/support) (require "nested-word-list.rkt") (define a-par

我正在Racket中创建一种编程语言,我目前正在使用ragg,我正在阅读Danny Yoo的指南,例如,我定义了一种语法

#lang ragg
nested-word-list: WORD
            | LEFT-PAREN nested-word-list* RIGHT-PAREN
我通过传递标记使用函数解析

#lang racket


(require ragg/support)
(require "nested-word-list.rkt")

(define a-parsed-value
    (parse (list (token 'LEFT-PAREN "(")
             (token 'WORD "some")
             (token 'LEFT-PAREN "[")
             (token 'WORD "pig")
             (token 'RIGHT-PAREN "]")
             (token 'RIGHT-PAREN ")"))))

a-parsed-value
我知道函数生成了一个语法对象,我不知道那是什么

如果我通过一些像这样的残疾人代币

#lang racket


(require ragg/support)
(require "nested-word-list.rkt")

(define a-parsed-value
     (parse (list (token 'WORD "some")
             (token 'LEFT-PAREN "[")
             (token 'WORD "pig")
             (token 'RIGHT-PAREN "]")
             (token 'RIGHT-PAREN ")"))))

a-parsed-value
它会产生这样的错误

   Encountered parsing error near token 'LEFT-PAREN ("[") while parsing #f    [line=#f, column=#f, offset=#f]
我想知道它是如何产生错误的,例如,对于前一种情况,输出显示“ERROR:MISSING BRACKET”,并且对于可能发生的每一个错误都是如此。


注意:例如,我使用了一个简单的语法,但实际上,我的原始语法是一种类似Java的语言。听起来你在问如何改进或修改ragg生成的错误消息。我相信,一旦你添加了一个真正的lexer(在下面的 (文档的部分)您将获得有关的良好源位置信息 错误


除此之外,我想我会敦促你。。。担心其他事情吗?我不知道ragg允许生成错误消息的具体定制程度,但这似乎超出了ragg这样的工具的范围。

欢迎使用。请移除[dr.racket]标签,因为没有人在跟踪它。他可能是第一个。。。