1
Java에서 어휘 분석기를 작성 중입니다. 이것은 내가 지금 가지고있는 것입니다 : 내가 좋아하는 '9'와 운영자에 '0'에서 숫자를 읽을 수있는 코드로Java로 파일에서 산술 표현식의 자연수 읽기.
import java.io.*;
enum TokenType{ NUM,SOMA, MULT,APar,FPar, EOF}
class Token{
char lexema;
TokenType token;
Token (char l, TokenType t)
{ lexema=l;token = t;}
}
class AnaliseLexica {
BufferedReader arquivo;
AnaliseLexica(String a) throws Exception
{
this.arquivo = new BufferedReader(new FileReader(a));
}
Token getNextToken() throws Exception
{
Token token;
int eof = -1;
char currchar;
int currchar1;
do{
currchar1 = arquivo.read();
currchar = (char) currchar1;
} while (currchar == '\n' || currchar == ' ' || currchar =='\t' || currchar == '\r');
if(currchar1 != eof && currchar1 !=10)
{
if (currchar >= '0' && currchar <= '9')
return (new Token (currchar, TokenType.NUM));
else
switch (currchar){
case '(':
return (new Token (currchar,TokenType.APar));
case ')':
return (new Token (currchar,TokenType.FPar));
case '+':
return (new Token (currchar,TokenType.SOMA));
case '*':
return (new Token (currchar,TokenType.MULT));
default: throw (new Exception("Caractere inválido: " + ((int) currchar)));
}
}
arquivo.close();
return (new Token(currchar,TokenType.EOF));
}
'*', '+'코드의이 부분 사용 :
do{
currchar1 = arquivo.read();
currchar = (char) currchar1;
} while (currchar == '\n' || currchar == ' ' || currchar =='\t' || currchar == '\r');
을
파일에서 자연수를 읽고 산술 연산자를 계속 읽는 방법은 무엇입니까?
가를 추적 당신이 클래스 스캐너를 사용할 수없는 경우
, 당신은 데이터를 토큰 화,을, BufferedReader를 계속 사용할 수 있습니다 현재 char로 처리 할 작업을 알 수 있거나 처리중인 토큰 유형을 추적 할 수있는 이전 char. – davidbuzatto