我的语言非常简单。函数定义为一些注释(由以分号开头的行表示),后跟函数名(后跟parens的单词),后跟其他任何内容,以“q”结尾。这是一个parse-ez函数:
(defn routine []
(multi* (regex #";.*")
(regex #"(\w+)\(.*\).*" 1)
(multi* (regex #"[^q].*"))
(regex #"q.*"))
这样可行,但我想返回不同模式匹配的行号。有没有办法做到这一点,还是我需要编写自己的解析器?
现在我的语言非常简单,编写一个新的解析器并不重要,但随着复杂性的增加,它将限制我。
答案 0 :(得分:2)
parse-ez中有一个“line-pos”函数。你不能用它吗?
line-pos doc:
“返回表示当前光标位置的[line column]向量 解析器“