我有一种非常简单的语言。函数定义为一些注释(由以分号开头的行表示)后跟函数名称(单词后跟括号),然后是其他任何内容,并以“q”结尾。这是一个 parse-ez 函数:
(defn routine []
(multi* (regex #";.*")
(regex #"(\w+)\(.*\).*" 1)
(multi* (regex #"[^q].*"))
(regex #"q.*"))
这可行,但我想返回不同模式匹配的行号。有没有办法做到这一点,还是我需要编写自己的解析器?
就目前而言,我的语言很简单,编写一个新的解析器并不重要,但随着复杂性的增加,它会限制我。