clojure - 在 Clojure 中创建词法分析器
问题描述
如果我想在函数中传递一个字符串并返回使用 Clojure 键入的字符串的令牌类型,例如“int x=5;” 将是“:alpha :alpha :alpha :whitespace :equal :digit”。我将如何在 Clojure 中编写词法分析器函数?
解决方案
您应该使用instaparse 库。一个例子:
(def as-and-bs
(insta/parser
"S = AB*
AB = A B
A = 'a'+
B = 'b'+"))
=> (as-and-bs "aaaaabbbaaaabb")
[:S
[:AB [:A "a" "a" "a" "a" "a"] [:B "b" "b" "b"]]
[:AB [:A "a" "a" "a" "a"] [:B "b" "b"]]]
推荐阅读
- java - 在Java中将2个字符串值分配给一个变量
- java - 从 JCanvas (Java) 创建图像
- c# - Moq:当对象是模拟对象时,如何附加到对象的委托属性?
- php - 与 Laravel 8 上的 setKeysForSaveQuery() 覆盖不兼容的方法
- prolog - 在prolog中找到一个数字的所有素数的问题
- java - 构造函数java中的抽象对象
- javascript - 第二个嵌入式 Javascript 不在 HTML 中运行
- java - Axon Saga 没有被创建
- r - 使用 tryFormats 转换时出现 as.Date 错误
- python - FastAPI 返回删除记录数