我對於詞法分析器和解析器之間的任務分離有些困惑。解析正則表達式時,詞法分析器和解析器之間的任務分離
我正在嘗試編寫一個採用Perl風格正則表達式並構建語法樹的解析器。我的問題是識別量詞,如{n,m}
,這意味着前面的組或字符或字符類應該至少出現n
,但不會超過m
次。
的要點是,一個不完整的/無效的量詞如{2,5asdf}
是不量詞,而是一組的常規字符。
的問題是:給定輸入/a{2,5}/
,應該詞法分析器返回托克斯(Tokes)如DELIMITER CHARACTER QUANTIFIER_START NUMBER COMMA NUMBER QUANTIFIER_END DELIMITER END
的列表(問題是,該QUANTIFIER_START
可能不是一個量詞的「真正」開始,這取決於以下),或是否應該嘗試匹配完整的量詞,並返回QUANTIFIER
,這直觀地聽起來更像是解析器的任務?