我正在使用CL-Lex实现词法分析器(作为CL-YACC的输入),我的语言有几个关键词,如"let"和"in".然而,虽然词法分析器识别出这样的关键词,但它确实太多了.当它找到诸如"init"之类的单词时,它将第一个标记返回为IN,而它应该为"init"字返回一个"CONST"标记.
这是词法分析器的简单版本:
(define-string-lexer lexer
(...)
("in" (return (values :in $@)))
("[a-z]([a-z]|[A-Z]|\_)" (return (values :const $@))))
Run Code Online (Sandbox Code Playgroud)
如何强制词法分析器完全读取整个单词,直到出现一些空格?