在Rascal中使用外语API?

问题描述 投票:2回答:1

有没有办法在Rascal中调用外语API?特别是,我一直在考虑具有Java API的Stanford Core NLP

stanford-nlp rascal
1个回答
2
投票

Rascal拥有出色的Java API。本质上,外部函数被定义为以关键字java为前缀的普通Rascal函数和定义实现函数的类的属性javaClass

sizes上的List函数为例。在Rascal的List模块中,size定义如下:

@javaClass{org.rascalmpl.library.Prelude}
public java int size(list[&T] lst);

在java类org.rascalmpl.library.Prelude中,方法size实现如下:

public IValue size(IList lst)
{
   return values.integer(lst.length());
}

请注意,所有Rascal值都实现为(不可变)IValues,并且某些封送是不可避免的。

最后的注意事项:与NLP库的接口非常有趣(并且实际上在我们的列表中),但要注意保留Rascal的不可变数据精神和主要功能解决方案。在为这样的库设计Rascal API时必须考虑到这一点。

© www.soinside.com 2019 - 2024. All rights reserved.