1
我的詞法目前看起來像這樣的組合的標識符:球拍,我該如何設置一個詞法分析器來識別所有的數字和字母AZ和AZ
#lang racket
(require parser-tools/lex)
(define testLexer
(lexer
["foo" (list 'FOO lexeme)]
["bar" (list 'BAR lexeme)]
[(repetition 1 +inf.0 (char-range #\a #\z)) (list 'ID lexeme)]
[whitespace (testLexer input-port)]))
的「ID符號用的所有組合工作小寫字母和數字。 我希望它也能處理大寫字母。我已經試過:
[(repetition 1 +inf.0 (char-range #\a #\z) (char-range #\A #\Z) (list 'ID lexeme)]
但由於重複的只需要兩個參數,我不能把在第三個。
也必須有一些簡單的方法來包含大寫字母。
編輯:另外,如果有做的一些方式,以確保一個標識符以字母開頭(非數字),這將在1.1節是很好的,以及
謝謝,這就是我一直在尋找。唯一的另一件事是,我如何才能讓它只允許以字母開頭的標識符?現在,我認爲1aBc3XyZ8會起作用。 – user3760657
否 - 現在不允許有數字。由於數字位於a-z範圍之外。 – soegaard
我明白了。所以,如果我也想要數字,我可能會這樣做(union(char-range#\ a#\ z)(char-range#\ A#\ Z)(char-range#\ 0#\ 9))?在那種情況下,我將如何限制它僅作爲第一個字符的字母? – user3760657