如何在我的brag / racket解析器中修复未绑定的标识符错误?

问题描述 投票:0回答:1

我正在尝试使用brag在球拍中制作解析器。我有一个更大的想法,但我不能让我的解析器工作。目前,我的“parser.rkt”文件有这个简单的规则:

#lang brag
entry-date : @digit{1,2} "-" @digit{1,2} "-" @digit{4}
digit : "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "0"

当我测试我的解析器时,我得到一个正确的输出:

(parse-to-datum "01-02-1920")
>'(entry-date "0" "1" "-" "0" "2" "-" "1" "9" "2" "0")

但是,当我尝试运行它时,我收到此错误:

#lang reader "accounting_reader.rkt"
01-02-1920
> *entry-date: unbound identifier in: entry-date

这是我的阅读器文件中的标记器:

(require brag/support)
(define (make-tokenizer port)
  (define (next-token)
    (define ac-lexer
      (lexer
       [(char-set "-1234567890") lexeme]
       [any-char (next-token)]))
    (ac-lexer port))  
  next-token)

知道为什么它不想工作吗?

racket dsl
1个回答
0
投票

我的扩展器中的模块开始函数出错(缺少')。我没有意识到错误进入了我的文件。如果您的扩展器不正确,读取的内容无关紧要。

© www.soinside.com 2019 - 2024. All rights reserved.