使用行号在Clojure中进行语言分析

时间:2013-05-27 23:54:31

标签: parsing clojure parse-ez

我的语言非常简单。函数定义为一些注释(由以分号开头的行表示),后跟函数名(后跟parens的单词),后跟其他任何内容,以“q”结尾。这是一个parse-ez函数:

(defn routine []
 (multi* (regex #";.*")
 (regex #"(\w+)\(.*\).*" 1)
 (multi* (regex #"[^q].*"))
 (regex #"q.*"))

这样可行,但我想返回不同模式匹配的行号。有没有办法做到这一点,还是我需要编写自己的解析器?

现在我的语言非常简单,编写一个新的解析器并不重要,但随着复杂性的增加,它将限制我。

1 个答案:

答案 0 :(得分:2)

parse-ez中有一个“line-pos”函数。你不能用它吗?

line-pos doc:

  

“返回表示当前光标位置的[line column]向量   解析器“