我的语法中有以下类型:
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 443 ssl http2;
server_name localhost;
ssl_certificate ssl/localhost.crt;
ssl_certificate_key ssl/localhost.key;
location = /test.html {
root html;
http2_push /stylepush.css;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
我想在属性获取(新)值时读取xml文件,因为我使用该xml文件的内容进行验证和内容完成。根据属性的值,将要读取的xml将不同。
如何触发从运行时环境的DSL实例中读取类型属性值的操作?
答案 0 :(得分:1)
您可以尝试将EMF适配器添加到所有TestSuite实例,以便在将“类型”功能更改为特定值的通知时,将读取您所选择的XML文件并对其执行操作。
this blog post似乎可以解决这个问题:在链接阶段结束时,可以为TestSuite实例注册一个Adapter(这是EMF词汇表,基本上是一个Listener)。
然后在您的Adapter实现中,您可以过滤是否需要使用Notification等方法做出反应,例如getFeature()。
由于您提到要对内容完成和验证执行此操作,因此您可能需要在Xtext的范围/验证阶段执行所有这些操作。如果你的IDE需要查找和解析你的XML文件,你可能会在按下ctrl + space以进行自动完成时遇到一些“滞后”,但我想这是......