作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我目前正在尝试创建一个能够解释动态字符串的软件组件,例如:
%TO_LOWER%(%DELETE_WHITESPACES%("A SAMPLE TEXT"))
这将导致这个字符串:
asampletext
我希望能够定义一组可用的函数,带有语义参数等。我已经(或多或少)知道如何使用正则表达式来做到这一点。
我的问题是:
谢谢!
最佳答案
Is lexing/parsing way better than regexp for such a purpose, or should I just go with regexp and forget about that?
正则表达式无法表达递归语法,您的语法似乎需要递归语法。如果是这种情况,那么正则表达式根本无法解决问题。
Does such a library already exist in Java?
这不是图书馆可以解决的问题。您要么需要使用解析器生成器系统(例如 Antlr 或 Javacc)来生成词法分析器和解析器,要么几乎从头开始编写它们。前一种方法可能更好……除非你已经选修了涵盖该领域的单科类(class),或者准备进行广泛阅读。
Do you know any tutorial showing some sample parsing/lexing algorithms?
Antlr 和 Javacc 都有大量的教程 Material 和示例。
关于java - 如何在没有正则表达式的情况下解析字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12443540/
我是一名优秀的程序员,十分优秀!