我有一个非常简单的语言。函数被定义为一定数量的注释(由分号开头的行表示),然后是函数名(一个单词,后面是括号),然后是其他任何内容,最后是一个"q“。下面是一个parse-ez函数:
(defn routine []
(multi* (regex #";.*")
(regex #"(\w+)\(.*\).*" 1)
(multi* (regex #"[^q].*"))
(regex #"q.*"))
这是可行的,但我想返回不同模式匹配的行号。有没有办法做到这一点,或者我需要编写自己的解析器?
就目前而言,我的语言非常简单,编写一个新的解析器不会有太大的影响,但随着复杂性的增加,它会限制我的使用。
发布于 2013-05-30 11:28:15
parse-ez中有一个"line-pos“函数。你不能用那个吗?
line-pos文档:
“返回表示解析器当前光标位置的行列向量”
https://stackoverflow.com/questions/16781970
复制相似问题