希望我的標題不是完全可怕的。我真的不知道應該調用什麼。我正在嘗試用Java編寫一個非常基本的方案解析器。我遇到的問題是實施。Java,如何將一部分令牌識別爲單獨的令牌?
我打開一個文件,我想分析單獨的標記:
while(sc.hasNext()) {
System.out.println(sc.next());
}
一般來說,要獲得令牌,這是好的。但在方案中,識別列表的開始和結束是至關重要的;我的程序的功能依賴於這一點,所以我需要一種方法來治療令牌如:
(define
或
poly))
由於多個令牌,其中任何括號是它自己的令牌:
(
define
poly
)
)
如果我能做到這一點,我可以正確識別不同的符號添加到我的symtab,並知道何時/如何將節點添加到我的分析樹。
Java API顯示scanner類沒有任何方法來完成我想要的功能。我能想到的最接近的事情是使用parantheses作爲自定義分隔符,這將使每個標記足夠乾淨以便通過我的邏輯更容易地識別,但是然後我的括號會發生什麼?
我正在考慮的另一種方法是放棄Java tokenizer,並且只是通過字符掃描char,直到找到完整的符號。
我該怎麼辦?試着去解決Java掃描器方法,或者只是逐個字符的方法?
一噸,它不只是空白和parens,但也有各種引號。基於分隔符的掃描不會在那裏工作。 –
SO上的相關帖子:http:// stackoverflow。com/questions/17376475/antlr-grammar-for-scheme-r5rs,http://stackoverflow.com/questions/6344766/antlr-resolving-non-ll-problems-and-syntactic-predicates/6349009#6349009。 –
@WillNess如果他們不那麼先進,那些鏈接會更有幫助。我正在編寫的程序是編譯器設計的一門精美課程,這在我的大學裏甚至都不是必需的課程。我現在也明白,我不能使用基於分隔符的方法,所以我認爲基於字符的字符是我唯一的選擇... – GrinReaper