2

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

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

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

就目前而言,我的语言很简单,编写一个新的解析器并不重要,但随着复杂性的增加,它会限制我。

4

1 回答 1

2

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

行位置文档:

“返回表示解析器当前光标位置的 [行列] 向量”

于 2013-05-30T11:28:15.073 回答