gpt4 book ai didi

scheme - 显示错误,在 Racket 中创建编程语言

转载 作者:太空宇宙 更新时间:2023-11-03 18:48:35 25 4
gpt4 key购买 nike

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

#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 生成的错误消息。我相信一旦你添加了一个真正的词法分析器(在下面文档的部分)你会得到很好的源位置信息错误。

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

关于scheme - 显示错误,在 Racket 中创建编程语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37231872/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com