mirror of
https://github.com/sigmasternchen/xtext-core
synced 2025-03-16 16:58:56 +00:00
Added @Override annotations to interface implementations due to recent switching of Java compatibility level to 6
Signed-off-by: Miro Spönemann <miro.spoenemann@itemis.de>
This commit is contained in:
parent
850c21c152
commit
0f09576578
499 changed files with 2075 additions and 8 deletions
|
@ -78,6 +78,7 @@ public class ContentAssistContext {
|
|||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept(AbstractElement element) {
|
||||
if (element == null)
|
||||
throw new NullPointerException("element may not be null");
|
||||
|
|
|
@ -21,6 +21,7 @@ public interface IFollowElementAcceptor {
|
|||
this.decorated = decorated;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept(AbstractElement element) {
|
||||
if (element != null)
|
||||
decorated.accept(element);
|
||||
|
|
|
@ -60,6 +60,7 @@ public abstract class AbstractContentAssistParser implements IContentAssistParse
|
|||
return lexer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<FollowElement> getFollowElements(FollowElement element) {
|
||||
if (element.getLookAhead() <= 1)
|
||||
throw new IllegalArgumentException("lookahead may not be less than or equal to 1");
|
||||
|
@ -74,6 +75,7 @@ public abstract class AbstractContentAssistParser implements IContentAssistParse
|
|||
parser.getUnorderedGroupHelper().initializeWith(parser);
|
||||
final Iterator<LookAheadTerminal> iter = element.getLookAheadTerminals().iterator();
|
||||
ObservableXtextTokenStream tokens = new ObservableXtextTokenStream(new TokenSource(){
|
||||
@Override
|
||||
public Token nextToken() {
|
||||
if (iter.hasNext()) {
|
||||
LookAheadTerminal lookAhead = iter.next();
|
||||
|
@ -81,6 +83,7 @@ public abstract class AbstractContentAssistParser implements IContentAssistParse
|
|||
}
|
||||
return Token.EOF_TOKEN;
|
||||
}
|
||||
@Override
|
||||
public String getSourceName() {
|
||||
return "LookAheadTerminalTokenSource";
|
||||
}
|
||||
|
@ -104,36 +107,44 @@ public abstract class AbstractContentAssistParser implements IContentAssistParse
|
|||
parser.setUnorderedGroupHelper(new IUnorderedGroupHelper() {
|
||||
|
||||
boolean first = true;
|
||||
@Override
|
||||
public void initializeWith(BaseRecognizer recognizer) {
|
||||
helper.initializeWith(recognizer);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void enter(UnorderedGroup group) {
|
||||
if (!first)
|
||||
helper.enter(group);
|
||||
first = false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void leave(UnorderedGroup group) {
|
||||
helper.leave(group);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canSelect(UnorderedGroup group, int index) {
|
||||
return helper.canSelect(group, index);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void select(UnorderedGroup group, int index) {
|
||||
helper.select(group, index);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void returnFromSelection(UnorderedGroup group) {
|
||||
helper.returnFromSelection(group);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canLeave(UnorderedGroup group) {
|
||||
return helper.canLeave(group);
|
||||
}
|
||||
|
||||
@Override
|
||||
public UnorderedGroupState snapShot(UnorderedGroup... groups) {
|
||||
return helper.snapShot(groups);
|
||||
}
|
||||
|
@ -165,6 +176,7 @@ public abstract class AbstractContentAssistParser implements IContentAssistParse
|
|||
ObservableXtextTokenStream stream = (ObservableXtextTokenStream) parser.getTokenStream();
|
||||
stream.setListener(new StreamListener() {
|
||||
|
||||
@Override
|
||||
public void announceEof(int lookAhead) {
|
||||
if (!wasRecovering[0]) {
|
||||
parser.announceEof(lookAhead);
|
||||
|
@ -184,16 +196,19 @@ public abstract class AbstractContentAssistParser implements IContentAssistParse
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void announceConsume() {
|
||||
parser.announceConsume();
|
||||
if (!wasRecovering[0])
|
||||
consumedSomething[0] = true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void announceMark(int marker) {
|
||||
parser.announceMark(marker);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void announceRewind(int marker) {
|
||||
parser.announceRewind(marker);
|
||||
}
|
||||
|
@ -202,12 +217,14 @@ public abstract class AbstractContentAssistParser implements IContentAssistParse
|
|||
|
||||
private int startedErrorRecoveryAt;
|
||||
|
||||
@Override
|
||||
public void endErrorRecovery() {
|
||||
if (!wasEof[0] && !parserState.failed && startedErrorRecoveryAt == parser.input.index()) {
|
||||
wasRecovering[0] = false;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void beginErrorRecovery() {
|
||||
startedErrorRecoveryAt = parser.input.index();
|
||||
wasRecovering[0] = true;
|
||||
|
@ -301,6 +318,7 @@ public abstract class AbstractContentAssistParser implements IContentAssistParse
|
|||
|
||||
protected abstract String[] getInitialHiddenTokens();
|
||||
|
||||
@Override
|
||||
public Collection<FollowElement> getFollowElements(String input, boolean strict) {
|
||||
TokenSource tokenSource = createTokenSource(input);
|
||||
AbstractInternalContentAssistParser parser = createParser();
|
||||
|
|
|
@ -41,6 +41,7 @@ public abstract class AbstractPartialContentAssistParser extends AbstractContent
|
|||
@Inject
|
||||
private EntryPointFinder entryPointFinder;
|
||||
|
||||
@Override
|
||||
public Collection<FollowElement> getFollowElements(IParseResult parseResult, int offset, boolean strict) {
|
||||
ICompositeNode entryPoint = entryPointFinder.findEntryPoint(parseResult, offset);
|
||||
if (entryPoint != null) {
|
||||
|
|
|
@ -105,6 +105,7 @@ public class ContentAssistContextFactory implements Function<ContentAssistContex
|
|||
|
||||
private String document;
|
||||
|
||||
@Override
|
||||
public ContentAssistContext apply(Builder from) {
|
||||
return from.toContext();
|
||||
}
|
||||
|
@ -136,6 +137,7 @@ public class ContentAssistContextFactory implements Function<ContentAssistContex
|
|||
List<Future<?>> futures = Lists.newArrayList();
|
||||
if (!datatypeNode.equals(lastCompleteNode)) {
|
||||
futures.add(pool.submit(new Callable<Void>() {
|
||||
@Override
|
||||
public Void call() throws Exception {
|
||||
handleLastCompleteNodeAsPartOfDatatypeNode();
|
||||
return null;
|
||||
|
@ -147,6 +149,7 @@ public class ContentAssistContextFactory implements Function<ContentAssistContex
|
|||
// any valid grammar element by removing the current token and using it as prefix
|
||||
if (datatypeNode.equals(lastCompleteNode) && completionOffset != lastCompleteNode.getOffset()) {
|
||||
futures.add(pool.submit(new Callable<Void>() {
|
||||
@Override
|
||||
public Void call() throws Exception {
|
||||
handleLastCompleteNodeIsAtEndOfDatatypeNode();
|
||||
return null;
|
||||
|
@ -157,6 +160,7 @@ public class ContentAssistContextFactory implements Function<ContentAssistContex
|
|||
// 4th context: we assume, that the current position is perfectly ok to insert a new token, if the previous one was valid
|
||||
if (!(lastCompleteNode instanceof ILeafNode) || lastCompleteNode.getGrammarElement() != null) {
|
||||
futures.add(pool.submit(new Callable<Void>() {
|
||||
@Override
|
||||
public Void call() throws Exception {
|
||||
handleLastCompleteNodeIsPartOfLookahead();
|
||||
return null;
|
||||
|
@ -331,6 +335,7 @@ public class ContentAssistContextFactory implements Function<ContentAssistContex
|
|||
protected void computeFollowElements(Collection<FollowElement> followElements, final Collection<AbstractElement> result) {
|
||||
FollowElementCalculator calculator = new FollowElementCalculator();
|
||||
calculator.acceptor = new IFollowElementAcceptor(){
|
||||
@Override
|
||||
public void accept(AbstractElement element) {
|
||||
ParserRule rule = GrammarUtil.containingParserRule(element);
|
||||
if (rule == null || !GrammarUtil.isDatatypeRule(rule))
|
||||
|
|
|
@ -50,6 +50,7 @@ public abstract class AbstractInternalContentAssistParser extends Parser impleme
|
|||
private static final Logger logger = Logger.getLogger(AbstractInternalContentAssistParser.class);
|
||||
|
||||
protected class DefaultFollowElementFactory implements IFollowElementFactory {
|
||||
@Override
|
||||
public FollowElement createFollowElement(AbstractElement current, int lookAhead) {
|
||||
if (logger.isDebugEnabled())
|
||||
logger.debug("Creating FollowElement for: " + current);
|
||||
|
@ -246,14 +247,17 @@ public abstract class AbstractInternalContentAssistParser extends Parser impleme
|
|||
}
|
||||
|
||||
protected abstract class StreamAdapter implements ObservableXtextTokenStream.StreamListener {
|
||||
@Override
|
||||
public void announceConsume() {
|
||||
AbstractInternalContentAssistParser.this.announceConsume();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void announceMark(int marker) {
|
||||
AbstractInternalContentAssistParser.this.announceMark(marker);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void announceRewind(int marker) {
|
||||
AbstractInternalContentAssistParser.this.announceRewind(marker);
|
||||
}
|
||||
|
@ -292,6 +296,7 @@ public abstract class AbstractInternalContentAssistParser extends Parser impleme
|
|||
|
||||
protected StreamAdapter createNoOpStrategy() {
|
||||
return new StreamAdapter() {
|
||||
@Override
|
||||
public void announceEof(int lookAhead) {
|
||||
}
|
||||
};
|
||||
|
@ -311,6 +316,7 @@ public abstract class AbstractInternalContentAssistParser extends Parser impleme
|
|||
followElementFactory = AbstractInternalContentAssistParser.this.followElementFactory;
|
||||
AbstractInternalContentAssistParser.this.followElementFactory = new IFollowElementFactory() {
|
||||
|
||||
@Override
|
||||
public FollowElement createFollowElement(AbstractElement current, int lookAhead) {
|
||||
if (lastKnownSyntaxErrors == Integer.MAX_VALUE || state.lastErrorIndex < 0) {
|
||||
FollowElement result = followElementFactory.createFollowElement(current, lookAhead);
|
||||
|
@ -327,6 +333,7 @@ public abstract class AbstractInternalContentAssistParser extends Parser impleme
|
|||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public void announceEof(int lookAhead) {
|
||||
try {
|
||||
if (predictionLevel == 0) {
|
||||
|
@ -390,6 +397,7 @@ public abstract class AbstractInternalContentAssistParser extends Parser impleme
|
|||
|
||||
private AbstractElement lastAddedElement;
|
||||
|
||||
@Override
|
||||
public void announceEof(int lookAhead) {
|
||||
AbstractElement current = getCurrentGrammarElement();
|
||||
if (current != null
|
||||
|
@ -408,6 +416,7 @@ public abstract class AbstractInternalContentAssistParser extends Parser impleme
|
|||
protected StreamAdapter createNotErrorRecoveryStrategy() {
|
||||
return new StreamAdapter() {
|
||||
|
||||
@Override
|
||||
public void announceEof(int lookAhead) {
|
||||
if (!state.errorRecovery && !mismatch && ((!isBacktracking() || marked > 0) || wasErrorCount <= 0)) {
|
||||
AbstractElement current = getCurrentGrammarElement();
|
||||
|
@ -428,6 +437,7 @@ public abstract class AbstractInternalContentAssistParser extends Parser impleme
|
|||
|
||||
private boolean wasErrorRecovery = false;
|
||||
|
||||
@Override
|
||||
public void announceEof(int lookAhead) {
|
||||
wasErrorRecovery = wasErrorRecovery || state.errorRecovery;
|
||||
if (!wasErrorRecovery && !mismatch) {
|
||||
|
@ -505,6 +515,7 @@ public abstract class AbstractInternalContentAssistParser extends Parser impleme
|
|||
throw new IllegalArgumentException("tokenType " + token.getType() + " seems to be invalid.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void announceEof(int lookAhead) {
|
||||
if (logger.isDebugEnabled()) {
|
||||
logger.debug("Reached Eof with LA " + lookAhead);
|
||||
|
@ -541,6 +552,7 @@ public abstract class AbstractInternalContentAssistParser extends Parser impleme
|
|||
delegate.announceEof(lookAhead);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void announceConsume() {
|
||||
if (marked <= 0)
|
||||
localTrace.clear();
|
||||
|
@ -559,6 +571,7 @@ public abstract class AbstractInternalContentAssistParser extends Parser impleme
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void announceRewind(int marker) {
|
||||
int useLookAhead = -1;
|
||||
if (marker != 0 && delegate == null && strict && predictionLevel != 0 && lookAheadAddOn > 0 && state.syntaxErrors == 0
|
||||
|
@ -577,6 +590,7 @@ public abstract class AbstractInternalContentAssistParser extends Parser impleme
|
|||
marked --;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void announceMark(int marker) {
|
||||
if (marked <= 0) {
|
||||
marked++;
|
||||
|
@ -608,6 +622,7 @@ public abstract class AbstractInternalContentAssistParser extends Parser impleme
|
|||
return followElements;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<Integer, String> getTokenDefMap() {
|
||||
String[] names = getTokenNames();
|
||||
Map<Integer, String> result = Maps.newHashMapWithExpectedSize(names.length - Token.MIN_TOKEN_TYPE);
|
||||
|
|
|
@ -226,6 +226,7 @@ public abstract class AbstractXtextTests extends Assert implements ResourceLoadH
|
|||
return instance.split(",")[0];
|
||||
}
|
||||
|
||||
@Override
|
||||
public final XtextResource getResourceFor(InputStream stream) {
|
||||
try {
|
||||
return getResourceAndExpect(stream, AbstractXtextTests.UNKNOWN_EXPECTATION);
|
||||
|
|
|
@ -48,6 +48,7 @@ public @interface Flaky {
|
|||
*/
|
||||
class Rule implements TestRule {
|
||||
|
||||
@Override
|
||||
public Statement apply(Statement base, Description description) {
|
||||
Flaky flaky = description.getAnnotation(Flaky.class);
|
||||
if (flaky == null) {
|
||||
|
|
|
@ -101,6 +101,7 @@ public class StopwatchRule implements TestRule {
|
|||
return sb.toString();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Statement apply(final Statement base, final Description description) {
|
||||
if (!watchAll && description.getAnnotation(Timed.class) == null)
|
||||
return base;
|
||||
|
|
|
@ -116,6 +116,7 @@ public abstract class AbstractParallelScenarioRunner extends AbstractScenarioRun
|
|||
private void runChildren(final RunNotifier notifier) {
|
||||
for (final FrameworkMethod each : getChildren())
|
||||
scheduler.schedule(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
AbstractParallelScenarioRunner.this.runChild(each, notifier);
|
||||
}
|
||||
|
@ -175,7 +176,8 @@ public abstract class AbstractParallelScenarioRunner extends AbstractScenarioRun
|
|||
futures = Collections.synchronizedList(new ArrayList<Future<?>>());
|
||||
}
|
||||
|
||||
public void finished() {
|
||||
@Override
|
||||
public void finished() {
|
||||
executor.shutdown();
|
||||
for(Future<?> future: futures) {
|
||||
try {
|
||||
|
@ -199,7 +201,8 @@ public abstract class AbstractParallelScenarioRunner extends AbstractScenarioRun
|
|||
}
|
||||
}
|
||||
|
||||
public void schedule(Runnable childStatement) {
|
||||
@Override
|
||||
public void schedule(Runnable childStatement) {
|
||||
futures.add(executor.submit(childStatement));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -24,6 +24,7 @@ import com.google.common.io.CharStreams;
|
|||
*/
|
||||
@Beta
|
||||
public class TestDataProvider extends AbstractParser {
|
||||
@Override
|
||||
public IParseResult parse(ParserRule rule, Reader reader) throws TestDataCarrier {
|
||||
try {
|
||||
throw new TestDataCarrier(CharStreams.toString(reader));
|
||||
|
@ -33,6 +34,7 @@ public class TestDataProvider extends AbstractParser {
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public IParseResult parse(RuleCall ruleCall, Reader reader, int initialLookAhead) throws TestDataCarrier {
|
||||
try {
|
||||
throw new TestDataCarrier(CharStreams.toString(reader));
|
||||
|
|
|
@ -63,6 +63,7 @@ public class WrappingInjectorProvider implements IInjectorProvider, IRegistryCon
|
|||
Injector delegateInjector = delegate.getInjector();
|
||||
final Map<Key<?>, Binding<?>> bindings = delegateInjector.getBindings();
|
||||
Injector injector = Guice.createInjector(Modules.override(new Module() {
|
||||
@Override
|
||||
public void configure(Binder binder) {
|
||||
for(Binding<?> binding: bindings.values()) {
|
||||
Type typeLiteral = binding.getKey().getTypeLiteral().getType();
|
||||
|
@ -72,6 +73,7 @@ public class WrappingInjectorProvider implements IInjectorProvider, IRegistryCon
|
|||
}
|
||||
}
|
||||
}).with(new Module() {
|
||||
@Override
|
||||
public void configure(Binder binder) {
|
||||
binder.bind(IParser.class).toInstance(new TestDataProvider());
|
||||
}
|
||||
|
@ -83,14 +85,17 @@ public class WrappingInjectorProvider implements IInjectorProvider, IRegistryCon
|
|||
return delegate;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void restoreRegistry() {
|
||||
stateBeforeInjectorCreation.restoreGlobalState();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setupRegistry() {
|
||||
stateAfterInjectorCreation.restoreGlobalState();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Injector getInjector() {
|
||||
return injector;
|
||||
}
|
||||
|
|
|
@ -34,6 +34,7 @@ public abstract class AbstractContentAssistProcessorTest extends AbstractXtextTe
|
|||
this.plainSetup = plainSetup;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Injector createInjectorAndDoEMFRegistration() {
|
||||
return plainSetup.createInjectorAndDoEMFRegistration();
|
||||
}
|
||||
|
@ -81,6 +82,7 @@ public abstract class AbstractContentAssistProcessorTest extends AbstractXtextTe
|
|||
return doGetSetup();
|
||||
}
|
||||
return new ISetup() {
|
||||
@Override
|
||||
public Injector createInjectorAndDoEMFRegistration() {
|
||||
if (staticSetup == null) {
|
||||
staticSetup = new SetupExtension(doGetSetup());
|
||||
|
|
|
@ -70,6 +70,7 @@ public abstract class AbstractDamagerRepairerTest extends Assert implements IDoc
|
|||
protected Document createDocument(String before) throws Exception {
|
||||
DocumentTokenSource source = new DocumentTokenSource();
|
||||
source.setLexer(new Provider<Lexer>() {
|
||||
@Override
|
||||
public Lexer get() {
|
||||
return createLexer();
|
||||
}
|
||||
|
@ -84,24 +85,30 @@ public abstract class AbstractDamagerRepairerTest extends Assert implements IDoc
|
|||
assertEquals("length", expLength, actual.getLength());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void documentChanged(DocumentEvent event) {
|
||||
lastRegion = damager.getDamageRegion(new TypedRegion(0,event.getDocument().getLength(), IDocument.DEFAULT_CONTENT_TYPE), event, false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void documentAboutToBeChanged(DocumentEvent event) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setRange(IDocument document, int offset, int length) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public IToken nextToken() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTokenOffset() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTokenLength() {
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -517,18 +517,22 @@ public class ContentAssistProcessorTestBuilder implements Cloneable {
|
|||
final XtextResource xtextResource = loadHelper.getResourceFor(new StringInputStream(Strings.emptyIfNull(currentModelToParse)));
|
||||
if (announceDirtyState) {
|
||||
dirtyResource = new IDirtyResource() {
|
||||
@Override
|
||||
public String getContents() {
|
||||
return currentModelToParse;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getActualContents() {
|
||||
return currentModelToParse;
|
||||
}
|
||||
|
||||
@Override
|
||||
public IResourceDescription getDescription() {
|
||||
return xtextResource.getResourceServiceProvider().getResourceDescriptionManager().getResourceDescription(xtextResource);
|
||||
}
|
||||
|
||||
@Override
|
||||
public URI getURI() {
|
||||
return xtextResource.getURI();
|
||||
}
|
||||
|
|
|
@ -16,18 +16,22 @@ import org.eclipse.jface.viewers.ISelectionProvider;
|
|||
*/
|
||||
public class MockableSelectionProvider implements ISelectionProvider {
|
||||
|
||||
@Override
|
||||
public void addSelectionChangedListener(ISelectionChangedListener listener) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public ISelection getSelection() {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeSelectionChangedListener(ISelectionChangedListener listener) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSelection(ISelection selection) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
|
|
@ -32,166 +32,207 @@ import org.eclipse.swt.graphics.Point;
|
|||
@SuppressWarnings("deprecation")
|
||||
public class MockableTextViewer implements ITextViewer {
|
||||
|
||||
@Override
|
||||
public void activatePlugins() {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addTextInputListener(ITextInputListener listener) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addTextListener(ITextListener listener) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addViewportListener(IViewportListener listener) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void changeTextPresentation(TextPresentation presentation, boolean controlRedraw) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getBottomIndex() {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getBottomIndexEndOffset() {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public IDocument getDocument() {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public IFindReplaceTarget getFindReplaceTarget() {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Point getSelectedRange() {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public ISelectionProvider getSelectionProvider() {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public ITextOperationTarget getTextOperationTarget() {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public StyledText getTextWidget() {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTopIndex() {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTopIndexStartOffset() {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTopInset() {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public IRegion getVisibleRegion() {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void invalidateTextPresentation() {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isEditable() {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean overlapsWithVisibleRegion(int offset, int length) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeTextInputListener(ITextInputListener listener) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeTextListener(ITextListener listener) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeViewportListener(IViewportListener listener) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void resetPlugins() {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void resetVisibleRegion() {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void revealRange(int offset, int length) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setAutoIndentStrategy(IAutoIndentStrategy strategy, String contentType) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setDefaultPrefixes(String[] defaultPrefixes, String contentType) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setDocument(IDocument document) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setDocument(IDocument document, int modelRangeOffset, int modelRangeLength) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setEditable(boolean editable) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setEventConsumer(IEventConsumer consumer) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setIndentPrefixes(String[] indentPrefixes, String contentType) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSelectedRange(int offset, int length) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setTextColor(Color color) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setTextColor(Color color, int offset, int length, boolean controlRedraw) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setTextDoubleClickStrategy(ITextDoubleClickStrategy strategy, String contentType) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setTextHover(ITextHover textViewerHover, String contentType) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setTopIndex(int index) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setUndoManager(IUndoManager undoManager) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setVisibleRegion(int offset, int length) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
|
|
@ -32,14 +32,17 @@ public class URIBasedTestResourceDescription extends AbstractResourceDescription
|
|||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterable<QualifiedName> getImportedNames() {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterable<IReferenceDescription> getReferenceDescriptions() {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
@Override
|
||||
public URI getURI() {
|
||||
return uri;
|
||||
}
|
||||
|
|
|
@ -44,16 +44,19 @@ public class AssertableDiagnostics {
|
|||
iteratorStack.add(root.getChildren().iterator());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasNext() {
|
||||
while (iteratorStack.size() > 0 && !iteratorStack.get(iteratorStack.size() - 1).hasNext())
|
||||
iteratorStack.remove(iteratorStack.size() - 1);
|
||||
return iteratorStack.size() != 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterator<Diagnostic> iterator() {
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Diagnostic next() {
|
||||
Diagnostic d = iteratorStack.get(iteratorStack.size() - 1).next();
|
||||
if (d.getChildren().size() > 0)
|
||||
|
@ -61,6 +64,7 @@ public class AssertableDiagnostics {
|
|||
return d;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void remove() {
|
||||
throw new RuntimeException("operation not supported");
|
||||
}
|
||||
|
@ -84,6 +88,7 @@ public class AssertableDiagnostics {
|
|||
this.msg = msg;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean apply(Diagnostic d) {
|
||||
if (severity != null && d.getSeverity() != severity)
|
||||
return false;
|
||||
|
|
|
@ -49,6 +49,7 @@ public class ValidationTestHelper {
|
|||
public void assertNoErrors(final EObject model) {
|
||||
final List<Issue> validate = validate(model);
|
||||
Iterable<Issue> issues = filter(validate, new Predicate<Issue>() {
|
||||
@Override
|
||||
public boolean apply(Issue input) {
|
||||
return Severity.ERROR == input.getSeverity();
|
||||
}
|
||||
|
@ -60,6 +61,7 @@ public class ValidationTestHelper {
|
|||
public void assertNoError(final EObject model, final String issuecode) {
|
||||
final List<Issue> validate = validate(model);
|
||||
Iterable<Issue> issues = filter(validate, new Predicate<Issue>() {
|
||||
@Override
|
||||
public boolean apply(Issue input) {
|
||||
return issuecode.equals(input.getCode());
|
||||
}
|
||||
|
@ -89,6 +91,7 @@ public class ValidationTestHelper {
|
|||
public void assertNoIssues(final EObject root, final EClass objectType) {
|
||||
final List<Issue> validate = validate(root);
|
||||
Iterable<Issue> issues = filter(validate, new Predicate<Issue>() {
|
||||
@Override
|
||||
public boolean apply(Issue input) {
|
||||
EObject object = root.eResource().getEObject(input.getUriToProblem().fragment());
|
||||
if (objectType.isInstance(object)) {
|
||||
|
@ -107,6 +110,7 @@ public class ValidationTestHelper {
|
|||
public void assertNoIssue(final EObject root, final EClass objectType, final String issuecode) {
|
||||
final List<Issue> validate = validate(root);
|
||||
Iterable<Issue> issues = filter(validate, new Predicate<Issue>() {
|
||||
@Override
|
||||
public boolean apply(Issue input) {
|
||||
if (issuecode.equals(input.getCode())) {
|
||||
EObject object = root.eResource().getEObject(input.getUriToProblem().fragment());
|
||||
|
@ -200,6 +204,7 @@ public class ValidationTestHelper {
|
|||
final int offset, final int length, final Severity severity, final List<Issue> validate,
|
||||
final String... messageParts) {
|
||||
return Iterables.filter(validate, new Predicate<Issue>() {
|
||||
@Override
|
||||
public boolean apply(Issue input) {
|
||||
if (Strings.equal(input.getCode(), code) && input.getSeverity()==severity) {
|
||||
if ((offset < 0 || offset == input.getOffset()) && (length < 0 || length == input.getLength())) {
|
||||
|
|
|
@ -35,10 +35,12 @@ public abstract class AbstractLinkedStack<THIS extends AbstractLinkedStack<?, EL
|
|||
this.ele = ele;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasNext() {
|
||||
return ele != null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ELEMENT next() {
|
||||
if (!hasNext())
|
||||
throw new NoSuchElementException();
|
||||
|
@ -47,6 +49,7 @@ public abstract class AbstractLinkedStack<THIS extends AbstractLinkedStack<?, EL
|
|||
return prev.value;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void remove() {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
@ -133,6 +136,7 @@ public abstract class AbstractLinkedStack<THIS extends AbstractLinkedStack<?, EL
|
|||
/**
|
||||
* @since 2.0
|
||||
*/
|
||||
@Override
|
||||
public Iterator<ELEMENT> iterator() {
|
||||
return new ElementIterator(top);
|
||||
}
|
||||
|
|
|
@ -15,6 +15,7 @@ public interface CancelIndicator {
|
|||
boolean isCanceled();
|
||||
|
||||
public final static CancelIndicator NullImpl = new CancelIndicator() {
|
||||
@Override
|
||||
public boolean isCanceled() {
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -25,6 +25,7 @@ public class CollectionBasedAcceptor<T> implements IAcceptor<T> {
|
|||
this.collection = collection;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept(T t) {
|
||||
collection.add(t);
|
||||
}
|
||||
|
|
|
@ -51,6 +51,7 @@ public class EmfFormatter {
|
|||
Collections.singleton(ignoredFeatures[0]) ) :
|
||||
Collections.<EStructuralFeature>emptySet();
|
||||
return objToStr(obj, new Predicate<EStructuralFeature>() {
|
||||
@Override
|
||||
public boolean apply(EStructuralFeature input) {
|
||||
return ignoreUs.contains(input);
|
||||
}
|
||||
|
|
|
@ -17,16 +17,19 @@ public enum ExceptionAcceptor implements IAcceptor<Exception> {
|
|||
LOGGING {
|
||||
private final Logger LOG = Logger.getLogger(ExceptionAcceptor.class);
|
||||
|
||||
@Override
|
||||
public void accept(Exception t) {
|
||||
LOG.error(t.getMessage(), t);
|
||||
}
|
||||
},
|
||||
THROWING {
|
||||
@Override
|
||||
public void accept(Exception t) {
|
||||
Exceptions.throwUncheckedException(t);
|
||||
}
|
||||
},
|
||||
IGNORING {
|
||||
@Override
|
||||
public void accept(Exception t) {
|
||||
}
|
||||
};
|
||||
|
|
|
@ -76,6 +76,7 @@ public class Files {
|
|||
FileFilter myFilter = filter;
|
||||
if (myFilter == null)
|
||||
myFilter = new FileFilter() {
|
||||
@Override
|
||||
public boolean accept(File pathname) {
|
||||
return true;
|
||||
}
|
||||
|
@ -114,6 +115,7 @@ public class Files {
|
|||
*/
|
||||
public static boolean sweepFolder(File folder) throws FileNotFoundException {
|
||||
return Files.cleanFolder(folder, new FileFilter() {
|
||||
@Override
|
||||
public boolean accept(File pathname) {
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -29,9 +29,11 @@ public interface IResourceScopeCache {
|
|||
|
||||
static class NullImpl implements IResourceScopeCache {
|
||||
public final static IResourceScopeCache INSTANCE = new NullImpl();
|
||||
@Override
|
||||
public <T> T get(Object key, Resource res, Provider<T> provider) {
|
||||
return provider.get();
|
||||
}
|
||||
@Override
|
||||
public void clear(Resource res) {}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -29,34 +29,42 @@ public interface ITextRegionWithLineInformation extends ITextRegion {
|
|||
|
||||
static ITextRegionWithLineInformation EMPTY_REGION = new ITextRegionWithLineInformation() {
|
||||
|
||||
@Override
|
||||
public int getOffset() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getLength() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ITextRegion merge(ITextRegion region) {
|
||||
return region;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean contains(ITextRegion other) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean contains(int offset) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getLineNumber() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getEndLineNumber() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ITextRegionWithLineInformation merge(ITextRegionWithLineInformation other) {
|
||||
return other;
|
||||
}
|
||||
|
|
|
@ -54,6 +54,7 @@ public class OnChangeEvictingCache implements IResourceScopeCache {
|
|||
/**
|
||||
* Clears the cache of the given resource.
|
||||
*/
|
||||
@Override
|
||||
public void clear(Resource resource) {
|
||||
getOrCreate(resource).clearValues();
|
||||
}
|
||||
|
@ -65,6 +66,7 @@ public class OnChangeEvictingCache implements IResourceScopeCache {
|
|||
* @param key the cache key. May not be <code>null</code>.
|
||||
* @param provider the strategy to compute the value if necessary. May not be <code>null</code>.
|
||||
*/
|
||||
@Override
|
||||
public <T> T get(Object key, Resource resource, Provider<T> provider) {
|
||||
if(resource == null) {
|
||||
return provider.get();
|
||||
|
|
|
@ -37,6 +37,7 @@ public class PolymorphicDispatcher<RT> {
|
|||
private List<MethodDesc> declaredMethodsOrderedBySpecificParameterType;
|
||||
|
||||
public static class DefaultErrorHandler<RT> implements ErrorHandler<RT> {
|
||||
@Override
|
||||
public RT handle(Object[] params, Throwable e) {
|
||||
return Exceptions.throwUncheckedException(e);
|
||||
}
|
||||
|
@ -48,6 +49,7 @@ public class PolymorphicDispatcher<RT> {
|
|||
return new NullErrorHandler<RT>();
|
||||
}
|
||||
|
||||
@Override
|
||||
public RT handle(Object[] params, Throwable throwable) {
|
||||
// ignore
|
||||
return null;
|
||||
|
@ -66,6 +68,7 @@ public class PolymorphicDispatcher<RT> {
|
|||
return new WarningErrorHandler<RT>(logger);
|
||||
}
|
||||
|
||||
@Override
|
||||
public RT handle(Object[] params, Throwable throwable) {
|
||||
logger.warn("Error in polymorphic dispatcher : "+throwable.getMessage(), throwable);
|
||||
return null;
|
||||
|
@ -86,6 +89,7 @@ public class PolymorphicDispatcher<RT> {
|
|||
this.minParams = minParams;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean apply(Method param) {
|
||||
return param.getName().equals(methodName) && param.getParameterTypes().length >= minParams
|
||||
&& param.getParameterTypes().length <= maxParams;
|
||||
|
@ -245,6 +249,7 @@ public class PolymorphicDispatcher<RT> {
|
|||
private final SimpleCache<List<Class<?>>, List<MethodDesc>> cache =
|
||||
new SimpleCache<List<Class<?>>, List<MethodDesc>>(
|
||||
new Function<List<Class<?>>, List<MethodDesc>>() {
|
||||
@Override
|
||||
public List<MethodDesc> apply(List<Class<?>> paramTypes) {
|
||||
List<MethodDesc> result = new ArrayList<MethodDesc>();
|
||||
Iterator<MethodDesc> iterator = declaredMethodsOrderedBySpecificParameterType.iterator();
|
||||
|
@ -346,6 +351,7 @@ public class PolymorphicDispatcher<RT> {
|
|||
}
|
||||
}
|
||||
Collections.sort(cachedDescriptors, new Comparator<MethodDesc>() {
|
||||
@Override
|
||||
public int compare(MethodDesc o1, MethodDesc o2) {
|
||||
return PolymorphicDispatcher.this.compare(o1, o2);
|
||||
}
|
||||
|
|
|
@ -48,6 +48,7 @@ public class SimpleAttributeResolver<K extends EObject, T> implements Function<K
|
|||
this.attributeName = attributeName;
|
||||
this.discardingAdapter = new DiscardingAdapter(this);
|
||||
attributeCache = new SimpleCache<EClass, EAttribute>(new Function<EClass, EAttribute>() {
|
||||
@Override
|
||||
public EAttribute apply(EClass param) {
|
||||
final EStructuralFeature structuralFeature = param.getEStructuralFeature(attributeName);
|
||||
if (structuralFeature != null && structuralFeature instanceof EAttribute && !structuralFeature.isMany()) {
|
||||
|
@ -59,6 +60,7 @@ public class SimpleAttributeResolver<K extends EObject, T> implements Function<K
|
|||
}
|
||||
});
|
||||
valueCache = new SimpleCache<EObject, T>(new Function<EObject, T>() {
|
||||
@Override
|
||||
@SuppressWarnings("unchecked")
|
||||
public T apply(EObject param) {
|
||||
final EStructuralFeature feature = attributeCache.get(param.eClass());
|
||||
|
@ -76,6 +78,7 @@ public class SimpleAttributeResolver<K extends EObject, T> implements Function<K
|
|||
|
||||
public Iterable<K> getMatches(final Iterable<K> candidates, final T value) {
|
||||
return Iterables.filter(candidates, new Predicate<K>() {
|
||||
@Override
|
||||
public boolean apply(K param) {
|
||||
final T candidateValue = getValue(param);
|
||||
return value.equals(candidateValue);
|
||||
|
@ -91,14 +94,17 @@ public class SimpleAttributeResolver<K extends EObject, T> implements Function<K
|
|||
this.resolver = resolver;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Notifier getTarget() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAdapterForType(final Object type) {
|
||||
return type instanceof DiscardingAdapter;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void notifyChanged(final Notification notification) {
|
||||
if (!notification.isTouch() && Notification.SET == notification.getEventType()) {
|
||||
final Object feature = notification.getFeature();
|
||||
|
@ -112,11 +118,13 @@ public class SimpleAttributeResolver<K extends EObject, T> implements Function<K
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setTarget(final Notifier newTarget) {
|
||||
// nothing to do
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public T apply(final K from) {
|
||||
return getValue(from);
|
||||
}
|
||||
|
|
|
@ -22,14 +22,17 @@ public class TextRegion implements ITextRegion {
|
|||
this.length = length;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getOffset() {
|
||||
return offset;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getLength() {
|
||||
return length;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ITextRegion merge(ITextRegion other) {
|
||||
if (contains(other))
|
||||
return this;
|
||||
|
@ -40,10 +43,12 @@ public class TextRegion implements ITextRegion {
|
|||
return new TextRegion(newOffset, newLength);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean contains(ITextRegion other) {
|
||||
return other == EMPTY_REGION || (other.getOffset() + other.getLength() <= offset + length && other.getOffset() >= offset);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean contains(int offset) {
|
||||
return offset >= this.offset && offset < this.offset + length;
|
||||
}
|
||||
|
|
|
@ -26,10 +26,12 @@ public class TextRegionWithLineInformation extends TextRegion implements ITextRe
|
|||
this.endLineNumber = endLineNumber;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getLineNumber() {
|
||||
return lineNumber;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getEndLineNumber() {
|
||||
return endLineNumber;
|
||||
}
|
||||
|
@ -41,6 +43,7 @@ public class TextRegionWithLineInformation extends TextRegion implements ITextRe
|
|||
return super.merge(other);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ITextRegionWithLineInformation merge(ITextRegionWithLineInformation other) {
|
||||
if (contains(other))
|
||||
return this;
|
||||
|
|
|
@ -54,6 +54,7 @@ public abstract class AbstractReadWriteAcces<P> implements IReadAccess<P> {
|
|||
}
|
||||
};
|
||||
|
||||
@Override
|
||||
public <T> T readOnly(IUnitOfWork<T, P> work) {
|
||||
acquireReadLock();
|
||||
try {
|
||||
|
|
|
@ -21,6 +21,7 @@ public abstract class CancelableUnitOfWork<R,P> implements IUnitOfWork<R, P> {
|
|||
this.cancelIndicator = cancelIndicator;
|
||||
}
|
||||
|
||||
@Override
|
||||
public R exec(P state) throws Exception {
|
||||
return exec(state, cancelIndicator);
|
||||
}
|
||||
|
|
|
@ -32,6 +32,7 @@ public interface IUnitOfWork<R,P> {
|
|||
* @param <T>
|
||||
*/
|
||||
public static abstract class Void<T> implements IUnitOfWork<Object,T> {
|
||||
@Override
|
||||
public final Object exec(T state) throws Exception {
|
||||
process(state);
|
||||
return null;
|
||||
|
|
|
@ -25,6 +25,7 @@ public class CfgUtil {
|
|||
this.cfg = cfg;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean apply(E input) {
|
||||
return cfg.getCall(input) != null;
|
||||
}
|
||||
|
|
|
@ -162,6 +162,7 @@ public class FollowerFunctionImpl<E, T> implements FollowerFunction<E> {
|
|||
return filter;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterable<E> getFollowers(E element) {
|
||||
if (filter(element)) {
|
||||
if (element == null)
|
||||
|
@ -177,6 +178,7 @@ public class FollowerFunctionImpl<E, T> implements FollowerFunction<E> {
|
|||
return production;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterable<E> getStarts(E root) {
|
||||
if (root == null)
|
||||
throw new NullPointerException();
|
||||
|
|
|
@ -86,34 +86,42 @@ public class NfaToProduction {
|
|||
this.root = root;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterable<AbstractElementAlias<TOKEN>> getAlternativeChildren(AbstractElementAlias<TOKEN> ele) {
|
||||
return ele instanceof AlternativeAlias ? ((AlternativeAlias<TOKEN>) ele).getChildren() : null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public AbstractElementAlias<TOKEN> getParent(AbstractElementAlias<TOKEN> ele) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public AbstractElementAlias<TOKEN> getRoot() {
|
||||
return root;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterable<AbstractElementAlias<TOKEN>> getSequentialChildren(AbstractElementAlias<TOKEN> ele) {
|
||||
return ele instanceof GroupAlias ? ((GroupAlias<TOKEN>) ele).getChildren() : null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TOKEN getToken(AbstractElementAlias<TOKEN> owner) {
|
||||
return owner instanceof ElementAlias ? ((ElementAlias<TOKEN>) owner).getElement() : null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterable<AbstractElementAlias<TOKEN>> getUnorderedChildren(AbstractElementAlias<TOKEN> ele) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isMany(AbstractElementAlias<TOKEN> ele) {
|
||||
return ele.isMany();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isOptional(AbstractElementAlias<TOKEN> ele) {
|
||||
return ele.isOptional();
|
||||
}
|
||||
|
@ -268,14 +276,17 @@ public class NfaToProduction {
|
|||
this.stop = stop;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterable<StateAlias<TOKEN>> getFollowers(StateAlias<TOKEN> state) {
|
||||
return state.getOutgoing();
|
||||
}
|
||||
|
||||
@Override
|
||||
public StateAlias<TOKEN> getStart() {
|
||||
return start;
|
||||
}
|
||||
|
||||
@Override
|
||||
public StateAlias<TOKEN> getStop() {
|
||||
return stop;
|
||||
}
|
||||
|
|
|
@ -68,6 +68,7 @@ public class NfaUtil {
|
|||
this.production = production;
|
||||
}
|
||||
|
||||
@Override
|
||||
public T apply(E from) {
|
||||
return production.getToken(from);
|
||||
}
|
||||
|
@ -81,6 +82,7 @@ public class NfaUtil {
|
|||
this.sortBy = sortBy;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int compare(S o1, S o2) {
|
||||
COMPARABLE c1 = sortBy.get(o1);
|
||||
if (c1 == null)
|
||||
|
@ -94,14 +96,17 @@ public class NfaUtil {
|
|||
|
||||
public static class NFAFactory<S> implements NfaFactory<Nfa<S>, S, S> {
|
||||
|
||||
@Override
|
||||
public Nfa<S> create(S start, S stop) {
|
||||
return new NFAImpl<S>(start, stop, Maps.<S, List<S>> newLinkedHashMap());
|
||||
}
|
||||
|
||||
@Override
|
||||
public S createState(Nfa<S> nfa, S token) {
|
||||
return token;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setFollowers(Nfa<S> nfa, S owner, Iterable<S> followers) {
|
||||
((NFAImpl<S>) nfa).followers.put(owner, Lists.newArrayList(followers));
|
||||
}
|
||||
|
@ -119,15 +124,18 @@ public class NfaUtil {
|
|||
this.followers = followers;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<S> getFollowers(S node) {
|
||||
List<S> result = followers.get(node);
|
||||
return result == null ? Collections.<S> emptyList() : result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public S getStart() {
|
||||
return start;
|
||||
}
|
||||
|
||||
@Override
|
||||
public S getStop() {
|
||||
return stop;
|
||||
}
|
||||
|
@ -289,6 +297,7 @@ public class NfaUtil {
|
|||
public <S> Map<S, Integer> distanceToFinalStateMap(Nfa<S> nfa) {
|
||||
final S stop = nfa.getStop();
|
||||
return distanceToStateMap(nfa, new Predicate<S>() {
|
||||
@Override
|
||||
public boolean apply(S input) {
|
||||
return stop == input;
|
||||
}
|
||||
|
@ -301,6 +310,7 @@ public class NfaUtil {
|
|||
|
||||
public <S> boolean equalsIgnoreOrder(Nfa<S> nfa1, Nfa<S> nfa2) {
|
||||
return equalsIgnoreOrder(nfa1, nfa2, new Function<S, Object>() {
|
||||
@Override
|
||||
public Object apply(S from) {
|
||||
return from;
|
||||
}
|
||||
|
@ -336,21 +346,25 @@ public class NfaUtil {
|
|||
public <S> Nfa<S> filter(final Nfa<S> nfa, final Predicate<S> filter) {
|
||||
return new Nfa<S>() {
|
||||
|
||||
@Override
|
||||
public Set<S> getFollowers(final S node) {
|
||||
final S start = nfa.getStart();
|
||||
final S stop = nfa.getStop();
|
||||
return filterFollowers(nfa, nfa.getFollowers(node), new Predicate<S>() {
|
||||
@Override
|
||||
public boolean apply(S input) {
|
||||
return input == start || input == stop || filter.apply(input);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public S getStart() {
|
||||
// return filterFollowers(nfa, nfa.getStartStates(), filter);
|
||||
return nfa.getStart();
|
||||
}
|
||||
|
||||
@Override
|
||||
public S getStop() {
|
||||
// return filterFinalStates(nfa, filter);
|
||||
return nfa.getStop();
|
||||
|
|
|
@ -20,6 +20,7 @@ import com.google.common.collect.Lists;
|
|||
public class PdaListFormatter<STATE, STACKITEM> implements Function<Pda<STATE, STACKITEM>, String> {
|
||||
|
||||
protected static class ObjToStrFunction<OBJ> implements Function<OBJ, String> {
|
||||
@Override
|
||||
public String apply(OBJ from) {
|
||||
return from == null ? "null" : from.toString();
|
||||
}
|
||||
|
@ -36,6 +37,7 @@ public class PdaListFormatter<STATE, STACKITEM> implements Function<Pda<STATE, S
|
|||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String apply(Pda<STATE, STACKITEM> pda) {
|
||||
return format(pda);
|
||||
}
|
||||
|
|
|
@ -50,6 +50,7 @@ public class PdaUtil {
|
|||
return list.isEmpty();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterator<T> iterator() {
|
||||
return list.iterator();
|
||||
}
|
||||
|
@ -85,6 +86,7 @@ public class PdaUtil {
|
|||
this.pda = pda;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean apply(S input) {
|
||||
return pda.getPop(input) != null;
|
||||
}
|
||||
|
@ -125,6 +127,7 @@ public class PdaUtil {
|
|||
}
|
||||
|
||||
public static class CyclicStackTraverser<S, P> implements Traverser<Pda<S, P>, S, CyclicStackItem<P>> {
|
||||
@Override
|
||||
public CyclicStackItem<P> enter(Pda<S, P> pda, S state, CyclicStackItem<P> previous) {
|
||||
P item;
|
||||
if ((item = pda.getPush(state)) != null)
|
||||
|
@ -136,6 +139,7 @@ public class PdaUtil {
|
|||
return previous;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isSolution(CyclicStackItem<P> result) {
|
||||
return result.parent == null;
|
||||
}
|
||||
|
|
|
@ -19,6 +19,7 @@ import com.google.common.collect.Lists;
|
|||
public class ProductionFormatter<ELEMENT, TOKEN> implements Function<Production<ELEMENT, TOKEN>, String> {
|
||||
|
||||
protected static class ObjToStrFunction<TOKEN> implements Function<TOKEN, String> {
|
||||
@Override
|
||||
public String apply(TOKEN from) {
|
||||
return from == null ? "null" : from.toString();
|
||||
}
|
||||
|
@ -30,6 +31,7 @@ public class ProductionFormatter<ELEMENT, TOKEN> implements Function<Production<
|
|||
|
||||
protected Function<TOKEN, String> tokenToString = new ObjToStrFunction<TOKEN>();
|
||||
|
||||
@Override
|
||||
public String apply(Production<ELEMENT, TOKEN> from) {
|
||||
return format(from);
|
||||
}
|
||||
|
|
|
@ -35,12 +35,14 @@ public class ProductionStringFactory<TOKEN> implements ProductionFactory<String,
|
|||
return many ? (optional ? "*" : "+") : (optional ? "?" : "");
|
||||
}
|
||||
|
||||
@Override
|
||||
public String createForAlternativeChildren(boolean many, boolean optional, Iterable<String> children) {
|
||||
List<String> childrenSorted = Lists.newArrayList(Iterables.filter(children, Predicates.notNull()));
|
||||
Collections.sort(childrenSorted);
|
||||
return "(" + Joiner.on(" | ").join(childrenSorted) + ")" + card(many, optional);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String createForSequentialChildren(boolean many, boolean optional, Iterable<String> children) {
|
||||
children = Iterables.filter(children, Predicates.notNull());
|
||||
if (many || optional)
|
||||
|
@ -48,6 +50,7 @@ public class ProductionStringFactory<TOKEN> implements ProductionFactory<String,
|
|||
return Joiner.on(" ").join(children) + card(many, optional);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String createForToken(boolean many, boolean optional, TOKEN token) {
|
||||
if (token2String != null)
|
||||
return token2String.apply(token) + card(many, optional);
|
||||
|
@ -56,6 +59,7 @@ public class ProductionStringFactory<TOKEN> implements ProductionFactory<String,
|
|||
return token.toString() + card(many, optional);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String createForUnordertedChildren(boolean many, boolean optional, Iterable<String> children) {
|
||||
List<String> childrenSorted = Lists.newArrayList(Iterables.filter(children, Predicates.notNull()));
|
||||
Collections.sort(childrenSorted);
|
||||
|
|
|
@ -81,6 +81,7 @@ public class ProductionUtil {
|
|||
|
||||
public <E, T> E findByToken(final Production<E, T> production, E element, final Predicate<T> matches) {
|
||||
return find(production, element, new Predicate<E>() {
|
||||
@Override
|
||||
public boolean apply(E input) {
|
||||
T token = production.getToken(input);
|
||||
return token != null && matches.apply(token);
|
||||
|
|
|
@ -48,6 +48,7 @@ public class StringCfg extends StringProduction implements Cfg<ProdElement, Stri
|
|||
throw new RuntimeException("Expected ID");
|
||||
}
|
||||
|
||||
@Override
|
||||
public ProdElement getCall(ProdElement ele) {
|
||||
if (ele.name != null)
|
||||
return rules.get(ele.name);
|
||||
|
|
|
@ -39,16 +39,19 @@ public class StringNfa implements Nfa<String> {
|
|||
this.nullState = nullState;
|
||||
}
|
||||
|
||||
@Override
|
||||
public StringNfa create(Object start, Object stop) {
|
||||
String starts = start != null ? start.toString() : nullStart;
|
||||
String stops = stop != null ? stop.toString() : nullStop;
|
||||
return new StringNfa(starts, stops);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String createState(StringNfa nfa, Object token) {
|
||||
return token != null ? token.toString() : nullState;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setFollowers(StringNfa nfa, String owner, Iterable<String> followers) {
|
||||
nfa.state(owner).followedBy(Iterables.toArray(followers, String.class));
|
||||
}
|
||||
|
@ -79,14 +82,17 @@ public class StringNfa implements Nfa<String> {
|
|||
this.stop = stop;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterable<String> getFollowers(String state) {
|
||||
return followers.get(state);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getStart() {
|
||||
return start;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getStop() {
|
||||
return stop;
|
||||
}
|
||||
|
|
|
@ -34,10 +34,12 @@ public class StringPda extends StringNfa implements Pda<String, String> {
|
|||
this.nullState = nullState;
|
||||
}
|
||||
|
||||
@Override
|
||||
public StringPda create(T start, T stop) {
|
||||
return new StringPda(tokenToStr(start, nullStart), tokenToStr(stop, nullStop));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String createPop(StringPda pda, T token) {
|
||||
String pop = tokenToStr(token, nullState);
|
||||
String s = pop.startsWith("<<") ? pop : "<<" + pop;
|
||||
|
@ -45,6 +47,7 @@ public class StringPda extends StringNfa implements Pda<String, String> {
|
|||
return s;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String createPush(StringPda pda, T token) {
|
||||
String push = tokenToStr(token, nullState);
|
||||
String s = push.startsWith(">>") ? push : ">>" + push;
|
||||
|
@ -52,10 +55,12 @@ public class StringPda extends StringNfa implements Pda<String, String> {
|
|||
return s;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String createState(StringPda pda, T token) {
|
||||
return tokenToStr(token, nullState);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setFollowers(StringPda pda, String owner, Iterable<String> followers) {
|
||||
pda.state(owner).followedBy(Iterables.toArray(followers, String.class));
|
||||
}
|
||||
|
@ -106,10 +111,12 @@ public class StringPda extends StringNfa implements Pda<String, String> {
|
|||
super(start, stop);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getPop(String state) {
|
||||
return pops.get(state);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getPush(String state) {
|
||||
return pushs.get(state);
|
||||
}
|
||||
|
|
|
@ -142,34 +142,42 @@ public class StringProduction implements Production<ProdElement, String> {
|
|||
return new ProdElement(type);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterable<ProdElement> getAlternativeChildren(ProdElement ele) {
|
||||
return ele.type == ElementType.ALTERNATIVE ? ele.children : null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ProdElement getParent(ProdElement ele) {
|
||||
return ele.parent;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ProdElement getRoot() {
|
||||
return root;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterable<ProdElement> getSequentialChildren(ProdElement ele) {
|
||||
return ele.type == ElementType.SEQUENCE ? ele.children : null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getToken(ProdElement ele) {
|
||||
return ele.type == ElementType.TOKEN ? ele.value : null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterable<ProdElement> getUnorderedChildren(ProdElement ele) {
|
||||
return ele.type == ElementType.UNOREDERED ? ele.children : null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isMany(ProdElement ele) {
|
||||
return ele.many;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isOptional(ProdElement ele) {
|
||||
return ele.optional;
|
||||
}
|
||||
|
|
|
@ -34,6 +34,7 @@ public class Stopwatches {
|
|||
this.numbers = numbers;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void start() {
|
||||
if (!isRunning())
|
||||
lastStart = System.currentTimeMillis();
|
||||
|
@ -44,6 +45,7 @@ public class Stopwatches {
|
|||
return lastStart != notRunning;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void stop() {
|
||||
if (isRunning()) {
|
||||
reentrant--;
|
||||
|
@ -81,7 +83,9 @@ public class Stopwatches {
|
|||
private static Map<String, NumbersForTask> data = newLinkedHashMap();
|
||||
private static boolean enabled = false;
|
||||
private static StoppedTask NULLIMPL = new StoppedTask() {
|
||||
@Override
|
||||
public void start() {}
|
||||
@Override
|
||||
public void stop() {}
|
||||
};
|
||||
|
||||
|
|
|
@ -32,10 +32,12 @@ public class TerminalsPackratParser extends AbstractPackratParser {
|
|||
return (TerminalsGrammarAccess)super.getGrammarAccess();
|
||||
}
|
||||
|
||||
@Override
|
||||
public IParseResult parse(ParserRule rule, Reader reader) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public IParseResult parse(RuleCall ruleCall, Reader reader, int initialLookAhead) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
|
|
@ -34,13 +34,16 @@ public class TerminalsParserConfiguration extends AbstractParserConfiguration {
|
|||
this.grammarAccess = grammarAccess;
|
||||
}
|
||||
|
||||
@Override
|
||||
public INonTerminalConsumer getRootConsumer() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void createNonTerminalConsumers() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void createTerminalConsumers() {
|
||||
idConsumer = new TerminalsIDConsumer(this);
|
||||
intConsumer = new TerminalsINTConsumer(this);
|
||||
|
@ -51,6 +54,7 @@ public class TerminalsParserConfiguration extends AbstractParserConfiguration {
|
|||
anyOtherConsumer = new TerminalsANY_OTHERConsumer(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void configureConsumers() {
|
||||
if (grammarAccess == null)
|
||||
throw new NullPointerException("grammarAccess may not be null, you call configureConsumers");
|
||||
|
|
|
@ -71,6 +71,7 @@ public abstract class AbstractPackratParser extends AbstractParser implements
|
|||
this.hiddens = previousHiddens;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void restore() {
|
||||
setHiddens(this.hiddens);
|
||||
}
|
||||
|
@ -82,6 +83,7 @@ public abstract class AbstractPackratParser extends AbstractParser implements
|
|||
}
|
||||
|
||||
private static final IHiddenTokenState NULL_HIDDEN_TOKEN_STATE = new IHiddenTokenState() {
|
||||
@Override
|
||||
public void restore() {
|
||||
}
|
||||
};
|
||||
|
@ -134,21 +136,27 @@ public abstract class AbstractPackratParser extends AbstractParser implements
|
|||
final IBacktracker localBacktracker = DebugUtil.BACKTRACKER_DEBUG ? new DebugBacktracker(backtracker) : backtracker;
|
||||
|
||||
IParserConfiguration result = createParserConfiguration(new IInternalParserConfiguration() {
|
||||
@Override
|
||||
public IConsumerUtility getConsumerUtil() {
|
||||
return localConsumerUtil;
|
||||
}
|
||||
@Override
|
||||
public IHiddenTokenHandler getHiddenTokenHandler() {
|
||||
return localHiddenTokenHandler;
|
||||
}
|
||||
@Override
|
||||
public ICharSequenceWithOffset getInput() {
|
||||
return localInput;
|
||||
}
|
||||
@Override
|
||||
public IMarkerFactory getMarkerFactory() {
|
||||
return localMarkerFactory;
|
||||
}
|
||||
@Override
|
||||
public IParsedTokenAcceptor getTokenAcceptor() {
|
||||
return localTokenAcceptor;
|
||||
}
|
||||
@Override
|
||||
public IBacktracker getBacktracker() {
|
||||
return localBacktracker;
|
||||
}
|
||||
|
@ -173,10 +181,12 @@ public abstract class AbstractPackratParser extends AbstractParser implements
|
|||
return input;
|
||||
}
|
||||
|
||||
@Override
|
||||
public final IParseResult parse(CharSequence input) {
|
||||
return parse(input, getRootConsumer());
|
||||
}
|
||||
|
||||
@Override
|
||||
public final IParseResult parse(CharSequence input, INonTerminalConsumer consumer) {
|
||||
this.input = input;
|
||||
this.offset = 0;
|
||||
|
@ -187,6 +197,7 @@ public abstract class AbstractPackratParser extends AbstractParser implements
|
|||
|
||||
private class RootConsumerListener implements IRootConsumerListener {
|
||||
|
||||
@Override
|
||||
public void beforeNonTerminalEnd(INonTerminalConsumer nonTerminalConsumer, int result, INonTerminalConsumerConfiguration configuration) {
|
||||
if (result == ConsumeResult.SUCCESS) {
|
||||
if (offset != length())
|
||||
|
@ -198,10 +209,12 @@ public abstract class AbstractPackratParser extends AbstractParser implements
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterNonTerminalBegin(INonTerminalConsumer nonTerminalConsumer, INonTerminalConsumerConfiguration configuration) {
|
||||
consumeHiddens();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleException(NonTerminalConsumer nonTerminalConsumer, Exception e, INonTerminalConsumerConfiguration configuration) {
|
||||
log.error("handle Exception: " + e.getMessage(), e);
|
||||
configuration.getTokenAcceptor().accept(new ErrorToken(offset, length() - offset, null, e.getMessage()));
|
||||
|
@ -246,39 +259,47 @@ public abstract class AbstractPackratParser extends AbstractParser implements
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public IMarker mark() {
|
||||
return getNextMarker(activeMarker, offset);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Marker getActiveMarker() {
|
||||
return activeMarker;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Marker getNextMarker(Marker parent, int offset) {
|
||||
return markerBufferSize > 0 ?
|
||||
markerBuffer[--markerBufferSize].reInit(offset, parent, this, this) :
|
||||
new Marker(parent, offset, this, this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setActiveMarker(Marker marker) {
|
||||
this.activeMarker = marker;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void releaseMarker(Marker marker) {
|
||||
if (markerBufferSize < MARKER_BUFFER_SIZE)
|
||||
markerBuffer[markerBufferSize++] = marker;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int consumeKeyword(Keyword keyword, String feature, boolean isMany, boolean isBoolean, ICharacterClass notFollowedBy, boolean optional) {
|
||||
keywordConsumer.configure(keyword, notFollowedBy);
|
||||
return consumeTerminal(keywordConsumer, feature, isMany, isBoolean, keyword, ISequenceMatcher.Factory.nullMatcher(), optional);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int consumeEnum(EnumLiteralDeclaration literal, ICharacterClass notFollowedBy) {
|
||||
literalConsumer.configure(literal, notFollowedBy);
|
||||
return consumeTerminal(literalConsumer, null, false, false, literal, ISequenceMatcher.Factory.nullMatcher(), false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int consumeTerminal(ITerminalConsumer consumer, String feature, boolean isMany, boolean isBoolean,
|
||||
AbstractElement grammarElement, ISequenceMatcher notMatching, boolean optional) {
|
||||
IMarker marker = mark();
|
||||
|
@ -293,6 +314,7 @@ public abstract class AbstractPackratParser extends AbstractParser implements
|
|||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int consumeNonTerminal(INonTerminalConsumer consumer, String feature, boolean isMany,
|
||||
boolean isDatatype, boolean isBoolean, AbstractElement grammarElement, boolean optional) throws Exception {
|
||||
if (!consumer.isDefiningHiddens())
|
||||
|
@ -330,8 +352,10 @@ public abstract class AbstractPackratParser extends AbstractParser implements
|
|||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void consumeAction(final Action action, final boolean isMany) {
|
||||
accept(new ParsedAction(offset, action, isMany, new IParsedTokenSource(){
|
||||
@Override
|
||||
public int parseAgain(ParsedToken token) throws Exception {
|
||||
consumeAction(action, isMany);
|
||||
return ConsumeResult.SUCCESS;
|
||||
|
@ -347,38 +371,47 @@ public abstract class AbstractPackratParser extends AbstractParser implements
|
|||
return grammarAccess;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getOffset() {
|
||||
return offset;
|
||||
}
|
||||
|
||||
@Override
|
||||
public char charAt(int index) {
|
||||
return input.charAt(index);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int length() {
|
||||
return input.length();
|
||||
}
|
||||
|
||||
@Override
|
||||
public CharSequence subSequence(int start, int end) {
|
||||
return input.subSequence(start, end);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void incOffset() {
|
||||
offset++;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void incOffset(int amount) {
|
||||
offset+=amount;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept(AbstractParsedToken token) {
|
||||
activeMarker.accept(token);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setOffset(int offset) {
|
||||
this.offset = offset;
|
||||
}
|
||||
|
||||
@Override
|
||||
public IHiddenTokenState replaceHiddenTokens(ITerminalConsumer... consumers) {
|
||||
if (consumers == null)
|
||||
return NULL_HIDDEN_TOKEN_STATE;
|
||||
|
|
|
@ -57,38 +57,47 @@ public abstract class AbstractParserConfiguration implements
|
|||
this.backtracker = configuration.getBacktracker();
|
||||
}
|
||||
|
||||
@Override
|
||||
public ICharSequenceWithOffset getInput() {
|
||||
return input;
|
||||
}
|
||||
|
||||
@Override
|
||||
public IMarkerFactory getMarkerFactory() {
|
||||
return markerFactory;
|
||||
}
|
||||
|
||||
@Override
|
||||
public IParsedTokenAcceptor getTokenAcceptor() {
|
||||
return tokenAcceptor;
|
||||
}
|
||||
|
||||
@Override
|
||||
public IHiddenTokenHandler getHiddenTokenHandler() {
|
||||
return hiddenTokenHandler;
|
||||
}
|
||||
|
||||
@Override
|
||||
public IConsumerUtility getConsumerUtil() {
|
||||
return consumerUtil;
|
||||
}
|
||||
|
||||
@Override
|
||||
public IBacktracker getBacktracker() {
|
||||
return backtracker;
|
||||
}
|
||||
|
||||
@Override
|
||||
public KeywordConsumer createKeywordConsumer() {
|
||||
return new KeywordConsumer(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public EnumLiteralConsumer createLiteralConsumer() {
|
||||
return new EnumLiteralConsumer(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ITerminalConsumer[] getInitialHiddenTerminals() {
|
||||
return EMPTY_HIDDENS;
|
||||
}
|
||||
|
|
|
@ -14,10 +14,12 @@ import java.io.CharArrayWriter;
|
|||
*/
|
||||
public class CharArrayWriterAsSequence extends CharArrayWriter implements CharSequence {
|
||||
|
||||
@Override
|
||||
public char charAt(int index) {
|
||||
return buf[index];
|
||||
}
|
||||
|
||||
@Override
|
||||
public int length() {
|
||||
return count;
|
||||
}
|
||||
|
@ -30,6 +32,7 @@ public class CharArrayWriterAsSequence extends CharArrayWriter implements CharSe
|
|||
super(1024);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CharSequence subSequence(int start, int end) {
|
||||
return new SubSequence(this, start, end);
|
||||
}
|
||||
|
@ -45,14 +48,17 @@ public class CharArrayWriterAsSequence extends CharArrayWriter implements CharSe
|
|||
this.end = end;
|
||||
}
|
||||
|
||||
@Override
|
||||
public char charAt(int index) {
|
||||
return base.charAt(index + start);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int length() {
|
||||
return end - start;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CharSequence subSequence(int start, int end) {
|
||||
return new SubSequence(base, this.start + start, this.start + end);
|
||||
}
|
||||
|
|
|
@ -54,6 +54,7 @@ public class ParseResultFactory extends AbstractParsedTokenVisitor implements IP
|
|||
this.nonterminalStack = new LinkedList<ParsedNonTerminal>();
|
||||
}
|
||||
|
||||
@Override
|
||||
public IParseResult createParseResult(AbstractParsedToken token, CharSequence input) {
|
||||
// currentNode = null;
|
||||
currentStack.clear();
|
||||
|
|
|
@ -149,6 +149,7 @@ public abstract class NonTerminalConsumer extends AbstractConsumer implements IN
|
|||
this.element = element;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int consume() throws Exception {
|
||||
IMarker marker = mark();
|
||||
int result = doConsume(false);
|
||||
|
@ -180,6 +181,7 @@ public abstract class NonTerminalConsumer extends AbstractConsumer implements IN
|
|||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int parseAgain(ParsedToken token) throws Exception {
|
||||
return consume();
|
||||
}
|
||||
|
@ -242,6 +244,7 @@ public abstract class NonTerminalConsumer extends AbstractConsumer implements IN
|
|||
return consumers;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int parseFurther(IFurtherParsable<UnorderedGroupToken> token) throws Exception {
|
||||
final UnorderedGroupToken groupToken = token.getToken();
|
||||
return doConsumeUnorderedGroup(this, getConsumers(), this, groupToken.isOptional() /*, groupToken.getAlternative() + 1 */);
|
||||
|
@ -272,6 +275,7 @@ public abstract class NonTerminalConsumer extends AbstractConsumer implements IN
|
|||
return consumers;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int parseFurther(IFurtherParsable<AlternativesToken> token) throws Exception {
|
||||
final AlternativesToken alternativesToken = token.getToken();
|
||||
return doConsumeAlternatives(this, getConsumers(), this, alternativesToken.isOptional(), alternativesToken.getAlternative() + 1);
|
||||
|
@ -360,6 +364,7 @@ public abstract class NonTerminalConsumer extends AbstractConsumer implements IN
|
|||
return consumers;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int parseFurther(IFurtherParsable<UnorderedGroupToken> token) throws Exception {
|
||||
final UnorderedGroupToken groupToken = token.getToken();
|
||||
return doConsumeUnorderedGroup(this, getConsumers(), this, groupToken.isOptional() /*, groupToken.getAlternative() + 1 */);
|
||||
|
@ -390,6 +395,7 @@ public abstract class NonTerminalConsumer extends AbstractConsumer implements IN
|
|||
return consumers;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int parseFurther(IFurtherParsable<AlternativesToken> token) throws Exception {
|
||||
final AlternativesToken alternativesToken = token.getToken();
|
||||
return doConsumeAlternatives(this, getConsumers(), this, alternativesToken.isOptional(), alternativesToken.getAlternative() + 1);
|
||||
|
@ -477,6 +483,7 @@ public abstract class NonTerminalConsumer extends AbstractConsumer implements IN
|
|||
return consumers;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int parseFurther(IFurtherParsable<UnorderedGroupToken> token) throws Exception {
|
||||
final UnorderedGroupToken groupToken = token.getToken();
|
||||
return doConsumeUnorderedGroup(this, getConsumers(), this, groupToken.isOptional() /*, groupToken.getAlternative() + 1 */);
|
||||
|
@ -507,6 +514,7 @@ public abstract class NonTerminalConsumer extends AbstractConsumer implements IN
|
|||
return consumers;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int parseFurther(IFurtherParsable<AlternativesToken> token) throws Exception {
|
||||
final AlternativesToken alternativesToken = token.getToken();
|
||||
return doConsumeAlternatives(this, getConsumers(), this, alternativesToken.isOptional(), alternativesToken.getAlternative() + 1);
|
||||
|
@ -639,6 +647,7 @@ public abstract class NonTerminalConsumer extends AbstractConsumer implements IN
|
|||
return consumers;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int parseFurther(IFurtherParsable<UnorderedGroupToken> token) throws Exception {
|
||||
final UnorderedGroupToken groupToken = token.getToken();
|
||||
return doConsumeUnorderedGroup(this, getConsumers(), this, groupToken.isOptional() /*, groupToken.getAlternative() + 1 */);
|
||||
|
@ -669,6 +678,7 @@ public abstract class NonTerminalConsumer extends AbstractConsumer implements IN
|
|||
return consumers;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int parseFurther(IFurtherParsable<AlternativesToken> token) throws Exception {
|
||||
final AlternativesToken alternativesToken = token.getToken();
|
||||
return doConsumeAlternatives(this, getConsumers(), this, alternativesToken.isOptional(), alternativesToken.getAlternative() + 1);
|
||||
|
@ -863,16 +873,19 @@ public abstract class NonTerminalConsumer extends AbstractConsumer implements IN
|
|||
getTokenAcceptor().accept(new PlaceholderToken(getOffset(), consumer.getElement(), consumer, true));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isDefiningHiddens() {
|
||||
return hiddenTokens != null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int consume(final String feature, final boolean isMany, final boolean isDatatype, final boolean isBoolean,
|
||||
final AbstractElement grammarElement, final boolean optional) throws Exception {
|
||||
IHiddenTokenState prevState = hiddenTokenHandler.replaceHiddenTokens(hiddenTokens);
|
||||
IMarker marker = mark();
|
||||
getTokenAcceptor().accept(new ParsedNonTerminal(getInput().getOffset(), grammarElement != null ? grammarElement : getGrammarElement(),
|
||||
getDefaultType(), new IParsedTokenSource(){
|
||||
@Override
|
||||
public int parseAgain(ParsedToken token) throws Exception {
|
||||
return consume(feature, isMany, isDatatype, isBoolean, grammarElement, optional);
|
||||
}
|
||||
|
@ -884,11 +897,13 @@ public abstract class NonTerminalConsumer extends AbstractConsumer implements IN
|
|||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void consumeAsRoot(final IRootConsumerListener listener) {
|
||||
IHiddenTokenState prevState = hiddenTokenHandler.replaceHiddenTokens(hiddenTokens);
|
||||
IMarker marker = mark();
|
||||
getTokenAcceptor().accept(new ParsedNonTerminal(getInput().getOffset(), getGrammarElement(),
|
||||
getDefaultType(), new IParsedTokenSource(){
|
||||
@Override
|
||||
public int parseAgain(ParsedToken token) throws Exception {
|
||||
throw new IllegalStateException("Cannot reparse root token");
|
||||
}
|
||||
|
@ -944,18 +959,22 @@ public abstract class NonTerminalConsumer extends AbstractConsumer implements IN
|
|||
|
||||
protected abstract AbstractRule getGrammarElement();
|
||||
|
||||
@Override
|
||||
public IConsumerUtility getConsumerUtil() {
|
||||
return consumerUtil;
|
||||
}
|
||||
|
||||
@Override
|
||||
public IHiddenTokenHandler getHiddenTokenHandler() {
|
||||
return hiddenTokenHandler;
|
||||
}
|
||||
|
||||
@Override
|
||||
public IMarkerFactory getMarkerFactory() {
|
||||
return markerFactory;
|
||||
}
|
||||
|
||||
@Override
|
||||
public IBacktracker getBacktracker() {
|
||||
return backtracker;
|
||||
}
|
||||
|
|
|
@ -34,6 +34,7 @@ public abstract class TerminalConsumer extends AbstractConsumer implements ITerm
|
|||
super(configuration.getInput(), configuration.getTokenAcceptor());
|
||||
}
|
||||
|
||||
@Override
|
||||
public final int consume(final String feature, final boolean isMany, final boolean isBoolean,
|
||||
final AbstractElement element, final ISequenceMatcher notMatching, final boolean optional) {
|
||||
final int prevMarker = mark();
|
||||
|
@ -46,6 +47,7 @@ public abstract class TerminalConsumer extends AbstractConsumer implements ITerm
|
|||
}
|
||||
getTokenAcceptor().accept(createParsedToken(feature, isMany, isBoolean, element, notMatching, optional, prevMarker,
|
||||
new IParsedTokenSource(){
|
||||
@Override
|
||||
public int parseAgain(ParsedToken token) throws Exception {
|
||||
return consume(feature, isMany, isBoolean, element, notMatching, optional);
|
||||
}
|
||||
|
@ -67,6 +69,7 @@ public abstract class TerminalConsumer extends AbstractConsumer implements ITerm
|
|||
source, optional);
|
||||
}
|
||||
|
||||
@Override
|
||||
public final int consume() {
|
||||
int prevOffset = getInput().getOffset();
|
||||
final int result = doConsume();
|
||||
|
@ -76,6 +79,7 @@ public abstract class TerminalConsumer extends AbstractConsumer implements ITerm
|
|||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public final int consume(ISequenceMatcher notMatching) {
|
||||
int prevOffset = getInput().getOffset();
|
||||
final int result = doConsume();
|
||||
|
@ -202,10 +206,12 @@ public abstract class TerminalConsumer extends AbstractConsumer implements ITerm
|
|||
|
||||
protected abstract String getRuleName();
|
||||
|
||||
@Override
|
||||
public void setHidden(boolean hidden) {
|
||||
this.hidden = hidden;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isHidden() {
|
||||
return hidden;
|
||||
}
|
||||
|
|
|
@ -23,6 +23,7 @@ public class DebugBacktracker implements IBacktracker {
|
|||
this.delegate = delegate;
|
||||
}
|
||||
|
||||
@Override
|
||||
public IBacktrackingResult skipPreviousToken() {
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("Trying to skip recently parsed optional token.");
|
||||
|
|
|
@ -22,6 +22,7 @@ public class DebugCharSequence implements CharSequence {
|
|||
this.delegate = delegate;
|
||||
}
|
||||
|
||||
@Override
|
||||
public char charAt(int index) {
|
||||
char result = delegate.charAt(index);
|
||||
if (log.isTraceEnabled()) {
|
||||
|
@ -30,10 +31,12 @@ public class DebugCharSequence implements CharSequence {
|
|||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int length() {
|
||||
return delegate.length();
|
||||
}
|
||||
|
||||
@Override
|
||||
public CharSequence subSequence(int start, int end) {
|
||||
if (log.isTraceEnabled()) {
|
||||
log.trace("subSequence(start = " + start + ", end = " + end + ")");
|
||||
|
|
|
@ -24,6 +24,7 @@ public class DebugCharSequenceWithOffset extends DebugCharSequence implements IC
|
|||
this.delegate = delegate;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getOffset() {
|
||||
int result = delegate.getOffset();
|
||||
if (log.isTraceEnabled()) {
|
||||
|
@ -32,6 +33,7 @@ public class DebugCharSequenceWithOffset extends DebugCharSequence implements IC
|
|||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void incOffset() {
|
||||
if (log.isTraceEnabled()) {
|
||||
log.trace("incOffset()");
|
||||
|
@ -39,6 +41,7 @@ public class DebugCharSequenceWithOffset extends DebugCharSequence implements IC
|
|||
delegate.incOffset();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void incOffset(int amount) {
|
||||
if (log.isTraceEnabled()) {
|
||||
log.trace("incOffset(" + amount + ")");
|
||||
|
@ -46,6 +49,7 @@ public class DebugCharSequenceWithOffset extends DebugCharSequence implements IC
|
|||
delegate.incOffset(amount);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setOffset(int offset) {
|
||||
if (log.isTraceEnabled()) {
|
||||
log.trace("setOffset(" + offset + ")");
|
||||
|
|
|
@ -31,6 +31,7 @@ public class DebugConsumerUtility implements IConsumerUtility {
|
|||
this.delegate = delegate;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void consumeAction(Action action, boolean isMany) {
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("consumeAction(type = " + action.getType().getClassifier().getName() + ", feature = " + action.getFeature() + ", isMany = " + isMany + ")");
|
||||
|
@ -38,6 +39,7 @@ public class DebugConsumerUtility implements IConsumerUtility {
|
|||
delegate.consumeAction(action, isMany);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int consumeKeyword(Keyword keyword, String feature, boolean isMany, boolean isBoolean,
|
||||
ICharacterClass notFollowedBy, boolean optional) {
|
||||
if (log.isDebugEnabled()) {
|
||||
|
@ -55,6 +57,7 @@ public class DebugConsumerUtility implements IConsumerUtility {
|
|||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int consumeNonTerminal(INonTerminalConsumer consumer, String feature, boolean isMany,
|
||||
boolean isDatatype, boolean isBoolean, AbstractElement grammarElement, boolean optional) throws Exception {
|
||||
if (log.isDebugEnabled()) {
|
||||
|
@ -73,6 +76,7 @@ public class DebugConsumerUtility implements IConsumerUtility {
|
|||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int consumeTerminal(ITerminalConsumer consumer, String feature, boolean isMany, boolean isBoolean,
|
||||
AbstractElement grammarElement, ISequenceMatcher notMatching, boolean optional) {
|
||||
if (log.isDebugEnabled()) {
|
||||
|
@ -91,6 +95,7 @@ public class DebugConsumerUtility implements IConsumerUtility {
|
|||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int consumeEnum(EnumLiteralDeclaration literal, ICharacterClass notFollowedBy) {
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("consumeEnum(enum = '" + literal.getEnumLiteral().getName() + "', " +
|
||||
|
|
|
@ -26,6 +26,7 @@ public class DebugHiddenTokenHandler implements IHiddenTokenHandler {
|
|||
this.delegate = delegate;
|
||||
}
|
||||
|
||||
@Override
|
||||
public IHiddenTokenState replaceHiddenTokens(ITerminalConsumer... consumers) {
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("replaceHiddenTokens(" + Arrays.toString(consumers) + ")");
|
||||
|
@ -45,6 +46,7 @@ public class DebugHiddenTokenHandler implements IHiddenTokenHandler {
|
|||
this.delegate = delegate;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void restore() {
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("restore(" + delegate + ")");
|
||||
|
|
|
@ -23,6 +23,7 @@ public class DebugMarkerFactory implements IMarkerFactory {
|
|||
this.delegate = delegate;
|
||||
}
|
||||
|
||||
@Override
|
||||
public IMarker mark() {
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("mark()");
|
||||
|
@ -42,6 +43,7 @@ public class DebugMarkerFactory implements IMarkerFactory {
|
|||
this.delegate = delegate;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void rollback() {
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("rollback(" + delegate + ")");
|
||||
|
@ -49,6 +51,7 @@ public class DebugMarkerFactory implements IMarkerFactory {
|
|||
delegate.rollback();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void commit() {
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("commit(" + delegate + ")");
|
||||
|
@ -56,6 +59,7 @@ public class DebugMarkerFactory implements IMarkerFactory {
|
|||
delegate.commit();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void flush() {
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("flush(" + delegate + ")");
|
||||
|
@ -63,6 +67,7 @@ public class DebugMarkerFactory implements IMarkerFactory {
|
|||
delegate.flush();
|
||||
}
|
||||
|
||||
@Override
|
||||
public IMarker fork() {
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("fork(" + delegate + ")");
|
||||
|
@ -70,6 +75,7 @@ public class DebugMarkerFactory implements IMarkerFactory {
|
|||
return new DebuggingMarker(delegate.fork());
|
||||
}
|
||||
|
||||
@Override
|
||||
public IMarker join(IMarker forkedMarker) {
|
||||
IMarker join = forkedMarker instanceof DebuggingMarker ? ((DebuggingMarker)forkedMarker).delegate : forkedMarker;
|
||||
if (log.isDebugEnabled()) {
|
||||
|
|
|
@ -24,6 +24,7 @@ public class DebugParsedTokenAcceptor implements IParsedTokenAcceptor {
|
|||
this.delegate = delegate;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept(AbstractParsedToken token) {
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("accept(" + token + ")");
|
||||
|
|
|
@ -21,6 +21,7 @@ public class Backtracker implements IBacktracker {
|
|||
this.markerClient = markerClient;
|
||||
}
|
||||
|
||||
@Override
|
||||
public IBacktrackingResult skipPreviousToken() {
|
||||
return markerClient.getActiveMarker().skipPreviousToken();
|
||||
}
|
||||
|
|
|
@ -72,6 +72,7 @@ public class Marker extends AbstractParsedToken implements IMarkerFactory.IMarke
|
|||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void rollback() {
|
||||
if (danglingChildCount > 0)
|
||||
throw new IllegalStateException("childCount has to be zero before rollback.");
|
||||
|
@ -80,6 +81,7 @@ public class Marker extends AbstractParsedToken implements IMarkerFactory.IMarke
|
|||
forget();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void flush() {
|
||||
if (danglingChildCount > 0)
|
||||
throw new IllegalStateException("childCount has to be zero before flush.");
|
||||
|
@ -95,6 +97,7 @@ public class Marker extends AbstractParsedToken implements IMarkerFactory.IMarke
|
|||
lastOffset = input.getOffset();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void commit() {
|
||||
if (danglingChildCount > 0)
|
||||
throw new IllegalStateException("childCount has to be zero before commit.");
|
||||
|
@ -111,6 +114,7 @@ public class Marker extends AbstractParsedToken implements IMarkerFactory.IMarke
|
|||
this.parent = null; // prevent accidental change
|
||||
}
|
||||
|
||||
@Override
|
||||
public Marker fork() {
|
||||
lastOffset = input.getOffset();
|
||||
input.setOffset(getOffset());
|
||||
|
@ -125,6 +129,7 @@ public class Marker extends AbstractParsedToken implements IMarkerFactory.IMarke
|
|||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public IMarker join(IMarker forkedMarker) {
|
||||
if (!(forkedMarker instanceof Marker))
|
||||
throw new IllegalArgumentException("forkedMarker is not supported: " + forkedMarker);
|
||||
|
@ -179,6 +184,7 @@ public class Marker extends AbstractParsedToken implements IMarkerFactory.IMarke
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept(AbstractParsedToken token) {
|
||||
if (danglingChildCount != 0)
|
||||
throw new IllegalStateException("cannot accept tokens if there exist any dangling children.");
|
||||
|
@ -201,6 +207,7 @@ public class Marker extends AbstractParsedToken implements IMarkerFactory.IMarke
|
|||
return input;
|
||||
}
|
||||
|
||||
@Override
|
||||
public IBacktrackingResult skipPreviousToken() {
|
||||
if (danglingChildCount > 0)
|
||||
throw new IllegalStateException("childCount has to be zero before backtracking.");
|
||||
|
|
|
@ -62,6 +62,7 @@ public class MarkerAwareBacktracker implements IBacktracker {
|
|||
this.workingMarkers = new ArrayList<Marker>(4);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void commit() {
|
||||
if (workingMarkers.isEmpty())
|
||||
throw new IllegalStateException("Working marker may not be null");
|
||||
|
@ -77,6 +78,7 @@ public class MarkerAwareBacktracker implements IBacktracker {
|
|||
markedTokens.clear();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void discard() {
|
||||
for(AbstractParsedToken token: markedTokens) {
|
||||
token.setSkipped(false);
|
||||
|
@ -93,10 +95,12 @@ public class MarkerAwareBacktracker implements IBacktracker {
|
|||
markedTokens.clear();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isSuccessful() {
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public IBacktrackingResult skipPreviousToken() {
|
||||
discardImpl();
|
||||
init();
|
||||
|
@ -212,6 +216,7 @@ public class MarkerAwareBacktracker implements IBacktracker {
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitMarker(Marker marker) {
|
||||
throw new IllegalStateException("Marker may not be content of other markers.");
|
||||
}
|
||||
|
@ -324,6 +329,7 @@ public class MarkerAwareBacktracker implements IBacktracker {
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitMarker(Marker marker) {
|
||||
throw new IllegalStateException("Marker may not be content of other markers.");
|
||||
}
|
||||
|
@ -488,6 +494,7 @@ public class MarkerAwareBacktracker implements IBacktracker {
|
|||
replayToken = token;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitMarker(Marker marker) {
|
||||
throw new IllegalStateException("Marker may not be content of other markers.");
|
||||
}
|
||||
|
@ -495,6 +502,7 @@ public class MarkerAwareBacktracker implements IBacktracker {
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public IBacktrackingResult skipPreviousToken() {
|
||||
return new NestedBacktrackingResult().skipPreviousToken();
|
||||
}
|
||||
|
|
|
@ -18,6 +18,7 @@ public class CharacterAlternatives implements ICharacterClass {
|
|||
this.classes = classes;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean matches(char candidate) {
|
||||
for (ICharacterClass characterClass: classes) {
|
||||
if (characterClass.matches(candidate))
|
||||
|
|
|
@ -22,6 +22,7 @@ public class CharacterArray implements ICharacterClass {
|
|||
Arrays.sort(this.characters);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean matches(char candidate) {
|
||||
return candidate >= characters[0] && candidate <= characters[characters.length -1 ] &&
|
||||
Arrays.binarySearch(characters, candidate) >= 0;
|
||||
|
|
|
@ -22,6 +22,7 @@ public class CharacterRange implements ICharacterClass {
|
|||
this.max = max;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean matches(char candidate) {
|
||||
return this.min <= candidate && this.max >= candidate;
|
||||
}
|
||||
|
|
|
@ -17,6 +17,7 @@ public interface ICharacterClass {
|
|||
class Factory {
|
||||
private static class NullCharacterClass implements ICharacterClass {
|
||||
private static ICharacterClass INSTANCE = new NullCharacterClass();
|
||||
@Override
|
||||
public boolean matches(char candidate) {
|
||||
return false;
|
||||
}
|
||||
|
@ -42,6 +43,7 @@ public interface ICharacterClass {
|
|||
|
||||
public static ICharacterClass invert(final ICharacterClass clazz) {
|
||||
return new ICharacterClass() {
|
||||
@Override
|
||||
public boolean matches(char candidate) {
|
||||
return !clazz.matches(candidate);
|
||||
}
|
||||
|
|
|
@ -17,6 +17,7 @@ public interface ISequenceMatcher {
|
|||
class Factory {
|
||||
private static class NullSequenceMatcher implements ISequenceMatcher {
|
||||
private static ISequenceMatcher INSTANCE = new NullSequenceMatcher();
|
||||
@Override
|
||||
public boolean matches(CharSequence input, int offset, int length) {
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -22,6 +22,7 @@ public class SetBasedKeywordMatcher implements ISequenceMatcher {
|
|||
this.keywords = new HashSet<String>(Arrays.asList(keywords));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean matches(CharSequence input, int offset, int length) {
|
||||
return keywords.contains(input.subSequence(offset, offset + length).toString());
|
||||
}
|
||||
|
|
|
@ -19,6 +19,7 @@ public class SingleCharacter implements ICharacterClass {
|
|||
this.c = c;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean matches(char candidate) {
|
||||
return candidate == c;
|
||||
}
|
||||
|
|
|
@ -24,34 +24,42 @@ public class StringWithOffset implements ICharSequenceWithOffset, IMarkerFactory
|
|||
this.offset = 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getOffset() {
|
||||
return offset;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void incOffset() {
|
||||
offset++;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void incOffset(int amount) {
|
||||
offset+=amount;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setOffset(int offset) {
|
||||
this.offset = offset;
|
||||
}
|
||||
|
||||
@Override
|
||||
public char charAt(int index) {
|
||||
return value.charAt(index);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int length() {
|
||||
return value.length();
|
||||
}
|
||||
|
||||
@Override
|
||||
public CharSequence subSequence(int start, int end) {
|
||||
return value.subSequence(start, end);
|
||||
}
|
||||
|
||||
@Override
|
||||
public IMarker mark() {
|
||||
return new Marker();
|
||||
}
|
||||
|
@ -68,6 +76,7 @@ public class StringWithOffset implements ICharSequenceWithOffset, IMarkerFactory
|
|||
this.offset = offset;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void rollback() {
|
||||
StringWithOffset.this.setOffset(offset);
|
||||
}
|
||||
|
@ -77,17 +86,21 @@ public class StringWithOffset implements ICharSequenceWithOffset, IMarkerFactory
|
|||
return "Marker@" + offset;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void commit() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public IMarker fork() {
|
||||
return new Marker(offset);
|
||||
}
|
||||
|
||||
@Override
|
||||
public IMarker join(IMarker forkedMarker) {
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void flush() {
|
||||
}
|
||||
}
|
||||
|
|
|
@ -15,99 +15,123 @@ import org.eclipse.xtext.parser.packrat.tokens.CompoundParsedToken.End;
|
|||
*/
|
||||
public abstract class AbstractParsedTokenVisitor implements IParsedTokenVisitor {
|
||||
|
||||
@Override
|
||||
public void visitAbstractParsedToken(AbstractParsedToken token) {
|
||||
throw new UnsupportedOperationException("visitAbstractParsedToken is not implemented.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitAbstractParsedTokenEnd(AbstractParsedToken.End token) {
|
||||
visitAbstractParsedToken(token);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitCompoundParsedToken(CompoundParsedToken token) {
|
||||
visitParsedToken(token);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitCompoundParsedTokenEnd(End token) {
|
||||
visitAbstractParsedTokenEnd(token);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitAssignmentToken(AssignmentToken token) {
|
||||
visitCompoundParsedToken(token);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitAssignmentTokenEnd(AssignmentToken.End token) {
|
||||
visitCompoundParsedTokenEnd(token);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitAlternativesToken(AlternativesToken token) {
|
||||
visitCompoundParsedToken(token);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitAlternativesTokenEnd(AlternativesToken.End token) {
|
||||
visitCompoundParsedTokenEnd(token);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitGroupToken(GroupToken token) {
|
||||
visitCompoundParsedToken(token);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitGroupTokenEnd(GroupToken.End token) {
|
||||
visitCompoundParsedTokenEnd(token);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitUnorderedGroupToken(UnorderedGroupToken token) {
|
||||
visitCompoundParsedToken(token);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitUnorderedGroupTokenEnd(UnorderedGroupToken.End token) {
|
||||
visitCompoundParsedTokenEnd(token);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitErrorToken(ErrorToken token) {
|
||||
visitParsedToken(token);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitFakedToken(FakedToken token) {
|
||||
visitAbstractParsedToken(token);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitParsedNonTerminal(ParsedNonTerminal token) {
|
||||
visitParsedToken(token);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitParsedNonTerminalEnd(ParsedNonTerminalEnd token) {
|
||||
visitAbstractParsedTokenEnd(token);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitParsedTerminal(ParsedTerminal token) {
|
||||
visitParsedToken(token);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitParsedTerminalWithFeatureInfo(ParsedTerminalWithFeatureInfo token) {
|
||||
visitParsedTerminal(token);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitParsedTerminalWithFeature(ParsedTerminalWithFeature token) {
|
||||
visitParsedTerminalWithFeatureInfo(token);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitParsedToken(ParsedToken token) {
|
||||
visitAbstractParsedToken(token);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitParsedAction(ParsedAction token) {
|
||||
visitParsedToken(token);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitPlaceholder(PlaceholderToken token) {
|
||||
visitParsedToken(token);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Void apply(AbstractParsedToken param) {
|
||||
param.accept(this);
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitParsedEnumLiteral(ParsedEnumLiteral token) {
|
||||
visitParsedToken(token);
|
||||
}
|
||||
|
|
|
@ -42,6 +42,7 @@ public class AlternativesToken extends CompoundParsedToken implements IFurtherPa
|
|||
return alternative;
|
||||
}
|
||||
|
||||
@Override
|
||||
public AlternativesToken getToken() {
|
||||
return this;
|
||||
}
|
||||
|
@ -52,6 +53,7 @@ public class AlternativesToken extends CompoundParsedToken implements IFurtherPa
|
|||
return (Source<AlternativesToken>) super.getSource();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canParseFurther() {
|
||||
return alternative < totalAlternatives - 1;
|
||||
}
|
||||
|
|
|
@ -43,6 +43,7 @@ public class UnorderedGroupToken extends CompoundParsedToken implements IFurther
|
|||
// return alternative;
|
||||
// }
|
||||
|
||||
@Override
|
||||
public UnorderedGroupToken getToken() {
|
||||
return this;
|
||||
}
|
||||
|
@ -53,6 +54,7 @@ public class UnorderedGroupToken extends CompoundParsedToken implements IFurther
|
|||
return (Source<UnorderedGroupToken>) super.getSource();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canParseFurther() {
|
||||
return false; // alternative < totalAlternatives - 1;
|
||||
}
|
||||
|
|
|
@ -230,6 +230,7 @@ public class EcoreUtil2 extends EcoreUtil {
|
|||
private TreeIterator<EObject> it = null;
|
||||
private int index = 0;
|
||||
|
||||
@Override
|
||||
public void prune() {
|
||||
switch (index) {
|
||||
case 0:
|
||||
|
@ -243,6 +244,7 @@ public class EcoreUtil2 extends EcoreUtil {
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasNext() {
|
||||
if (index == 0)
|
||||
return true;
|
||||
|
@ -251,6 +253,7 @@ public class EcoreUtil2 extends EcoreUtil {
|
|||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public EObject next() {
|
||||
if (index++ == 0) {
|
||||
it = obj.eAllContents();
|
||||
|
@ -261,6 +264,7 @@ public class EcoreUtil2 extends EcoreUtil {
|
|||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void remove() {
|
||||
if (index == 0)
|
||||
EcoreUtil.remove(obj);
|
||||
|
@ -272,6 +276,7 @@ public class EcoreUtil2 extends EcoreUtil {
|
|||
|
||||
public static Iterable<EObject> eAllContents(final EObject n) {
|
||||
return new Iterable<EObject>() {
|
||||
@Override
|
||||
public Iterator<EObject> iterator() {
|
||||
return eAll(n);
|
||||
}
|
||||
|
@ -361,6 +366,7 @@ public class EcoreUtil2 extends EcoreUtil {
|
|||
|
||||
private static class EClassTypeHierarchyComparator implements Comparator<EClass> {
|
||||
|
||||
@Override
|
||||
public int compare(EClass classA, EClass classB) {
|
||||
if (classA.getEAllSuperTypes().contains(classB))
|
||||
return -1;
|
||||
|
|
|
@ -441,15 +441,18 @@ public class GrammarUtil {
|
|||
|
||||
public static Collection<EPackage> allEPackagesToValidate(final Grammar _this) {
|
||||
Iterable<TypeRef> allTypeRefs = concat(transform(allParserRules(_this), new Function<ParserRule, Iterable<TypeRef>>() {
|
||||
@Override
|
||||
public Iterable<TypeRef> apply(ParserRule from) {
|
||||
return EcoreUtil2.eAllOfType(from, TypeRef.class);
|
||||
}
|
||||
}));
|
||||
return newLinkedHashSet(transform(filter(allTypeRefs, new Predicate<TypeRef>() {
|
||||
@Override
|
||||
public boolean apply(TypeRef input) {
|
||||
return !(input.eContainer() instanceof CrossReference) && input.getClassifier() instanceof EClass;
|
||||
}
|
||||
}), new Function<TypeRef, EPackage>() {
|
||||
@Override
|
||||
public EPackage apply(TypeRef from) {
|
||||
return from.getClassifier().getEPackage();
|
||||
}
|
||||
|
|
|
@ -24,10 +24,12 @@ public interface IGrammarAccess {
|
|||
}
|
||||
|
||||
interface IEnumRuleAccess extends IAbstractRuleAccess {
|
||||
@Override
|
||||
EnumRule getRule();
|
||||
}
|
||||
|
||||
interface IParserRuleAccess extends IAbstractRuleAccess {
|
||||
@Override
|
||||
ParserRule getRule();
|
||||
}
|
||||
|
||||
|
|
|
@ -20,9 +20,11 @@ import org.eclipse.xtext.nodemodel.INode;
|
|||
public interface IValueConverter<Type> {
|
||||
|
||||
IValueConverter<? extends Object> NO_OP_CONVERTER = new IValueConverter<String>() {
|
||||
@Override
|
||||
public String toString(String value) {
|
||||
return value;
|
||||
}
|
||||
@Override
|
||||
public String toValue(String string, INode node) {
|
||||
return string;
|
||||
}
|
||||
|
|
|
@ -64,10 +64,12 @@ public abstract class AbstractDeclarativeValueConverterService extends AbstractV
|
|||
return grammar;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString(Object value, String lexerRule) {
|
||||
return getConverter(lexerRule).toString(value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object toValue(String string, String lexerRule, INode node) throws ValueConverterException {
|
||||
return getConverter(lexerRule).toValue(string, node);
|
||||
}
|
||||
|
@ -75,6 +77,7 @@ public abstract class AbstractDeclarativeValueConverterService extends AbstractV
|
|||
/**
|
||||
* @since 2.7
|
||||
*/
|
||||
@Override
|
||||
@SuppressWarnings("unchecked")
|
||||
public IValueConverter<Object> getConverter(String lexerRule) {
|
||||
Map<String, IValueConverter<Object>> map = getConverters();
|
||||
|
|
|
@ -80,6 +80,7 @@ public abstract class AbstractIDValueConverter extends AbstractLexerBasedConvert
|
|||
|
||||
protected String getInvalidCharactersMessage(String value, Set<Character> invalidChars) {
|
||||
String chars = Joiner.on(", ").join(Iterables.transform(invalidChars, new Function<Character, String>() {
|
||||
@Override
|
||||
public String apply(Character from) {
|
||||
return "'" + from + "' (0x" + Integer.toHexString(from) + ")";
|
||||
}
|
||||
|
@ -104,6 +105,7 @@ public abstract class AbstractIDValueConverter extends AbstractLexerBasedConvert
|
|||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toValue(String string, INode node) {
|
||||
if (string == null)
|
||||
return null;
|
||||
|
|
|
@ -37,6 +37,7 @@ public abstract class AbstractLexerBasedConverter<T> extends AbstractValueConver
|
|||
|
||||
private AbstractRule rule;
|
||||
|
||||
@Override
|
||||
public String toString(T value) {
|
||||
assertValidValue(value);
|
||||
String result = toEscapedString(value);
|
||||
|
@ -118,6 +119,7 @@ public abstract class AbstractLexerBasedConverter<T> extends AbstractValueConver
|
|||
return rule;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setRule(AbstractRule rule) {
|
||||
this.rule = rule;
|
||||
}
|
||||
|
|
|
@ -15,6 +15,7 @@ import org.eclipse.xtext.nodemodel.INode;
|
|||
*/
|
||||
public abstract class AbstractNullSafeConverter<T> extends AbstractValueConverter<T> {
|
||||
|
||||
@Override
|
||||
public String toString(T value) {
|
||||
if (value == null)
|
||||
return null;
|
||||
|
@ -23,6 +24,7 @@ public abstract class AbstractNullSafeConverter<T> extends AbstractValueConverte
|
|||
|
||||
protected abstract String internalToString(T value);
|
||||
|
||||
@Override
|
||||
public T toValue(String string, INode node) throws ValueConverterException {
|
||||
if (string == null)
|
||||
return null;
|
||||
|
|
|
@ -43,6 +43,7 @@ public class DefaultTerminalConverter extends AbstractLexerBasedConverter<Object
|
|||
this.dataType = dataType;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object toValue(String string, INode node) throws ValueConverterException {
|
||||
try {
|
||||
return dataType.getEPackage().getEFactoryInstance().createFromString(dataType, string);
|
||||
|
|
|
@ -26,10 +26,12 @@ public class EFactoryValueConverter implements IValueConverter<Object> {
|
|||
this.dataType = dataType;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString(Object value) {
|
||||
return dataType.getEPackage().getEFactoryInstance().convertToString(dataType, value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object toValue(String string, INode node) throws ValueConverterException {
|
||||
try {
|
||||
Object value = dataType.getEPackage().getEFactoryInstance().createFromString(dataType, string);
|
||||
|
|
|
@ -32,6 +32,7 @@ public class INTValueConverter extends AbstractLexerBasedConverter<Integer> {
|
|||
throw new ValueConverterException(getRuleName() + "-value may not be negative (value: " + value + ").", null, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Integer toValue(String string, INode node) {
|
||||
if (Strings.isEmpty(string))
|
||||
throw new ValueConverterException("Couldn't convert empty string to an int value.", node, null);
|
||||
|
|
|
@ -36,6 +36,7 @@ public class KeywordAlternativeConverter extends AbstractValueConverter<String>
|
|||
private IValueConverterService delegateService;
|
||||
private IValueConverter<Object> delegateConverter;
|
||||
|
||||
@Override
|
||||
public String toValue(String string, INode node) throws ValueConverterException {
|
||||
if (keywords.contains(string))
|
||||
return string;
|
||||
|
@ -43,6 +44,7 @@ public class KeywordAlternativeConverter extends AbstractValueConverter<String>
|
|||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString(String value) throws ValueConverterException {
|
||||
if (keywords.contains(value))
|
||||
return value;
|
||||
|
@ -60,10 +62,12 @@ public class KeywordAlternativeConverter extends AbstractValueConverter<String>
|
|||
final String ruleName = delegateRule.getName();
|
||||
return delegateConverter = new IValueConverter<Object>() {
|
||||
|
||||
@Override
|
||||
public Object toValue(String string, INode node) throws ValueConverterException {
|
||||
return delegateService.toValue(string, ruleName, node);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString(Object value) throws ValueConverterException {
|
||||
return delegateService.toString(value, ruleName);
|
||||
}
|
||||
|
@ -80,6 +84,7 @@ public class KeywordAlternativeConverter extends AbstractValueConverter<String>
|
|||
* @throws IllegalArgumentException if the rule is not a datatype rule or does not fulfill
|
||||
* the pattern <pre>RuleName: 'keyword' | 'other';</pre>
|
||||
*/
|
||||
@Override
|
||||
public void setRule(AbstractRule rule) {
|
||||
if (!GrammarUtil.isDatatypeRule(rule))
|
||||
throw new IllegalArgumentException(rule.getName() + " is not a data type rule");
|
||||
|
|
|
@ -39,10 +39,12 @@ public class KeywordBasedValueConverter extends AbstractValueConverter<String> i
|
|||
private Set<String> keywords;
|
||||
private AbstractRule rule;
|
||||
|
||||
@Override
|
||||
public String toValue(String string, INode node) throws ValueConverterException {
|
||||
return string;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString(String value) throws ValueConverterException {
|
||||
assertValidValue(value);
|
||||
String result = toEscapedString(value);
|
||||
|
@ -66,6 +68,7 @@ public class KeywordBasedValueConverter extends AbstractValueConverter<String> i
|
|||
* @throws IllegalArgumentException if the rule is not a datatype rule or does not fulfill
|
||||
* the pattern <pre>RuleName: 'keyword' | 'other';</pre>
|
||||
*/
|
||||
@Override
|
||||
public void setRule(AbstractRule rule) {
|
||||
this.rule = rule;
|
||||
if (!GrammarUtil.isDatatypeRule(rule))
|
||||
|
|
|
@ -71,6 +71,7 @@ public class QualifiedNameValueConverter extends AbstractValueConverter<String>
|
|||
return "ID";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString(String value) {
|
||||
String valueDelimiter = getValueNamespaceDelimiter();
|
||||
List<String> segments = valueDelimiter.length() == 1 ? Strings.split(value, valueDelimiter.charAt(0)) : Strings.split(value, valueDelimiter);
|
||||
|
@ -93,6 +94,7 @@ public class QualifiedNameValueConverter extends AbstractValueConverter<String>
|
|||
return result.toString();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toValue(String string, INode node) throws ValueConverterException {
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
boolean isFirst = true;
|
||||
|
@ -154,10 +156,12 @@ public class QualifiedNameValueConverter extends AbstractValueConverter<String>
|
|||
final String ruleName = getDelegateRuleName();
|
||||
return delegateConverter = new IValueConverter<Object>() {
|
||||
|
||||
@Override
|
||||
public Object toValue(String string, INode node) throws ValueConverterException {
|
||||
return valueConverterService.toValue(string, ruleName, node);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString(Object value) throws ValueConverterException {
|
||||
return valueConverterService.toString(value, ruleName);
|
||||
}
|
||||
|
|
|
@ -22,6 +22,7 @@ public class STRINGValueConverter extends AbstractLexerBasedConverter<String> {
|
|||
return '"' + Strings.convertToJavaString(value, false) + '"';
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toValue(String string, INode node) {
|
||||
if (string == null)
|
||||
return null;
|
||||
|
|
|
@ -21,6 +21,7 @@ public interface IStratumBreakpointSupport {
|
|||
|
||||
public static class DefaultImpl implements IStratumBreakpointSupport {
|
||||
|
||||
@Override
|
||||
public boolean isValidLineForBreakPoint(XtextResource resource, int line) {
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -23,6 +23,7 @@ public abstract class AbstractDiagnostic implements Diagnostic {
|
|||
|
||||
public abstract String[] getData();
|
||||
|
||||
@Override
|
||||
public int getLength() {
|
||||
INode node = getNode();
|
||||
if (node != null)
|
||||
|
@ -30,6 +31,7 @@ public abstract class AbstractDiagnostic implements Diagnostic {
|
|||
return 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getOffset() {
|
||||
INode node = getNode();
|
||||
if (node != null)
|
||||
|
@ -37,10 +39,12 @@ public abstract class AbstractDiagnostic implements Diagnostic {
|
|||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getColumn() {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getLine() {
|
||||
INode node = getNode();
|
||||
if (node != null)
|
||||
|
@ -48,6 +52,7 @@ public abstract class AbstractDiagnostic implements Diagnostic {
|
|||
return -1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getLocation() {
|
||||
return null;
|
||||
}
|
||||
|
|
|
@ -26,20 +26,24 @@ public abstract class AbstractDiagnosticProducer implements IDiagnosticProducer
|
|||
this.consumer = consumer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addDiagnostic(DiagnosticMessage message) {
|
||||
consumer.consume(createDiagnostic(message), message.getSeverity());
|
||||
}
|
||||
|
||||
protected abstract Diagnostic createDiagnostic(DiagnosticMessage message);
|
||||
|
||||
@Override
|
||||
public void setNode(INode node) {
|
||||
this.node = node;
|
||||
}
|
||||
|
||||
@Override
|
||||
public INode getNode() {
|
||||
return node;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setTarget(EObject object, EStructuralFeature feature) {
|
||||
// nothing to do
|
||||
}
|
||||
|
|
|
@ -23,18 +23,22 @@ public class AbstractDiagnosticProducerDecorator implements IDiagnosticProducer
|
|||
this.producer = producer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addDiagnostic(DiagnosticMessage message) {
|
||||
producer.addDiagnostic(message);
|
||||
}
|
||||
|
||||
@Override
|
||||
public INode getNode() {
|
||||
return producer.getNode();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setNode(INode node) {
|
||||
producer.setNode(node);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setTarget(EObject object, EStructuralFeature feature) {
|
||||
producer.setTarget(object, feature);
|
||||
}
|
||||
|
|
|
@ -18,26 +18,32 @@ public class ExceptionDiagnostic implements Diagnostic {
|
|||
this.exception = exception;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getLength() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getOffset() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getColumn() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getLine() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getLocation() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getMessage() {
|
||||
return exception.getClass().getSimpleName() + ": " + exception.getMessage() + " (see logs for details)";
|
||||
}
|
||||
|
|
|
@ -16,18 +16,22 @@ import org.eclipse.xtext.nodemodel.INode;
|
|||
*/
|
||||
public class NullDiagnosticProducer implements IDiagnosticProducer {
|
||||
|
||||
@Override
|
||||
public void addDiagnostic(DiagnosticMessage message) {
|
||||
// nothing to do
|
||||
}
|
||||
|
||||
@Override
|
||||
public INode getNode() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setNode(INode node) {
|
||||
// nothing to do
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setTarget(EObject object, EStructuralFeature feature) {
|
||||
// nothing to do
|
||||
}
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue