Java源码示例:org.eclipse.xtext.parser.IParser
示例1
/**
* Parses the given string with the parser of the Xtext language denoted by the given file extension. In case of
* syntax errors, the returned parse result will have a non-empty list of {@link ParseResult#errors}.
*/
public static <T extends EObject> ParseResult<T> parseXtextLanguage(String fileExtOfLanguage,
ParserRule parserRuleOrNull, Class<T> expectedTypeOfRoot, Reader sourceReader) {
final IParser parser = getServiceForContext(fileExtOfLanguage, IParser.class)
.orElseThrow(() -> new RuntimeException(
"Cannot obtain Xtext parser for language with file extension: " + fileExtOfLanguage));
final IParseResult result;
if (parserRuleOrNull != null) {
result = parser.parse(parserRuleOrNull, sourceReader);
} else {
result = parser.parse(sourceReader);
}
final Iterable<SyntaxErrorMessage> errors = Iterables.transform(result.getSyntaxErrors(),
node -> node.getSyntaxErrorMessage());
final EObject root = result.getRootASTElement();
if (root != null && expectedTypeOfRoot.isInstance(root)) {
final T rootCasted = expectedTypeOfRoot.cast(root);
return new ParseResult<>(rootCasted, errors);
}
return new ParseResult<>(null, errors);
}
示例2
private HtmlTag findOpenTag(String htmlLabelText, int offset) {
Injector htmlLabelInjector = DotActivator.getInstance().getInjector(
DotActivator.ORG_ECLIPSE_GEF_DOT_INTERNAL_LANGUAGE_DOTHTMLLABEL);
IParser htmlLabelParser = htmlLabelInjector.getInstance(IParser.class);
HtmlLabel htmlLabel = (HtmlLabel) htmlLabelParser
.parse(new StringReader(htmlLabelText)).getRootASTElement();
if (htmlLabel != null) {
HtmlContent result = findContentAtOffset(htmlLabel.getParts(),
offset);
if (result != null) {
return result.getTag();
}
}
return null;
}
示例3
public FontName parseHtmlFontFace(String face) {
if (face == null) {
return null;
}
IParser parser = DotActivator.getInstance().getInjector(
DotActivator.ORG_ECLIPSE_GEF_DOT_INTERNAL_LANGUAGE_DOTFONTNAME)
.getInstance(IParser.class);
EObject rootNode = parser.parse(new StringReader(face))
.getRootASTElement();
if (rootNode instanceof FontName) {
return (FontName) rootNode;
}
return null;
}
示例4
/**
* Returns the {@link Color} of a HTML-like label color attribute
*
* @param htmlColor
* The string attribute value.
* @return The corresponding {@link Color}.
*/
public Color computeHtmlColor(String htmlColor) {
if (htmlColor == null) {
return null;
}
IParser parser = DotActivator.getInstance().getInjector(
DotActivator.ORG_ECLIPSE_GEF_DOT_INTERNAL_LANGUAGE_DOTCOLOR)
.getInstance(IParser.class);
EObject rootNode = parser.parse(new StringReader(htmlColor))
.getRootASTElement();
if (rootNode instanceof Color) {
return (Color) rootNode;
}
return null;
}
示例5
public Class<? extends IParser> bindIParser() {
return FormatterTestLanguageParser.class;
}
示例6
public Class<? extends IParser> bindIParser() {
return SemverParser.class;
}
示例7
public Class<? extends IParser> bindIParser() {
return ActionTestLanguage3Parser.class;
}
示例8
public Class<? extends IParser> bindIParser() {
return RegularExpressionParser.class;
}
示例9
public Class<? extends IParser> bindIParser() {
return RefactoringTestLanguageParser.class;
}
示例10
public Class<? extends IParser> bindIParser() {
return EObjectAtOffsetTestLanguageParser.class;
}
示例11
public Class<? extends IParser> bindIParser() {
return HiddenTokenSequencerTestLanguageParser.class;
}
示例12
public Class<? extends IParser> bindIParser() {
return JSONParser.class;
}
示例13
public Class<? extends IParser> bindIParser() {
return LiveContainerBuilderIntegerationTestLanguageParser.class;
}
示例14
public Class<? extends IParser> bindIParser() {
return Bug292245TestLanguageParser.class;
}
示例15
public Class<? extends IParser> bindIParser() {
return XbaseWithAnnotationsParser.class;
}
示例16
protected IParseResult fullyReparse(final IParser parser, final IParseResult previousParseResult, final ReplaceRegion replaceRegion) {
unloadSemanticObject(previousParseResult.getRootASTElement());
String reparseRegion = insertChangeIntoReplaceRegion(previousParseResult.getRootNode(), replaceRegion);
return parser.parse(new StringReader(reparseRegion));
}
示例17
public void setParser(IParser parser) {
this.parser = parser;
}
示例18
public Class<? extends IParser> bindIParser() {
return NoParametersTestLanguageParser.class;
}
示例19
protected IParseResult fullyReparse(IParser parser, IParseResult previousParseResult, ReplaceRegion replaceRegion) {
unloadSemanticObject(previousParseResult.getRootASTElement());
String reparseRegion = insertChangeIntoReplaceRegion(previousParseResult.getRootNode(), replaceRegion);
return parser.parse(new StringReader(reparseRegion));
}
示例20
public Class<? extends IParser> bindIParser() {
return RefactoringTestLanguageParser.class;
}
示例21
public Class<? extends IParser> bindIParser() {
return RefactoringTestLanguage1Parser.class;
}
示例22
public Class<? extends IParser> bindIParser() {
return SimpleExpressionsTestLanguageParser.class;
}
示例23
public Class<? extends IParser> bindIParser() {
return LocationProviderTestLanguageParser.class;
}
示例24
public Class<? extends IParser> bindIParser() {
return StatemachineParser.class;
}
示例25
public Class<? extends IParser> bindIParser() {
return IgnoreCaseNamespacesTestLanguageParser.class;
}
示例26
public Class<? extends IParser> bindIParser() {
return XtextGrammarTestLanguageParser.class;
}
示例27
public Class<? extends IParser> bindIParser() {
return Bug462047LangParser.class;
}
示例28
public Class<? extends IParser> bindIParser() {
return Bug287184TestLanguageParser.class;
}
示例29
public Class<? extends IParser> bindIParser() {
return AssignmentFinderTestLanguageParser.class;
}
示例30
public Class<? extends IParser> bindIParser() {
return IgnoreCaseLexerTestLanguageParser.class;
}