@Override public NonTerminal shallowCopy() { return new NonTerminal(this); } }
public Production(NonTerminal sort, java.util.List<ProductionItem> items) { super(); this.items = items; this.sort = sort.getSort(); }
@Override public int hashCode() { int hash = sort.hashCode(); for (PriorityBlock pb : priorityBlocks) hash += pb.hashCode(); return hash; }
public Set<org.kframework.definition.Sentence> apply(Syntax s) { Set<org.kframework.definition.Sentence> res = new HashSet<>(); org.kframework.kore.Sort sort = s.getDeclaredSort().getSort(); if (it instanceof NonTerminal) { NonTerminal nt = (NonTerminal)it; items.add(NonTerminal(nt.getSort(), nt.getName())); } else if (it instanceof UserList) { throw new AssertionError("Lists should have applied before.");
@Override public boolean equals(Object obj) { if (obj == null) return false; if (this == obj) return true; if (!(obj instanceof Restrictions)) return false; Restrictions syn = (Restrictions) obj; if (!pattern.equals(syn.pattern)) return false; if (!(sort != null ? sort.equals(syn.sort) : terminal.equals(syn.terminal))) return false; return true; }
public void visit(Syntax syntax) { this.sort = syntax.getDeclaredSort().getRealSort(); syntax.getPriorityBlocks().forEach(pb -> pb.getProductions().forEach(this::visit)); }
@Override public boolean equals(Object obj) { if (obj == null) return false; if (this == obj) return true; if (!(obj instanceof Syntax)) return false; Syntax syn = (Syntax) obj; if (!syn.getDeclaredSort().equals(this.sort)) return false; if (syn.priorityBlocks.size() != priorityBlocks.size()) return false; for (int i = 0; i < syn.priorityBlocks.size(); i++) { if (!syn.priorityBlocks.get(i).equals(priorityBlocks.get(i))) return false; } return true; }
public Production(NonTerminal sort, java.util.List<ProductionItem> items, String ownerModule) { super(); this.items = items; this.sort = sort.getSort(); this.ownerModuleName = ownerModule; }
/** Parses and returns a NonTerminal but not a List, NeList, Lexer, or Token */ final public NonTerminal SimpleSortID() throws ParseException { Location loc = startLoc(); Sort sort; Optional<String> name = Optional.empty(); if (jj_2_1(2147483647)) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case UPPER_ID: jj_consume_token(UPPER_ID); break; case LOWER_ID: jj_consume_token(LOWER_ID); break; default: jj_la1[3] = jj_gen; jj_consume_token(-1); throw new ParseException(); } name = Optional.of(image()); jj_consume_token(44); } else { ; } sort = SimpleSort(); {if (true) return markLoc(loc, new NonTerminal(sort, name));} throw new Error("Missing return statement in function"); }
@Override public int hashCode() { int hash = pattern.hashCode(); hash += sort != null ? sort.hashCode() : terminal.hashCode(); return hash; }
private String getPrefixLabel(boolean kore) { String label = ""; List<String> sorts = new ArrayList<>(); for (ProductionItem pi : items) { if (pi instanceof NonTerminal) { label += "_"; sorts.add(((NonTerminal) pi).getSort().name()); } else if (pi instanceof Terminal) { label += ((Terminal) pi).getTerminal(); } else if (pi instanceof UserList) { label += "_" + ((UserList) pi).separator + "_"; sorts.add(((UserList) pi).sort.name()); sorts.add(sort.name()); } } return label + "_" + ownerModuleName + (kore ? "_" + sorts.stream().reduce("", (s1, s2) -> s1 + "_" + s2) : ""); }
Production prod = new Production(new NonTerminal(Sort(""), Optional.empty()), items); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case LSQUARE:
private static void check(ModuleItem i) { if (i instanceof Syntax) { Syntax s = (Syntax) i; for (PriorityBlock b : s.getPriorityBlocks()) { for (Production p : b.getProductions()) { if (p.getItems().size() == 1 && p.getItems().get(0) instanceof UserList) { // Syntax Es ::= List{E,""} Sort listSort = s.getDeclaredSort().getSort(); // Es Sort elemSort = ((UserList) p.getItems().get(0)).getSort(); // E if (isBaseSort(listSort)) { throw KEMException.compilerError(listSort + " can not be extended to be a list sort.", p); } if (listSort.equals(elemSort)) { throw KEMException.compilerError("Circular lists are not allowed.", p); } } else { for (ProductionItem it : p.getItems()) { if (it instanceof UserList) { // Syntax Es ::= ... List{E,""} ... throw KEMException.compilerError("Inline list declarations are not allowed.", it); } } } } } } } }