Package com.googlecode.goclipse.go.lang.parser

Source Code of com.googlecode.goclipse.go.lang.parser.PackageParser

package com.googlecode.goclipse.go.lang.parser;

import java.io.File;
import java.io.IOException;

import com.googlecode.goclipse.Activator;
import com.googlecode.goclipse.go.lang.lexer.Lexer;
import com.googlecode.goclipse.go.lang.lexer.TokenListener;
import com.googlecode.goclipse.go.lang.lexer.TokenType;
import com.googlecode.goclipse.go.lang.lexer.Tokenizer;
import com.googlecode.goclipse.go.lang.model.Import;
import com.googlecode.goclipse.go.lang.model.Package;

public class PackageParser implements TokenListener{

  private enum State {
       START, CONSUME, FINISHED, ERROR
    }
 
  private File    file  = null;
  private State   state = State.START;
  private Package pckg  = new Package();

  /**
   * @param tokenizer
   * @param file
   */
  public PackageParser(Tokenizer tokenizer, File file) {
    tokenizer.addTokenListener(this);
    this.file = file;
    pckg.setFile(file);
  }
 
  @Override
  public void tokenFound(TokenType type, String value, boolean inComment, int linenumber, int start, int end) {
   
    if (type.isWhiteSpace() || inComment) {
           return;
        }
   
    switch(state){
   
    case START:
      if(TokenType.PACKAGE.equals(type)){
        state = State.CONSUME;
      }
      break;
    case CONSUME:
      if(TokenType.IDENTIFIER.equals(type)){
        pckg.setName(value);
        pckg.setLine(linenumber);
      }
      state = State.FINISHED;
     
    case FINISHED:
      break;
    }
  }

  /**
   *
   * @return
   */
  public Package getPckg() {
    return pckg;
  }

  /**
   *
   * @param pckg
   */
  public void setPckg(Package pckg) {
    this.pckg = pckg;
  }
 
  public static void main(String[] args) {

    Lexer         lexer         = new Lexer();
    Tokenizer     tokenizer     = new Tokenizer(lexer);
    PackageParser packageParser = new PackageParser(tokenizer, null);
    ImportParser  importParser  = new ImportParser(tokenizer, null);

    try {
      lexer.scan(new File("test_go/import_test.go"));
      Activator.logInfo(packageParser.pckg.getName()+" line="+packageParser.pckg.getLine());
      for (Import imp : importParser.getImports()) {
        Activator.logInfoimp.prefix + " :: " + imp.path+ " :: " + imp.getLine());
      }
    } catch (IOException e) {
      Activator.logError(e);
    }
  }

  @Override
  public boolean isWhitespaceParser() {
    // TODO Auto-generated method stub
    return false;
  }
}
TOP

Related Classes of com.googlecode.goclipse.go.lang.parser.PackageParser

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.