public Object clone() { Label l; try { l = (Label)super.clone(); l.label = this.label; l.labelSet = new IntervalSet(); l.labelSet.addAll(this.labelSet); } catch (CloneNotSupportedException e) { throw new InternalError(); } return l; }
/** For lexer grammars, return everything in unicode not in set. * For parser and tree grammars, return everything in token space * from MIN_TOKEN_TYPE to last valid token type or char value. */ public IntSet complement(IntSet set) { //System.out.println("complement "+set.toString(this)); //System.out.println("vocabulary "+getTokenTypes().toString(this)); IntSet c = set.complement(getTokenTypes()); //System.out.println("result="+c.toString(this)); return c; }
IntSet intersection = s_i.and(t); reachableLabels.set(i, new Label(intersection)); IntSet existingMinusNewElements = s_i.subtract(t); if ( !existingMinusNewElements.isNil() ) { remainder = t.subtract(s_i); if ( remainder.isNil() ) { break; // nothing left to add to set. done! if ( !remainder.isNil() ) {
if ( elements.member(ttype) ) (c!=null?c.getText():null)); elements.add(ttype); elements.addAll(ruleSet); if ( elements.member(ttype) ) elements.add(ttype); if ( state.backtracking==0 ) { ttype = grammar.getTokenType((s!=null?s.getText():null)); if ( elements.member(ttype) ) elements.add(ttype); elements.addAll(IntervalSet.of(a,b)); if ( state.backtracking==0 ) { Transition setTrans = (gset!=null?((TreeToNFAConverter.set_return)gset).g:null).left.transition(0); elements.addAll(setTrans.label.getSet()); if ( state.backtracking==0 ) { IntSet not = grammar.complement(ns); elements.addAll(not);
public void add(Label a) { if ( isAtom() ) { labelSet = IntervalSet.of(label); label=SET; if ( a.isAtom() ) { labelSet.add(a.getAtom()); } else if ( a.isSet() ) { labelSet.addAll(a.getSet()); } else { throw new IllegalStateException("can't add element to Label of type "+label); } return; } if ( isSet() ) { if ( a.isAtom() ) { labelSet.add(a.getAtom()); } else if ( a.isSet() ) { labelSet.addAll(a.getSet()); } else { throw new IllegalStateException("can't add element to Label of type "+label); } return; } throw new IllegalStateException("can't add element to Label of type "+label); }
public static boolean doNotAttemptAnalysis() { return !getErrorState().errorMsgIDs.and(ERRORS_FORCING_NO_ANALYSIS).isNil(); }
buf.append(Stats.sum(cyclicDFAStates)); buf.append('\t'); buf.append(grammar.getTokenTypes().size()); buf.append('\t'); buf.append(grammar.DFACreationWallClockTimeInMS);
/** Report that at least 2 alts have recursive constructs. There is * no way to build a DFA so we terminated. */ public void reportNonLLStarDecision(DFA dfa) { /* System.out.println("non-LL(*) DFA "+dfa.decisionNumber+", alts: "+ dfa.recursiveAltSet.toList()); */ nonLLStarDecision = true; dfa.nfa.grammar.numNonLLStar++; altsWithProblem.addAll(dfa.recursiveAltSet.toList()); }
/** Make a set label */ public Label(IntSet labelSet) { if ( labelSet==null ) { this.label = SET; this.labelSet = IntervalSet.of(INVALID); return; } int singleAtom = labelSet.getSingleElement(); if ( singleAtom!=INVALID ) { // convert back to a single atomic element if |labelSet|==1 label = singleAtom; return; } this.label = SET; this.labelSet = labelSet; }
public IntSet complement(IntSet set) { if ( set==null ) { return this.complement(); } return set.subtract(this); }
public boolean matches(int atom) { if ( label==atom ) { return true; // handle the single atom case efficiently } if ( isSet() ) { return labelSet.member(atom); } return false; }
IntSet intersection = s_i.and(t); reachableLabels.set(i, new Label(intersection)); IntSet existingMinusNewElements = s_i.subtract(t); if ( !existingMinusNewElements.isNil() ) { remainder = t.subtract(s_i); if ( remainder.isNil() ) { break; // nothing left to add to set. done! if ( !remainder.isNil() ) {
if ( elements.member(ttype) ) (c!=null?c.getText():null)); elements.add(ttype); elements.addAll(ruleSet); if ( elements.member(ttype) ) elements.add(ttype); if ( state.backtracking==0 ) { ttype = grammar.getTokenType((s!=null?s.getText():null)); if ( elements.member(ttype) ) elements.add(ttype); elements.addAll(IntervalSet.of(a,b)); if ( state.backtracking==0 ) { Transition setTrans = (gset!=null?((TreeToNFAConverter.set_return)gset).g:null).left.transition(0); elements.addAll(setTrans.label.getSet()); if ( state.backtracking==0 ) { IntSet not = grammar.complement(ns); elements.addAll(not);
public void add(Label a) { if ( isAtom() ) { labelSet = IntervalSet.of(label); label=SET; if ( a.isAtom() ) { labelSet.add(a.getAtom()); } else if ( a.isSet() ) { labelSet.addAll(a.getSet()); } else { throw new IllegalStateException("can't add element to Label of type "+label); } return; } if ( isSet() ) { if ( a.isAtom() ) { labelSet.add(a.getAtom()); } else if ( a.isSet() ) { labelSet.addAll(a.getSet()); } else { throw new IllegalStateException("can't add element to Label of type "+label); } return; } throw new IllegalStateException("can't add element to Label of type "+label); }
public static boolean doNotAttemptAnalysis() { return !getErrorState().errorMsgIDs.and(ERRORS_FORCING_NO_ANALYSIS).isNil(); }