我遇到了一个问题,想出一个很好的算法来解决我使用Java解析特定问题。我正在尝试解析为特定系统设计的特殊语言。
我需要解析的字符串可能如下所示:
function1(text1, function2(function3(function4(), function5())))
此结果应采用以下形式:
1. function1()
2. function2()
3. function3()
4. function4()
5. function5()
要解析的不同类型的字符串:
function1(function2())
RESULTS: 1. function1() 2. function2()
function1(text1)
RESULTS: 1. function1()
function1(text1, function2())
RESULTS: 1. function1() 2. function2()
function1(function2())!=function3()
RESULTS: 1. function1() 2. function2() 3. function3()
1!=2
RESULTS: none
我浪费了很多时间来思考这个问题,但我无法弄清楚最简单的方法。每个解决方案都让我感觉必须有更好的方法来实现它。
如果有人可以建议如何在途中收集函数之间的运算符作为单独的结果,那就太棒了。
答案 0 :(得分:0)
我觉得像JavaCC这样的东西适合这种任务:
快速常见问题: http://www.engr.mun.ca/~theo/JavaCC-FAQ/javacc-faq-moz.htm#tth_sEc1.2