2014-10-06 48 views
2

我想使字符和數字的詞法分析只,但我得到一個錯誤,說詞法分析器是未定義的。我將來會將它用於文件,但現在我正在使用鍵盤輸入進行測試。這是我的代碼:DrRacket 6.1錯誤說,詞法分析器是未定義的

(require parser-tools/lex-sre) 
    (define simpleCharNumLexer 
     (lexer 
     [(:+ (:or (char-range #\a #\z) (char-range #\A #\Z))) 
     ; => 
     (cons `(ID ,(string->symbol lexeme)) 
       (analyze input-port))] 
     [(:: (:? #\-) (:+ (char-range #\0 #\9))) 
     ; => 
     (cons `(INT ,(string->number lexeme)) 
       (analyze input-port))])) 

這是錯誤: 詞法分析器:不確定的; 無法引用未定義的標識符

我正在使用DrRacket 6.1和Pretty Big作爲語言環境。我認爲詞法分析器是一個模塊,但我如何找到它或定義它?

回答

4

添加(需要分析器工具/法)

萊克斯 - SRE只是提供了對正則表達式的替代符號。

+0

謝謝,現在解決了lexer undefined的錯誤。我將它標記爲答案,雖然現在我在我的正則表達式中從相同的代碼中得到未定義的運算符錯誤。正如你所說,我現在需要另一個符號。無論如何,這個問題是關於詞法分析器的錯誤,而不是關於正則表達式,所以這個問題就解決了。再次感謝,非常感謝。 – 2014-10-06 12:58:06

+1

從lex-sre導出的運算符被命名爲+,如果使用它作爲其前綴導入它:'(require parser-tools/lex (prefix-in:parser-tools/lex-sre))' – soegaard 2014-10-06 13:10:42

+0

Yup ,這使它工作。謝謝。 – 2014-10-10 00:09:32

相關問題