本文整理汇总了Java中org.metaborg.core.context.IContext类的典型用法代码示例。如果您正苦于以下问题:Java IContext类的具体用法?Java IContext怎么用?Java IContext使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
IContext类属于org.metaborg.core.context包,在下文中一共展示了IContext类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Java代码示例。
示例1: doAnnotate
import org.metaborg.core.context.IContext; //导入依赖的package包/类
@Nullable
@Override
public ISpoofaxAnalyzeUnit doAnnotate(final MetaborgSourceAnnotationInfo info) {
this.logger.debug("Requesting analysis result for file: {}", info.resource());
@Nullable ISpoofaxAnalyzeUnit analysisResult = null;
try {
final IContext context = info.context();
final ISpoofaxInputUnit input =
unitSerivce.inputUnit(info.resource(), info.text(), context.language(), null);
analysisResult = this.analysisResultProcessor.request(input, context).toBlocking().single();
} catch(final RuntimeException ex) {
// FIXME: Dedicated exception!
if(ex.getCause() instanceof AnalysisException
&& ex.getCause().getMessage().equals("No analysis results.")) {
this.logger.info("No analysis results for file: {}", info.resource());
} else {
this.logger.error("Runtime exception while annotating file: {}", ex, info.resource());
}
}
this.logger.info("Requested analysis result for file: {}", info.resource());
return analysisResult;
}
开发者ID:metaborg,项目名称:spoofax-intellij,代码行数:26,代码来源:MetaborgSourceAnnotator.java
示例2: invoke
import org.metaborg.core.context.IContext; //导入依赖的package包/类
@Override
public IStrategoTerm invoke(Context context, IStrategoTerm current) {
if (!(current instanceof IStrategoString)) {
return null;
}
final IContext mbContext = (IContext) context.contextObject();
final Injector injector = mbContext.injector();
final IResourceService resources = injector.getInstance(IResourceService.class);
final FileObject fileObj = resources.resolve(Tools.asJavaString(current));
try {
fileObj.setExecutable(true, false);
} catch (FileSystemException e1) {
return null;
}
return current;
}
开发者ID:metaborg,项目名称:dynsem,代码行数:19,代码来源:fmakeexecutable_0_0.java
示例3: analyzeAll
import org.metaborg.core.context.IContext; //导入依赖的package包/类
@Override public ISpoofaxAnalyzeResults analyzeAll(Iterable<ISpoofaxParseUnit> inputs, IContext context,
IProgress progress, ICancel cancel) throws AnalysisException, InterruptedException {
cancel.throwIfCancelled();
final ILanguageImpl langImpl = context.language();
final ITermFactory termFactory = termFactoryService.getGeneric();
final FacetContribution<AnalysisFacet> facetContribution = langImpl.facetContribution(AnalysisFacet.class);
if(facetContribution == null) {
logger.debug("No analysis required for {}", langImpl);
return new SpoofaxAnalyzeResults(context);
}
final AnalysisFacet facet = facetContribution.facet;
cancel.throwIfCancelled();
final HybridInterpreter runtime;
try {
runtime = runtimeService.runtime(facetContribution.contributor, context, false);
} catch(MetaborgException e) {
throw new AnalysisException(context, "Failed to get Stratego runtime", e);
}
cancel.throwIfCancelled();
return analyzeAll(inputs, context, runtime, facet.strategyName, termFactory);
}
开发者ID:metaborg,项目名称:spoofax,代码行数:26,代码来源:TaskEngineAnalyzer.java
示例4: call
import org.metaborg.core.context.IContext; //导入依赖的package包/类
@Override protected IStrategoTerm call(IStrategoTerm current, Strategy[] svars, IStrategoTerm[] tvars,
ITermFactory factory, IContext context) throws MetaborgException, IOException {
if(!Tools.isTermString(tvars[0])) {
return null;
}
final IProject project = projectService.get(context.location());
if(project == null) {
return factory.makeList();
}
// GTODO: require language identifier instead of language name
final String languageName = Tools.asJavaString(tvars[0]);
final Iterable<FileObject> includeLocations = languagePathService.includePaths(project, languageName);
final List<IStrategoTerm> terms = Lists.newArrayList();
for(FileObject includeLocation : includeLocations) {
terms.add(factory.makeString(includeLocation.getName().getURI()));
}
return factory.makeList(terms);
}
开发者ID:metaborg,项目名称:spoofax,代码行数:21,代码来源:LanguageIncludeDirectoriesPrimitive.java
示例5: call
import org.metaborg.core.context.IContext; //导入依赖的package包/类
@Override protected IStrategoTerm call(IStrategoTerm current, Strategy[] svars, IStrategoTerm[] tvars,
ITermFactory factory, IContext context) {
if(!Tools.isTermString(tvars[0])) {
return null;
}
final IProject project = projectService.get(context.location());
if(project == null) {
return factory.makeList();
}
// GTODO: require language identifier instead of language name
final String languageName = Tools.asJavaString(tvars[0]);
final Iterable<FileObject> sourceLocations = languagePathService.sourcePaths(project, languageName);
final List<IStrategoTerm> terms = Lists.newArrayList();
for(FileObject sourceLocation : sourceLocations) {
terms.add(factory.makeString(sourceLocation.getName().getURI()));
}
return factory.makeList(terms);
}
开发者ID:metaborg,项目名称:spoofax,代码行数:21,代码来源:LanguageSourceDirectoriesPrimitive.java
示例6: collectInformation
import org.metaborg.core.context.IContext; //导入依赖的package包/类
@Override public @Nullable
MetaborgSourceAnnotationInfo collectInformation(final PsiFile file, final Editor editor,
final boolean hasErrors) {
this.logger.debug("Collecting annotation information for file: {}", file);
final MetaborgSourceAnnotationInfo info;
@Nullable final IProject project = this.projectService.get(file);
if(project == null) {
this.logger.warn("Cannot annotate source code; cannot get language specification for resource {}. "
+ "Is the file excluded?", MoreObjects.firstNonNull(file.getVirtualFile(), "<unknown>"));
return null;
}
try {
@Nullable final FileObject resource = this.resourceService.resolve(file);
@Nullable final ILanguageImpl language = this.identifierService.identify(resource, project);
if(language == null) {
this.logger.warn("Skipping annotation. Could not identify the language of resource: {}", resource);
return null;
}
final IContext context = this.contextService.get(resource, project, language);
final String text = editor.getDocument().getImmutableCharSequence().toString();
info = new MetaborgSourceAnnotationInfo(resource, text, context);
} catch(final ContextException e) {
throw LoggerUtils2.exception(this.logger, UnhandledException.class, "Unexpected unhandled exception.", e);
}
this.logger.info("Collected annotation information for file: {}", file);
return info;
}
开发者ID:metaborg,项目名称:spoofax-intellij,代码行数:33,代码来源:MetaborgSourceAnnotator.java
示例7: call
import org.metaborg.core.context.IContext; //导入依赖的package包/类
@Override protected IStrategoTerm call(IStrategoTerm current, Strategy[] svars, IStrategoTerm[] tvars,
ITermFactory factory, IContext context) throws MetaborgException {
final FileObject location = context.location();
final IProject project = projectService.get(location);
if(project == null) {
return null;
}
if(languageSpecServiceProvider == null) {
// Indicates that meta-Spoofax is not available (ISpoofaxLanguageSpecService cannot be injected), but this
// should never happen because this primitive is inside meta-Spoofax. Check for null just in case.
logger.error("Language specification service is not available; static injection failed");
return null;
}
final ISpoofaxLanguageSpecService languageSpecService = languageSpecServiceProvider.get();
if(!languageSpecService.available(project)) {
return null;
}
final ISpoofaxLanguageSpec languageSpec;
try {
languageSpec = languageSpecService.get(project);
} catch(ConfigException e) {
throw new MetaborgException("Unable to get language specification name for " + location, e);
}
if(languageSpec == null) {
return null;
}
return factory.makeString(languageSpec.config().prettyPrintLanguage());
}
开发者ID:metaborg,项目名称:spoofax,代码行数:31,代码来源:LanguageSpecPpNamePrimitive.java
示例8: result
import org.metaborg.core.context.IContext; //导入依赖的package包/类
private ISpoofaxAnalyzeUnit result(String error, ISpoofaxParseUnit input, IContext context, Throwable e,
long duration) {
final FileObject source = input.source();
final IMessage message = MessageFactory.newAnalysisErrorAtTop(source, error, e);
return unitService.analyzeUnit(input,
new AnalyzeContrib(false, false, true, null, Iterables2.singleton(message), duration), context);
}
开发者ID:metaborg,项目名称:spoofax,代码行数:8,代码来源:StrategoAnalyzer.java
示例9: call
import org.metaborg.core.context.IContext; //导入依赖的package包/类
@Override protected IStrategoTerm call(IStrategoTerm current, Strategy[] svars, IStrategoTerm[] tvars,
ITermFactory factory, IContext context) throws MetaborgException {
final IProject project = context.project();
if(project == null) {
return null;
}
if(languageSpecServiceProvider == null) {
// Indicates that meta-Spoofax is not available (ISpoofaxLanguageSpecService cannot be injected), but this
// should never happen because this primitive is inside meta-Spoofax. Check for null just in case.
logger.error("Language specification service is not available; static injection failed");
return null;
}
final ISpoofaxLanguageSpecService languageSpecService = languageSpecServiceProvider.get();
if(!languageSpecService.available(project)) {
return null;
}
final ISpoofaxLanguageSpec languageSpec;
try {
languageSpec = languageSpecService.get(project);
} catch(ConfigException e) {
throw new MetaborgException("Unable to get language specification configuration for " + project, e);
}
if(languageSpec == null) {
return null;
}
final IStrategoString nameTerm = factory.makeString(languageSpec.config().name());
final LanguageIdentifier id = languageSpec.config().identifier();
final IStrategoString groupIdTerm = factory.makeString(id.groupId);
final IStrategoString idTerm = factory.makeString(id.id);
final IStrategoString versionTerm = factory.makeString(id.version.toString());
final IStrategoString locationTerm = factory.makeString(languageSpec.location().getName().getURI());
return factory.makeTuple(nameTerm, groupIdTerm, idTerm, versionTerm, locationTerm);
}
开发者ID:metaborg,项目名称:spoofax,代码行数:36,代码来源:LanguageSpecificationPrimitive.java
示例10: analyze
import org.metaborg.core.context.IContext; //导入依赖的package包/类
@Override public ISpoofaxAnalyzeResult analyze(ISpoofaxParseUnit input, IContext context, IProgress progress,
ICancel cancel) throws AnalysisException, InterruptedException {
cancel.throwIfCancelled();
if(!input.valid()) {
final String message = logger.format("Parse input for {} is invalid, cannot analyze", input.source());
throw new AnalysisException(context, message);
}
final ILanguageImpl language = context.language();
final ITermFactory termFactory = termFactoryService.getGeneric();
final FacetContribution<AnalysisFacet> facetContribution = language.facetContribution(AnalysisFacet.class);
if(facetContribution == null) {
logger.debug("No analysis required for {}", language);
final ISpoofaxAnalyzeUnit emptyUnit = unitService.emptyAnalyzeUnit(input, context);
return new SpoofaxAnalyzeResult(emptyUnit, context);
}
final AnalysisFacet facet = facetContribution.facet;
cancel.throwIfCancelled();
final HybridInterpreter runtime;
try {
runtime = runtimeService.runtime(facetContribution.contributor, context, true);
} catch(MetaborgException e) {
throw new AnalysisException(context, "Failed to get Stratego runtime", e);
}
cancel.throwIfCancelled();
final ISpoofaxAnalyzeUnit result = analyze(input, context, runtime, facet.strategyName, termFactory);
return new SpoofaxAnalyzeResult(result, context);
}
开发者ID:metaborg,项目名称:spoofax,代码行数:33,代码来源:StrategoAnalyzer.java
示例11: transform
import org.metaborg.core.context.IContext; //导入依赖的package包/类
@Override public Collection<TP> transform(P input, IContext context, ITransformGoal goal, ITransformConfig config)
throws TransformException {
if(!input.valid()) {
throw new TransformException("Cannot transform parse unit " + input + ", it is not valid");
}
final Iterable<TransformActionContrib> actions = actionService.actionContributions(context.language(), goal);
final Collection<TP> results = Lists.newArrayList();
for(TransformActionContrib action : actions) {
checkAnalyzed(action);
final TP result = transformer.transform(input, context, action, config);
results.add(result);
}
return results;
}
开发者ID:metaborg,项目名称:spoofax,代码行数:16,代码来源:TransformService.java
示例12: transformAllParsed
import org.metaborg.core.context.IContext; //导入依赖的package包/类
@Override public Collection<TP> transformAllParsed(Iterable<P> inputs, IContext context, ITransformGoal goal,
ITransformConfig config) throws TransformException {
final Iterable<TransformActionContrib> actions = actionService.actionContributions(context.language(), goal);
final Collection<TP> results = Lists.newArrayList();
for(TransformActionContrib action : actions) {
checkAnalyzed(action);
final Collection<TP> result = transformer.transformAllParsed(inputs, context, action, config);
results.addAll(result);
}
return results;
}
开发者ID:metaborg,项目名称:spoofax,代码行数:12,代码来源:TransformService.java
示例13: transformAllAnalyzed
import org.metaborg.core.context.IContext; //导入依赖的package包/类
@Override public Collection<TA> transformAllAnalyzed(Iterable<A> inputs, IContext context, ITransformGoal goal,
ITransformConfig config) throws TransformException {
final Iterable<TransformActionContrib> actions = actionService.actionContributions(context.language(), goal);
final Collection<TA> results = Lists.newArrayList();
for(TransformActionContrib action : actions) {
final Collection<TA> result = transformer.transformAllAnalyzed(inputs, context, action, config);
results.addAll(result);
}
return results;
}
开发者ID:metaborg,项目名称:spoofax,代码行数:11,代码来源:TransformService.java
示例14: analyze
import org.metaborg.core.context.IContext; //导入依赖的package包/类
@Override public IAnalyzeResult<A, AU> analyze(P input, IContext context, IProgress progress, ICancel cancel)
throws AnalysisException, InterruptedException {
final ILanguageImpl langImpl = context.language();
final AnalyzerFacet<P, A, AU> facet = facet(langImpl);
if(facet == null) {
final String message = logger.format("Cannot get an analyzer for {}", langImpl);
throw new AnalysisException(context, message);
}
final IAnalyzer<P, A, AU> analyzer = facet.analyzer;
return analyzer.analyze(input, context, progress, cancel);
}
开发者ID:metaborg,项目名称:spoofax,代码行数:13,代码来源:AnalysisService.java
示例15: analyzeAll
import org.metaborg.core.context.IContext; //导入依赖的package包/类
@Override public IAnalyzeResults<A, AU> analyzeAll(Iterable<P> inputs, IContext context, IProgress progress,
ICancel cancel) throws AnalysisException, InterruptedException {
final ILanguageImpl langImpl = context.language();
final AnalyzerFacet<P, A, AU> facet = facet(langImpl);
if(facet == null) {
final String message = logger.format("Cannot get an analyzer for {}", langImpl);
throw new AnalysisException(context, message);
}
final IAnalyzer<P, A, AU> analyzer = facet.analyzer;
return analyzer.analyzeAll(inputs, context, progress, cancel);
}
开发者ID:metaborg,项目名称:spoofax,代码行数:13,代码来源:AnalysisService.java
示例16: analyzeAll
import org.metaborg.core.context.IContext; //导入依赖的package包/类
@Override public ISpoofaxAnalyzeResults analyzeAll(Iterable<ISpoofaxParseUnit> inputs, IContext context,
IProgress progress, ICancel cancel) throws AnalysisException, InterruptedException {
cancel.throwIfCancelled();
final ILanguageImpl language = context.language();
final ITermFactory termFactory = termFactoryService.getGeneric();
final FacetContribution<AnalysisFacet> facetContribution = language.facetContribution(AnalysisFacet.class);
if(facetContribution == null) {
logger.debug("No analysis required for {}", language);
return new SpoofaxAnalyzeResults(context);
}
final AnalysisFacet facet = facetContribution.facet;
cancel.throwIfCancelled();
final HybridInterpreter runtime;
try {
runtime = runtimeService.runtime(facetContribution.contributor, context, true);
} catch(MetaborgException e) {
throw new AnalysisException(context, "Failed to get Stratego runtime", e);
}
final int size = Iterables.size(inputs);
progress.setWorkRemaining(size);
final Collection<ISpoofaxAnalyzeUnit> results = Lists.newArrayListWithCapacity(size);
for(ISpoofaxParseUnit input : inputs) {
cancel.throwIfCancelled();
if(!input.valid()) {
logger.warn("Parse input for {} is invalid, cannot analyze", input.source());
// TODO: throw exception instead?
progress.work(1);
continue;
}
final ISpoofaxAnalyzeUnit result = analyze(input, context, runtime, facet.strategyName, termFactory);
results.add(result);
progress.work(1);
}
return new SpoofaxAnalyzeResults(results, context);
}
开发者ID:metaborg,项目名称:spoofax,代码行数:40,代码来源:StrategoAnalyzer.java
示例17: transform
import org.metaborg.core.context.IContext; //导入依赖的package包/类
@Override public ISpoofaxTransformUnit<ISpoofaxAnalyzeUnit> transform(ISpoofaxAnalyzeUnit input, IContext context,
TransformActionContrib action, ITransformConfig config) throws TransformException {
if(!input.valid()) {
throw new TransformException("Cannot transform analyze unit " + input + ", it is not valid");
}
if(!input.hasAst()) {
throw new TransformException("Cannot transform analyze unit " + input + ", it has no AST");
}
return transform(input, context, action, input.source(), input.ast(), config);
}
开发者ID:metaborg,项目名称:spoofax,代码行数:11,代码来源:StrategoTransformer.java
示例18: transformAllParsed
import org.metaborg.core.context.IContext; //导入依赖的package包/类
@Override public Collection<ISpoofaxTransformUnit<ISpoofaxParseUnit>> transformAllParsed(
Iterable<ISpoofaxParseUnit> inputs, IContext context, TransformActionContrib action, ITransformConfig config)
throws TransformException {
final int size = Iterables.size(inputs);
final Collection<ISpoofaxTransformUnit<ISpoofaxParseUnit>> transformUnits =
Lists.newArrayListWithCapacity(size);
for(ISpoofaxParseUnit input : inputs) {
transformUnits.add(transform(input, context, action, input.source(), input.ast(), config));
}
return transformUnits;
}
开发者ID:metaborg,项目名称:spoofax,代码行数:12,代码来源:StrategoTransformer.java
示例19: transformUnit
import org.metaborg.core.context.IContext; //导入依赖的package包/类
@Override public <I extends IUnit> ISpoofaxTransformUnit<I> transformUnit(I input, TransformContrib contrib,
IContext context, TransformActionContrib action) {
if(!(input instanceof UnitWrapper)) {
throw new MetaborgRuntimeException(
"Input unit is not a SpoofaxUnitWrapper, cannot create a transform unit");
}
final UnitWrapper wrapper = (UnitWrapper) input;
final TransformUnit<I> analyzeUnit = new TransformUnit<>(wrapper.unit, contrib, input, context, action);
return analyzeUnit;
}
开发者ID:metaborg,项目名称:spoofax,代码行数:11,代码来源:UnitService.java
示例20: TransformUnit
import org.metaborg.core.context.IContext; //导入依赖的package包/类
public TransformUnit(Unit unit, TransformContrib contrib, I inputUnit, IContext context,
TransformActionContrib action) {
super(unit);
this.contrib = contrib;
this.inputUnit = inputUnit;
this.context = context;
this.action = action;
}
开发者ID:metaborg,项目名称:spoofax,代码行数:9,代码来源:TransformUnit.java
注:本文中的org.metaborg.core.context.IContext类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论