private SymTabEntry parseRoutineName(Token token, String dummyName) throws Exception { SymTabEntry routineId = null; // Parse the routine name identifier. if (token.getType() == IDENTIFIER) { String routineName = token.getText().toLowerCase(); routineId = symTabStack.lookupLocal(routineName); // Not already defined locally: Enter into the local symbol table. if (routineId == null) { routineId = symTabStack.enterLocal(routineName); routineId.appendLineNumber(token.getLineNumber()); } // If already defined, it should be a forward definition. else { routineId = null; errorHandler.flag(token, IDENTIFIER_REDEFINED, this); } token = nextToken(); // consume routine name identifier } else { errorHandler.flag(token, MISSING_IDENTIFIER, this); } // If necessary, create a dummy routine name symbol table entry. if (routineId == null) { routineId = symTabStack.enterLocal(dummyName); } return routineId; }