xtext 自定义作用域:函数参数

2024-02-21

我正在尝试自定义作用域,这样,如果我的语言中有类似函数的东西可以获取参数,我希望这些参数仅在出现分号之前才可见,而在这个范围之外,我希望它不可见。

我尝试在文件 MyDslScopeProvider.xtend 中重新定义方法 getScope()

在 getScope 中我做了这样的事情:

 if (EclassName=="TypedParam" && EFeatureName=="type" && contextType == "TypedParam"){
        return Scopes.scopeFor(Collections.singleton(context),IScope.NULLSCOPE)
    }

这显然不起作用(它无法识别参数)。我该怎么做?

另外,我还有一个问题: 我尝试实现如下方法:

def IScope scope_<EClass name>_<EFeature name>(<context type> context, EReference)

尽管我打印了名称并且确保我写的名称正确,但这些方法根本没有被调用。 (我复制了以下代码打印的内容)

class DomainmodelScopeProvider extends AbstractDomainmodelScopeProvider {
    override def IScope getScope(EObject context, EReference reference)
    {

        System.out.println("scope_" + reference.getEContainingClass().getName()
             + "_" + reference.getName()
             + "(" + context.eClass().getName() + ", ..)"
        );

        return super.getScope(context,reference);                   
    }

我究竟做错了什么?

谢谢!!!


问题是 Xtext 2.9+AbstractDeclarativeScopeProvider不再是默认的超类YourdslScopeProvider。您应该覆盖getScope(EObject context, EReference ref)并在那里执行 if else 操作。或者您手动更改超类。顺便说一句,你可以使用常量YourdslPackage.Literals而不是使用手动字符串常量。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

xtext 自定义作用域:函数参数 的相关文章

  • 访问 java jigsaw 模块中的资源文件[重复]

    这个问题在这里已经有答案了 我正在尝试从项目中的类访问 Eclipse 项目中的文件 我需要将该项目声明为 jigsaw 模块才能从其他项目访问它 但是通过这样做 我无法再访问项目中的 example png 等文件 这是我的项目结构 pr
  • 使用 EntityFramework 使用空参数值调用存储过程

    我在 sqlserver 2008 上有一个存储过程 其中一个参数接受空值 我不知道如何使用参数上的空值来调用该 SP 为了获得更多上下文 我正在使用 EntityFramework 6xx 在下一个示例中 参数 status Compat
  • 在同一项目上使用 Eclipse 和 NetBeans

    Eclipse 是一个非常棒的编辑器 我更喜欢使用它 但是缺少 Eclipse 的 GUI 设计工具 另一方面 NetBeans 非常适合 GUI 设计 在同一项目中使用 NetBeans 进行 GUI 设计和 Eclipse 进行其他所有
  • 在 Eclipse Testrunner 中使用名称的 ParameterizedTest

    当您使用 Eclipse TestRunner 运行 JUnit 4 ParameterizedTest 时 图形表示相当愚蠢 对于每个测试 您都有一个名为 0 1 ETC 是否可以进行测试 0 1 等显式名称 实施一个toString测试
  • 如何在 Spring Boot 中创建 Apache POI Excel 视图配置

    当我想使用 Spring Boot Web 将数据导出到 Excel 时遇到问题 我使用 Thymeleaf 作为模板引擎 由 Spring Boot 自动配置 但是当我在附加配置中添加 XmlViewResolver 时 由 XmlVie
  • Eclipse,在哪里更改当前调试行背景?

    任何人都可以向我指出具有以下设置的首选项页面DEBUG当前行背景颜色 我已经将几乎所有颜色更改为深色 但在调试时仍然对这个几乎白色的当前行指示器感到恼火 请注意 编辑模式下的当前行指示是可以的 好吧 现在我自己找到了它 通过主要的逆向工程
  • JUnit Eclipse 显示 System.out.print() 的

    我正在使用 JUnit 3 和 Eclipse 3 4 当我运行 JUnit 测试用例时 一切正常并且测试完美完成 唯一的事情是我想查看我正在运行的类的输出 所有类都具有一些输出值的基本 System out print 因此 当我运行测试
  • Maven 多模块项目结构问题

    自从过去几周构建我的 Maven 多模块项目以来 这是我的一次有趣的经历 当我决定使用 Maven 进行构建生命周期管理时 我有几个原因希望选择 Maven A 大多数开发团队都是分开的 这样每个团队都可以在项目中的单独模块上工作 例如团队
  • 如何在 Scala 中编写 Pig UDF

