Adjustments to XtextAntlrGeneratorFragment

This commit is contained in:
Sebastian Zarnekow 2017-06-12 15:24:23 +02:00
parent b976102162
commit 550eede373
2 changed files with 47 additions and 22 deletions

View file

@ -86,7 +86,7 @@ class XtextAntlrGeneratorFragment2 extends AbstractAntlrGeneratorFragment2 {
if (combinedGrammar.isSet)
combinedGrammar.get
else
!options.backtrackLexer && !options.ignoreCase && !grammar.allTerminalRules.exists[isSyntheticTerminalRule]
!options.backtrackLexer && !options.ignoreCase && !hasSyntheticTerminalRule
}
override protected doGenerate() {
@ -103,7 +103,7 @@ class XtextAntlrGeneratorFragment2 extends AbstractAntlrGeneratorFragment2 {
generateProductionParser().writeTo(projectConfig.runtime.srcGen)
generateAntlrTokenFileProvider().writeTo(projectConfig.runtime.srcGen)
generateContentAssistParser().writeTo(projectConfig.genericIde.srcGen)
if (grammar.allTerminalRules.exists[ isSyntheticTerminalRule ]) {
if (hasSyntheticTerminalRule()) {
generateProductionTokenSource().writeTo(projectConfig.runtime.src)
generateContentAssistTokenSource().writeTo(projectConfig.genericIde.src)
}
@ -112,6 +112,10 @@ class XtextAntlrGeneratorFragment2 extends AbstractAntlrGeneratorFragment2 {
addUiBindingsAndImports()
}
protected def boolean hasSyntheticTerminalRule() {
grammar.allTerminalRules.exists[ isSyntheticTerminalRule ]
}
def void setLookaheadThreshold(String lookaheadThreshold) {
this.lookaheadThreshold = Integer.parseInt(lookaheadThreshold)
}
@ -194,7 +198,7 @@ class XtextAntlrGeneratorFragment2 extends AbstractAntlrGeneratorFragment2 {
tokenStream.setInitialHiddenTokens(«FOR hidden : grammar.initialHiddenTokens SEPARATOR ", "»"«hidden»"«ENDFOR»);
}
«IF grammar.allTerminalRules.exists[isSyntheticTerminalRule]»
«IF hasSyntheticTerminalRule»
@Override
protected «TokenSource» createLexer(«CharStream» stream) {
return new «grammar.tokenSourceClass»(super.createLexer(stream));
@ -316,7 +320,7 @@ class XtextAntlrGeneratorFragment2 extends AbstractAntlrGeneratorFragment2 {
return result;
}
«IF grammar.allTerminalRules.exists[isSyntheticTerminalRule]»
«IF hasSyntheticTerminalRule»
@Override
protected «TokenSource» createLexer(«CharStream» stream) {
return new «grammar.tokenSourceClass»(super.createLexer(stream));
@ -485,6 +489,12 @@ class XtextAntlrGeneratorFragment2 extends AbstractAntlrGeneratorFragment2 {
"org.eclipse.xtext.ide.editor.contentassist.antlr.PartialContentAssistContextFactory".typeRef
)
}
if (hasSyntheticTerminalRule) {
ideBindings.addTypeToType(
"org.eclipse.xtext.ide.editor.contentassist.CompletionPrefixProvider".typeRef,
"org.eclipse.xtext.ide.editor.contentassist.IndentationAwareCompletionPrefixProvider".typeRef
)
}
ideBindings.contributeTo(language.ideGenModule)
}
@ -535,6 +545,13 @@ class XtextAntlrGeneratorFragment2 extends AbstractAntlrGeneratorFragment2 {
.addConfiguredBinding("ContentAssistLexerProvider", '''
binder.bind(«caLexerClass».class).toProvider(«LexerProvider».create(«caLexerClass».class));
''')
if (hasSyntheticTerminalRule) {
uiBindings.addTypeToType(
"org.eclipse.xtext.ide.editor.contentassist.CompletionPrefixProvider".typeRef,
"org.eclipse.xtext.ide.editor.contentassist.IndentationAwareCompletionPrefixProvider".typeRef
)
}
uiBindings.contributeTo(language.eclipsePluginGenModule)
}

View file

@ -132,9 +132,7 @@ public class XtextAntlrGeneratorFragment2 extends AbstractAntlrGeneratorFragment
if (_isSet) {
_xifexpression = this.combinedGrammar.get();
} else {
_xifexpression = (((!this.getOptions().isBacktrackLexer()) && (!this.getOptions().isIgnoreCase())) && (!IterableExtensions.<TerminalRule>exists(GrammarUtil.allTerminalRules(this.getGrammar()), ((Function1<TerminalRule, Boolean>) (TerminalRule it) -> {
return Boolean.valueOf(this._syntheticTerminalDetector.isSyntheticTerminalRule(it));
}))));
_xifexpression = (((!this.getOptions().isBacktrackLexer()) && (!this.getOptions().isIgnoreCase())) && (!this.hasSyntheticTerminalRule()));
}
return _xifexpression;
}
@ -159,11 +157,8 @@ public class XtextAntlrGeneratorFragment2 extends AbstractAntlrGeneratorFragment
this.generateProductionParser().writeTo(this.getProjectConfig().getRuntime().getSrcGen());
this.generateAntlrTokenFileProvider().writeTo(this.getProjectConfig().getRuntime().getSrcGen());
this.generateContentAssistParser().writeTo(this.getProjectConfig().getGenericIde().getSrcGen());
final Function1<TerminalRule, Boolean> _function = (TerminalRule it) -> {
return Boolean.valueOf(this._syntheticTerminalDetector.isSyntheticTerminalRule(it));
};
boolean _exists = IterableExtensions.<TerminalRule>exists(GrammarUtil.allTerminalRules(this.getGrammar()), _function);
if (_exists) {
boolean _hasSyntheticTerminalRule = this.hasSyntheticTerminalRule();
if (_hasSyntheticTerminalRule) {
this.generateProductionTokenSource().writeTo(this.getProjectConfig().getRuntime().getSrc());
this.generateContentAssistTokenSource().writeTo(this.getProjectConfig().getGenericIde().getSrc());
}
@ -172,6 +167,13 @@ public class XtextAntlrGeneratorFragment2 extends AbstractAntlrGeneratorFragment
this.addUiBindingsAndImports();
}
protected boolean hasSyntheticTerminalRule() {
final Function1<TerminalRule, Boolean> _function = (TerminalRule it) -> {
return Boolean.valueOf(this._syntheticTerminalDetector.isSyntheticTerminalRule(it));
};
return IterableExtensions.<TerminalRule>exists(GrammarUtil.allTerminalRules(this.getGrammar()), _function);
}
public void setLookaheadThreshold(final String lookaheadThreshold) {
this.lookaheadThreshold = Integer.parseInt(lookaheadThreshold);
}
@ -314,11 +316,8 @@ public class XtextAntlrGeneratorFragment2 extends AbstractAntlrGeneratorFragment
_builder.append("\t");
_builder.newLine();
{
final Function1<TerminalRule, Boolean> _function = (TerminalRule it) -> {
return Boolean.valueOf(XtextAntlrGeneratorFragment2.this._syntheticTerminalDetector.isSyntheticTerminalRule(it));
};
boolean _exists = IterableExtensions.<TerminalRule>exists(GrammarUtil.allTerminalRules(XtextAntlrGeneratorFragment2.this.getGrammar()), _function);
if (_exists) {
boolean _hasSyntheticTerminalRule = XtextAntlrGeneratorFragment2.this.hasSyntheticTerminalRule();
if (_hasSyntheticTerminalRule) {
_builder.append("\t");
_builder.append("@Override");
_builder.newLine();
@ -717,11 +716,8 @@ public class XtextAntlrGeneratorFragment2 extends AbstractAntlrGeneratorFragment
_builder.newLine();
_builder.newLine();
{
final Function1<TerminalRule, Boolean> _function = (TerminalRule it) -> {
return Boolean.valueOf(XtextAntlrGeneratorFragment2.this._syntheticTerminalDetector.isSyntheticTerminalRule(it));
};
boolean _exists = IterableExtensions.<TerminalRule>exists(GrammarUtil.allTerminalRules(XtextAntlrGeneratorFragment2.this.getGrammar()), _function);
if (_exists) {
boolean _hasSyntheticTerminalRule = XtextAntlrGeneratorFragment2.this.hasSyntheticTerminalRule();
if (_hasSyntheticTerminalRule) {
_builder.append("\t");
_builder.append("@Override");
_builder.newLine();
@ -1180,6 +1176,12 @@ public class XtextAntlrGeneratorFragment2 extends AbstractAntlrGeneratorFragment
TypeReference.typeRef("org.eclipse.xtext.ide.editor.contentassist.antlr.ContentAssistContextFactory"),
TypeReference.typeRef("org.eclipse.xtext.ide.editor.contentassist.antlr.PartialContentAssistContextFactory"));
}
boolean _hasSyntheticTerminalRule = this.hasSyntheticTerminalRule();
if (_hasSyntheticTerminalRule) {
ideBindings.addTypeToType(
TypeReference.typeRef("org.eclipse.xtext.ide.editor.contentassist.CompletionPrefixProvider"),
TypeReference.typeRef("org.eclipse.xtext.ide.editor.contentassist.IndentationAwareCompletionPrefixProvider"));
}
ideBindings.contributeTo(this.getLanguage().getIdeGenModule());
}
@ -1293,6 +1295,12 @@ public class XtextAntlrGeneratorFragment2 extends AbstractAntlrGeneratorFragment
}
};
final GuiceModuleAccess.BindingFactory uiBindings = _addTypeToType_1.addConfiguredBinding("ContentAssistLexerProvider", _client_3);
boolean _hasSyntheticTerminalRule = this.hasSyntheticTerminalRule();
if (_hasSyntheticTerminalRule) {
uiBindings.addTypeToType(
TypeReference.typeRef("org.eclipse.xtext.ide.editor.contentassist.CompletionPrefixProvider"),
TypeReference.typeRef("org.eclipse.xtext.ide.editor.contentassist.IndentationAwareCompletionPrefixProvider"));
}
uiBindings.contributeTo(this.getLanguage().getEclipsePluginGenModule());
}