希望我的标题不是完全糟糕。我真的不知道这应该叫什么。我正在尝试用 Java 编写一个非常基本的方案解析器。我遇到的问题是实施。
我打开一个文件,我想解析单个令牌:
while(sc.hasNext()) {
System.out.println(sc.next());
}
通常,要获得令牌,这很好。但在计划中,识别列表的开始和结束是至关重要的;我的程序的功能取决于此,因此我需要一种处理令牌的方法,例如:
(define
或者
poly))
作为多个标记,其中任何括号都是它自己的标记:
(
define
poly
)
)
如果我能做到这一点,我可以正确识别要添加到我的符号表中的不同符号,并知道何时/如何将节点添加到我的解析树中。
Java API 显示扫描器类没有任何方法可以完全按照我的意愿进行操作。我能想到的最接近的事情是使用括号作为自定义分隔符,这将使每个标记足够干净,以便我的逻辑更容易识别,但是我的括号会发生什么?
我正在考虑的另一种方法是放弃 Java 标记器,而只是逐个字符地扫描,直到找到一个完整的符号。
我应该怎么办?尝试解决 Java 扫描器方法,或者只是逐个字符的方法?