나는 컴파일러를 구축 중입니다. 이 중 일부 사양은 다음과 같습니다.사용자 지정 정규식을 사용하여 문자열 분할 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
난이 얻을 수있는 가장 효율적인 방법을 알고 싶습니다. 문자열 리터럴 및 주석의 발생을 여전히 검증해야합니다. (예 : 제대로 묶여 있는지 확인하십시오). 지금까지는 각 행을 공백으로 나눠서 어휘에 "$"또는 "*"가 포함되어 있으면 문자열 리터럴을 검증 할 것입니다. 다음은 구현 한 것입니다.
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
예. 알았어. 나는 손으로 렉싱에 관심이있다. –
하지만 2 차 라이브러리는 사용할 수 없습니다. –