显示错误,在球拍中创建编程语言
show errors, creating a programming language in racket
我正在用 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 这样的工具的范围。
我正在用 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 这样的工具的范围。