我正在尝试使用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)
知道为什么它不想工作吗?
我的扩展器中的模块开始函数出错(缺少')。我没有意识到错误进入了我的文件。如果您的扩展器不正确,读取的内容无关紧要。