public <ELEMENT, STATE, TOKEN> ELEMENT nfaToGrammar(Nfa<STATE> nfa, Function<STATE, TOKEN> state2token, ProductionFactory<ELEMENT, TOKEN> grammarFactory) { return nfaToGrammar(nfa, state2token, null, grammarFactory); }
public <ELEMENT, STATE> ELEMENT nfaToGrammar(Nfa<STATE> nfa, ProductionFactory<ELEMENT, STATE> grammarFactory) { return nfaToGrammar(nfa, Functions.<STATE> identity(), grammarFactory); }
public <ELEMENT, STATE> ELEMENT nfaToGrammar(Nfa<STATE> nfa, ProductionFactory<ELEMENT, STATE> grammarFactory) { return nfaToGrammar(nfa, Functions.<STATE> identity(), grammarFactory); }
public ISerializationDiagnostic createBacktrackingFailedDiagnostic(SerializableObject semanticObject, EObject context, Nfa<ISemState> nfa) { GrammarElementTitleSwitch ele2str = new GrammarElementTitleSwitch().showAssignments().setValueForNull(null); ProductionStringFactory<AbstractElement> grammarFactory = new ProductionStringFactory<AbstractElement>(ele2str); String grammar = new NfaToProduction().nfaToGrammar(nfa, new GetGrammarEle(), grammarFactory); StringBuilder msg = new StringBuilder(); msg.append("Could not serialize EObject via backtracking.\n"); msg.append("Constraint: " + grammar + "\n"); msg.append(semanticObject.getValuesString()); return new SerializationDiagnostic(BACKTRACKING_FAILED, semanticObject.getEObject(), context, msg.toString()); }
public AbstractElementAlias getSyntax() { Pda<ISynState, RuleCall> pathToTarget = getPathToTarget(); return new NfaToProduction().nfaToGrammar(pathToTarget, new GetGrammarElement(), new GrammarAliasFactory()); }
public List<AbstractElementAlias> getAmbiguousSyntaxes() { if (ambiguousSyntaxes != null) return ambiguousSyntaxes; if (!isSyntacticallyAmbiguous()) return ambiguousSyntaxes = Collections.emptyList(); ambiguousSyntaxes = Lists.newArrayList(); Nfa<ISynState> nfa = new PdaUtil().filterUnambiguousPaths(getPathToTarget()); nfa = new NfaUtil().filter(nfa, new Filter()); AbstractElementAlias syntax = new NfaToProduction().nfaToGrammar(nfa, new GetGrammarElement(), new GrammarAliasFactory()); if (syntax instanceof GroupAlias) { GroupAlias group = (GroupAlias) syntax; for (AbstractElementAlias child : group.getChildren()) if (child.isMany() || child.isOptional() || child instanceof AlternativeAlias) ambiguousSyntaxes.add(child); } else ambiguousSyntaxes.add(syntax); return ambiguousSyntaxes; }
public AbstractElementAlias getShortSyntax() { Nfa<ISynState> path = new NfaUtil().filter(getPathToTarget(), new Filter()); return new NfaToProduction().nfaToGrammar(path, new GetGrammarElement(), new GrammarAliasFactory()); }