Package hampi.parser

Source Code of hampi.parser.CFGNonterminal

package hampi.parser;

import hampi.HampiException;
import hampi.parser.HProgram.HTypeEnvironment;

import java.util.*;

public final class CFGNonterminal extends CFGProductionElement{

  private final String name;

  public CFGNonterminal(String text){
    super(HGrammarElementKind.CFG_NONTERMINAL);
    this.name = text;
  }

  public String getName(){
    return name;
  }

  @Override
  public String unparse(){
    return name;
  }

  @Override
  public void typeCheck(HTypeEnvironment tenv){
    if (tenv.getType(name) == null)
      throw new HampiException("undefined nonterminal " + name);
    if (tenv.getType(name) != HType.CFG_TYPE)
      throw new HampiException("expected a nonterminal " + name);
  }

  @Override
  public void accept(HGrammarVisitor v){
    v.visitCFGNonterminal(this);
  }

  @Override
  public Set<String> getTerminals(){
    return Collections.emptySet();
  }
}
TOP

Related Classes of hampi.parser.CFGNonterminal

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.