    我正在尝试在 Scala 中编写 Pig UDF 使用 Eclipse 我已将 pig jar 添加为 java 构建路径中的库 这似乎解决了以下 2 个导入问题 导入 org apache pig EvalFunc 导入 org apac
  • Gradle 1.3:build.gradle 不构建类

    这里有一个新问题 我有一个 build gradle 文件apply plugin java在其中 并与 java 项目 包关联 当我跑步时gradle build从命令行我得到 compileJava UP TO DATE process
  • 如何为新的 eclipse (neon) java 项目初始化 git

    我安装了 eclipse Neon 的新副本 并在一个新的闪亮工作区中创建了一个新的 gradle java 项目 将 git 添加到聚会中的最佳实践是什么 我读到在项目目录中初始化 git 是真是个坏主意 https stackoverf
  • Egit 无法检测到本机 Git 的安装路径“gitPrefix”

    如何解决这个问题 警告 EGit 无法检测到本机 Git 的安装路径 gitPrefix 因此 Egit 无法尊重系统级别 Git 设置可以在本机 Git 安装目录下的 gitPrefix etc gitconfig 中配置 正如我在 eg
  • 创建新的 Eclipse 插件项目时何时选择“生成激活器...”

    有很多 Eclipse RCP 教程都从明显的第一步开始 创建一个新的插件项目 看来大约 其中 70 指定检查 生成一个激活器 一个控制插件生命周期的Java类 其他人特别说不要检查该切换 替代文本http img179 imageshac
  • 如何在 Java/Eclipse 中使用特殊字符

    如何在 Java Eclipse 中使用 显示 或 等字符 当我尝试直接使用它们时 例如在源代码中 Eclipse无法保存文件 我能做些什么 编辑 如何找到 unicode 转义序列 问题是您使用的字符无法以文件设置的编码 Cp1252 表
  • 向控制器发送参数

    我懂了
  • 透视切换面板在 Eclipse 中消失

    Eclipse 崩溃后 小透视切换窗格从 Eclipse 窗口的右上角消失了 我下载了最新版本并尝试打开它 使用相同的工作区 但按钮仍然消失 这是一个屏幕截图 并放大 有任何想法吗 我仍然可以通过选择 窗口 gt 打开透视图 来切换透视图
  • 将项目移动到 Eclipse 中的另一个文件夹

    我通常将工作项目放在桌面上的文件夹中 当它们完成后 我只是将它们移动到c dev 问题是我正在以一种相当古老的方式做这件事 1 move project files 2 delete project on Eclipse 3 create
  • 在 Eclipse 中的调试会话期间记录所有跟踪信息

    我想记录调试会话的每个步骤的所有调试信息 以便稍后处理所有这些数据 例如调用的方法的名称 参数值 所有变量值等 有没有任何选项可以实现此目的 我应该在哪里更改代码才能实现此目的 一件重要的事情 它不是一个 java 程序 这是一个使用 ac
  • Map:为 Integer 和 Double 类型定义方法,但不为 String 类型定义方法

    我正在尝试定义一个方法putIfGreaterThan 为了我的新Map class 给定一个键 仅当新值大于旧值时 它才会用新值替换旧值 我知道我可以通过组合来实现这一点 通过有一个private final Map
  • 预期的 ProductField,出现数组问题

    我有一个 Rails 4 应用程序 它有一个如下所示的 params 块 def store params params require store permit name description user id products attr

随机推荐

  • 用于使用 webdriver 查找 webelement 的多个定位器

    我正在使用 Selenium WebdriverQAF https github com qmetry qaf 我面临的问题与在网页上查找元素有关 对于少数元素 不同的定位器在不同的时间工作 例如 有时 name nameA 有效 有时 n
  • 如何修改并重新发布 AOSP 应用程序?

    我对 Android 电子邮件应用程序中缺少的一个简单功能感到恼火 由于此应用程序发布为开源 https github com android platform packages apps email我可以很容易地解决这个问题 问题 如何发
  • 解析“querystring”格式数据的最简单方法

    使用以下代码 string q userID 16555 gameID 60 score 4542 122 time 343114 解析这些值的最简单方法是什么 最好不编写自己的解析器 我正在寻找具有相同功能的东西Request query
  • 后台工作者 CancelAsync() 不起作用

    我正在尝试取消我的后台工作人员WorkerClass bw CancelAsync 但这根本行不通 编辑 我在这里发布了完整的代码 希望这会有所帮助 好的 我添加了一些消息框来了解工作人员是否仍然忙碌 并且有线的事情是 我得到一个false
  • 在 ElasticSearch Nest 客户端中创建自定义分析器

