content: package com.alibaba.qlexpress4.aparser;
  
  import org.antlr.v4.runtime.CharStream;
  import org.antlr.v4.runtime.Token;
  import org.antlr.v4.runtime.TokenFactory;
  import org.antlr.v4.runtime.TokenSource;
  
  public class AliasTokenSource implements TokenSource {
      
      private final TokenSource tokenSource;
      
      private final ParserOperatorManager operatorManager;
      
      AliasTokenSource(TokenSource tokenSource, ParserOperatorManager operatorManager) {
          this.tokenSource = tokenSource;
          this.operatorManager = operatorManager;
      }
      
      @Override
      public Token nextToken() {
          return SyntaxTreeFactory.preHandleToken(tokenSource.nextToken(), operatorManager);
      }
      
      @Override
      public int getLine() {
          return tokenSource.getLine();
      }
      
      @Override
      public int getCharPositionInLine() {
          return tokenSource.getCharPositionInLine();
      }
      
      @Override
      public CharStream getInputStream() {
          return tokenSource.getInputStream();
      }
      
      @Override
      public String getSourceName() {
          return tokenSource.getSourceName();
      }
      
      @Override
      public void setTokenFactory(TokenFactory<?> factory) {
          tokenSource.setTokenFactory(factory);
      }
      
      @Override
      public TokenFactory<?> getTokenFactory() {
          return tokenSource.getTokenFactory();
      }
  }
  