Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Parsing 具有行号的Clojure语言分析_Parsing_Clojure_Parse Ez - Fatal编程技术网

Parsing 具有行号的Clojure语言分析

Parsing 具有行号的Clojure语言分析,parsing,clojure,parse-ez,Parsing,Clojure,Parse Ez,我有一种非常简单的语言。函数定义为一定数量的注释(以分号开头的行表示),后跟函数名(一个单词后跟parens),后跟任何其他内容,并以“q”结尾。下面是一个parse ez函数: (defn routine [] (multi* (regex #";.*") (regex #"(\w+)\(.*\).*" 1) (multi* (regex #"[^q].*")) (regex #"q.*")) 这是可行的,但我想返回不同模式匹配的行号。有没有办法做到这一点,或者我需要编写自己的解析器

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

(defn routine []
 (multi* (regex #";.*")
 (regex #"(\w+)\(.*\).*" 1)
 (multi* (regex #"[^q].*"))
 (regex #"q.*"))
这是可行的,但我想返回不同模式匹配的行号。有没有办法做到这一点,或者我需要编写自己的解析器

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

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

行pos文件:

“返回表示当前光标位置的[line column]向量 “语法分析器的定义”


您的目标是编写一种新语言还是学习如何编写解析器?如果是前者,那么您可以使用这里列出的几个库中的一个:如果您的目标是学习如何编写解析器,那么就去做。@noahz:我只想使用解析器,对编写解析器没有兴趣。您知道这里列出的解析器是否支持行号吗?在我看来,这不像任何人那样。和是两个解析库。它们都存在一个问题(,),请求为解析结果提供行和列元数据。我使用的这两个库中只有一个是parsely,它实际上保留了解析结果中的所有原始文本,因此您可以在解析树中查找
\n
并计算每个符号的行和列。