コード例 #1
0
 private void changeDfaState(char c) {
   dfa.changeState(c);
   handler.moveForward();
 }
コード例 #2
0
 private void handleErrorState() {
   dfa.reset();
   handler.printLexicalException();
   Compiler.errorOccured();
   popToken();
 }
コード例 #3
0
 private void prepareToFindNextToken() {
   dfa.reset();
   handler.moveBackward();
   removeSpaces();
 }
コード例 #4
0
 private void handleNonAcceptState() {
   if (dfa.isInErrorState()) handleErrorState();
   else if (dfa.isInSpaceState()) dfa.reset();
 }
コード例 #5
0
 private void processNextChar(char c) {
   changeDfaState(c);
   if (dfa.isNotInAcceptState()) handleNonAcceptState();
 }
コード例 #6
0
 private TokenTuple findToken() {
   while (dfa.isNotInAcceptState()) processNextChar(handler.getCurrentChar());
   return dfa.getToken();
 }
コード例 #7
0
 private void removeSpaces() {
   while (handler.hasChars() && handler.isAtSpaceChar() && dfa.isInSpaceState())
     processNextChar(handler.getCurrentChar());
 }
コード例 #8
0
 public void reset() {
   dfa.reset();
 }