    我对使用 Nest 客户端的 Elasticsearch 非常陌生 我正在使用自定义分析器创建索引 但是在使用分析进行测试时 它似乎没有使用自定义分析器 主要是没有出现edgengram标记 我是否缺少任何东西可以使我的自定义分析器成为索引
  • Python从列表中删除项目[重复]

    这个问题在这里已经有答案了 我有一个给定格式的列表 John Smith Linus Torvalds Bart Simpson 列表 Linus Torvalds 中有一些这样的元素 我想删除它们 那么为什么下面的代码不删除它们呢 for
  • 在站点之间传递凭据

    我在具有两个不同域的两台不同服务器上运行两个不同的站点 一个站点运行 Joomla 另一个站点运行 Moodle 我已将 Moodle 服务器配置为基于 Joomla 站点上的用户表进行身份验证 因此我们拥有权威的用户信息来源 我想做的是
  • Android - 如何解析 JSONObject 和 JSONArrays

    我的版本是 Android 2 2 Google API 8 我从模拟器运行 我正在尝试尝试访问此 JSON 对象中的位置 我使用后得到这个 InputStream instream entity getContent JSONObject
  • WIFI变化的广播动作

    在我的应用程序中 每当设备连接或断开 WIFI 网络时我都必须收到通知 为此我必须使用BroadcastReceiver但是在阅读了关于 SO 的不同文章和问题后 我有点困惑我应该为此使用哪种广播操作 在我看来 我有三个选择 SUPPLIC
  • Vaadin:小部件集未加载。

    我能够将 Vaadin 模块集成到我们基于 Spring 的应用程序中 集成后 我想运行甘特图的演示 它是 Vaadin 的附加组件 并在 github 上找到了它here https github com tltv gantt 文件夹内有
  • 类型“System.Data.Entity.DbContext”是在未引用的程序集中定义的。您必须添加对程序集“EntityFramework 2”的引用

    我有一种解决方案 一个项目是带有 edmx 数据模型的类库 另一个是asp net web 表单项目 当我开始解决方案时 出现以下异常 类型 System Data Entity DbContext 是在未引用的程序集中定义的 您必须添加对
  • Tailwind 自定义主题颜色不透明度未应用

    我正在研究一个Reactjs使用的项目顺风 CSS作为我的 CSS 框架 我正在尝试构建一个具有自定义颜色的主题 我将颜色定义为 CSS 变量index css文件 但设置 alpha 值对这些颜色不起作用 这是我的颜色值的 CSS lay
  • MongoDB - 清除嵌套数组中的项目

    如果我的模式中有一个嵌套数组 我如何告诉 MongoDB 删除其特定模型的条目 Schema var UserSchema new Schema username String documents Number 我尝试过这样的事情 db u
  • Xcode5:无法注册“/System/Library/CoreServices/CoreTypes.bundle/Contents/Library/MobileDevices.bundle

    我的库有一些类型转换器 我正在注册一些 OSX 和 iOS 类型转换器 如下所示 当我为 iOS 进行编译时 我收到一些与无法找到 UIKit 相关的错误 以下是我针对 iOS 进行编译的方法 xcodebuild destination
  • 将 ViewPager 与不带 actionBar 的选项卡一起使用

    我正在使用名为EffectiveNavigation 的谷歌示例来创建带有选项卡的ViewPager 问题是在清单中 对于我的主要活动 我设置了 android theme android style Theme Holo NoAction
  • 多个表的视图。需要删除 1 个表定义的“双打”

    好吧 这就是我所坚持的 Full size https i stack imgur com AEIjH png SELECT dbo InstellingGegevens INST SUBTYPE dbo InstellingGegeven
  • 如何绘制这些数据?

    我有一个值数组theta and phi 如何轻松创建 MATLAB 绘图 其中theta and phi是这样的球坐标 如果我有一个数组 如何在 MATLAB 中绘制值theta and phi半径保持不变 这些是theta theta
  • pandas 时间戳与日期时间的性能较慢

    我似乎遇到了 pandas Timestamp 与 python 常规 datetime 对象的算术运算性能出乎意料的缓慢 这是一个基准测试 演示了 import datetime import pandas import numpy us
  • 找不到模块:无法解析“swiper/react”

    我在使用最新版本的 Swiper 时也遇到了同样的问题 它在我之前的项目中有效 但现在不起作用 连那个版本都没有 最新版本也试过了 这是我的代码 Import Swiper React components import Swiper Sw
  • xtext 自定义作用域:函数参数

    我正在尝试自定义作用域 这样 如果我的语言中有类似函数的东西可以获取参数 我希望这些参数仅在出现分号之前才可见 而在这个范围之外 我希望它不可见 我尝试在文件 MyDslScopeProvider xtend 中重新定义方法 getScop