mirror of
https://github.com/sigmasternchen/xtext-core
synced 2025-03-15 16:28:56 +00:00
Adjustments to XtextAntlrGeneratorFragment
This commit is contained in:
parent
b976102162
commit
550eede373
2 changed files with 47 additions and 22 deletions
|
@ -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)
|
||||
}
|
||||
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue