【问题标题】:DrRacket 6.1 error says lexer is undefinedDrRacket 6.1 错误说词法分析器未定义
【发布时间】:2014-10-06 12:27:15
【问题描述】:

我正在尝试仅制作字符和数字的词法分析器,但我收到一条错误消息,提示 lexer 未定义。将来我会将它用于文件,但现在我正在使用键盘输入进行测试。这是我的代码:

    (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 作为语言环境。我认为词法分析器是一个模块,但我如何找到或定义它?

【问题讨论】:

    标签: racket


    【解决方案1】:

    添加(需要 parser-tools/lex)

    lex-sre 只是为正则表达式提供了另一种表示法。

    【讨论】:

    • 谢谢,现在lexer undefined的错误解决了。我会将其标记为答案,尽管现在我在同一代码的正则表达式中遇到了未定义的运算符错误。正如你所说,我现在需要另一个符号。无论如何,问题是关于词法分析器错误,而不是关于正则表达式,所以这已经解决了。再次感谢,非常感谢。
    • 从 lex-sre 导出的操作符被命名为 +,如果你用 : 作为前缀导入它,它可以工作:(require parser-tools/lex (prefix-in : parser-tools/lex-sre))
    猜你喜欢
    • 2021-11-10
    • 2022-12-14
    • 1970-01-01
    • 1970-01-01
    • 2014-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多