我正在構建一個編譯器。一些這方面的規格如下:使用自定義正則表達式分割字符串java
- 字符串文本是由美元符號(「$」)封閉 - 如。 $ string sample $
- 評論包含在「*」中 - 例如。 *樣品評論*
- 評論可能存在任何地方,除了操作之間 - 例如。 4 + *樣品評論* 5 - (這是不允許的)
現在我必須拆分源代碼行來標記它。 例案例:
PRINT $ THE FLOAT IS $ * DISPLAY THE RESULT *
當我將它記號化,它應該產生:
PRINT - token is KEYWORD
THE FLOAT IS - token is STRING_LITERAL
DISPLAY THE RESULT - token is COMMENT
我想知道最有效的方式獲得此。請注意,我仍然需要驗證字符串文字和註釋的發生。 (例如檢查它是否正確封閉)。到目前爲止,我的方法是用whitespaces分割每一行,並且當一個詞位包含「$」或「*」時,我將驗證字符串文字。這裏是我的實施:
private void getLexemes(){
for(String line : newSourceCode){
String[] lexemesInALine = line.trim().split("[\\s]+");
for(String lexemeInALine : lexemesInALine){
if(!(lexemeInALine.contains("$"))){
lexemes.add(lexemeInALine);
tempTokens.add(findToken(lexemeInALine));
line = line.replaceFirst(lexemeInALine,"").trim();
}else{
validateStringType(line);
break;
}
}
謝謝你的幫助。
您是否有興趣在詞法手?有許多詞法分析器/解析器生成器可用於專注於更高級別的部分。 – 9000
是的。你說對了。我有興趣手工打掃。 –
但我們不允許使用輔助庫。 –