问题标签 [xbase]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
xtext - 在 XbaseCompiler 中导入自定义类
我正在使用 XBase 编写 DSL,并且添加了一个新的解析器规则,该规则XExpression
在语法中返回一个:
并将适当的函数添加到XbaseTypeComputer
子类:
现在我正在尝试将方法添加到 XbaseCompiler 子类:
FileDataset
我的语言 API 中的自定义类在哪里。如何让这个类出现在生成文件顶部的导入中?
目前,当我用我的语言(在运行时 Eclipse 中)创建一个新文件时,生成的 Java 文件包含FileDataset
变量声明,但它下面有一条红色波浪线和错误“FileDataset 无法解析为一种类型”
java - 可以在 xBaseJ 中使用 IDX 索引吗
我有带有 IDX 索引文件的 DBF。看起来 xbase 本身可以处理它们,但看起来还没有在 xbasej 中为它编写一个类。有没有人在 xbasej 中使用过 IDX 文件,或者可以做到吗?
参考xbase: http ://www.clicketyclick.dk/databases/xbase/format/idx_comp.html
java - 在 ScopeProvider 中调用引用的对象时出现错误“检测到循环链接”
我目前正在为我的 Xtext dsl 实现交叉引用。一个 dsl 文件可以包含多个 XImportSection,在某些特殊情况下,一个 XImportSection 不一定包含所有导入语句。这意味着我需要自定义“XImportSectionNamespaceScopeProvider”来查找/构建正确的 XimportSection。在实施过程中,我发现了编辑器的意外行为和/或一些验证。
我使用以下 dsl 代码来测试我的实现:
dsl源代码由以下语法规则描述(不完整!):
为了提供更好的工具支持,aModifiesUnit
引用了被修改的类。这个 Xtext 特定的实现支持到类的超链接。
我目前正在开发定制的 XImportSectionScopeProvider,它为ModifiesUnit
. 默认实现包含一个方法protected List<ImportNormalizer> internalGetImportedNamespaceResolvers(EObject context, boolean ignoreCase)
,假设源文件中只有一个类元素。但是对于我的语言来说,可能不止一种。出于这个原因,我必须自定义它。
我现在的想法是以下实现(使用 Xtend 编程语言):
在我开始这项工作之前,参考工作正常,没有发生任何意外。我现在的目标是构建一个定制的 XImportSection,ModifiesUnit
Xbase 使用它来解析对 JVM 类型的引用。为此,我需要引用的 XImportSection 的副本ClassOrInterface
。要访问 XImportSection,我首先调用ModifiesUnit.getUnit()
. 执行此调用后,编辑器立即显示意外行为。导致错误的最小实现如下所示:
在这里,我不知道内部发生了什么!但它计算一个错误。编辑器在 (1) 处的限定名称上显示以下错误:“检测到循环链接:ModifiesUnit.unit->ModifiesUnit.unit”。
我的问题是:这是什么意思?为什么 Xtext 会显示此错误?如果我访问引用的对象,为什么会出现?
我还在那里发现了一件奇怪的事情:在我的第一种方法中,我的代码抛出了一个NullPointerException
. 好的,我试图通过打印 object 来找出原因ci
。结果是:
好吧,好像是这个方法执行了两次,Xtext解析了第一次和第二次执行之间的代理。只要收到的对象是正确的,对我来说就可以了。我用 if-instanceof 语句处理它。
但是为什么我在那里得到两个参考?它是否依赖于仅是 ClassDeclaration (2b) 的抽象超级规则的 ParserRule ClassOrInterface (2a)?但是为什么 Xtext 不能解析 ClassOrInterface 的引用呢?
lambda-calculus - 访问块和 Y 组合器内的外部变量
我希望你们一切都好。我正在 Harbor 中实现定点Y 组合器,但遇到了一些麻烦。嗯,Y 组合器可以通过lambda 演算定义为:
Y = (λh.λF.F(λ x.((h(h))(F))(x))) (λh.λF.F(λ x.((h(h))(F))(x)))
我正在尝试通过性能问题应用 Y-combinator 的记忆。我目前的实现是:
基本上,我不能在块内使用语句,但我可以使用表达式,它工作得很好。我正在避免无限递归和从 0 到无限的限制。
直到这个时候,它编译得很好,但是当我试图访问一个外部块的变量时,Harbor 把我踢到了脸上!
为了测试 Y 组合器的实现,我尝试应用斐波那契序列的简单实现,但是当我返回一个接收参数G
的块并隐式返回一个接收参数的块时,对我N
来说G
变得不可用并且编译器告诉我“外部代码块变量遥不可及”。
这也可以让我咖喱块。我的问题是:如何在 Harbour 中访问块内的外部变量?
abstract-syntax-tree - 以编程方式实例化 Xbase XExpressions
我正在开发一个使用部分 Xbase 语法的 Xtext 项目。在我的代码中,我正在分析 DSL 程序以生成一些 Java 代码。使用将现有XExpression
代码转换为 Java 代码很容易,XbaseCompiler
但这不是我需要的。相反,我需要生成一个不同的程序。
目前我只是生成Java 代码(即构造一个字符串)。我想做的是构建一个新的XExpression
,甚至可能使用原始的部分,然后将其编译为 Java。
不同XExpression
的 s 有零参数的构造函数,所以我尝试实例化一个,甚至设置一些属性。但是编译器崩溃了,我无法确定它缺少哪些属性。
oop - OOP - 可视对象:VO 是否支持 C#/Java 接口等接口(用于策略设计模式)?
我是一名 C#/Java 开发人员,在我的新工作中,我们有一个使用 Visual Objects 开发的遗留系统(VO,来自 Computer Associates——粗略模式:VO = OO-Clipper),我需要修复一些模块并实现这里有一些模式(即:策略模式)(VO 是一种面向对象的语言)。但是,我有 VO 2.5 参考手册,但我找不到任何对“接口类”的引用,就像我们在 C# 和 Java 上的那样:
VO参考手册说它支持多态和继承,但没有提到接口,泛型或其他。
我知道这种语言已经很老了,但是这个遗留系统仍然在生产中,并且有几个客户每天都在使用它。正在用 C# 开发一个新版本,但我们需要保留旧版本。
有谁知道VO是否支持接口,或者如果不支持,如何开发类似的东西(接口和实现这些接口的类)?
先感谢您。
java - Java 中需要 Clipper bin2i 和 i2bin
我正在将一个好的旧 Clipper xbase 程序转换/迁移到 Java。由于旧程序仍在运行,因此在将 Java 中的数据写入数据库时,我需要兼容。它工作得非常好,直到现在。
为此,我需要 Clipper 中的 i2bin 和 bin2i 函数在 Java 中运行。
有关 i2Bin,请参见此处:http: //www.marinas-gui.org/projects/harbour_manual/i2bin.htm
我可以通过以下方式读取剪裁器写入的 i2bin 数据:cData 是一个字符串,其中包含在第一个 char 之后编码为 char 的 int:
但我无法在 Java 中编写正确的 int 编码为 char。所以我得到了一个
我得到一个 '\b' 但只有一个字符。裁剪器函数 bin2i 无法正确解释它。如果我在字符上添加一个空格
我得到了 bin2i 的正确长度,但它不再是长度 8。也许它是通过 Ascii 32 编码的?
无论如何,我怎样才能做到正确?
问候,彼得
java - 从 Java 模型生成带有 XText 的 DSL 文件
我最近开始使用 XText。至此我已经能够定义一个简单的语法,完成JvmModelInferrer并生成对应的java类和.java文件。
是否可以从一组自定义 Java 类中自动生成 DSL 文件(考虑到其语法)?
让我举一个简单的例子。
我有以下语法:
如果我有以下sample.myDsl
我得到 Book.java 和 Author.java 文件。在我的项目中,我有一个处理器可以分析 java 文件并从中创建对象,所以如果我在以前的 Book.java 和 Author.java 上运行处理器,我会得到两个自定义实体 java 类型的实例。每个 Entity 实例都有一组 Property 实例。因此,Java 模型与 xtext 语法非常相似。
是否可以将这两个对象“提供”给 XText,或者定义一个推断器来指定翻译,并考虑到相同的 .xtext 语法文件,自动生成一个 .myDsl 文件?
autocomplete - Notepad++ 自定义语言调用提示自动完成
我正在尝试在 Notepad++ 中为Alaska XBase++语言设置 calltips 功能,但我无法让它工作。
我阅读了 Npp 的如何编辑配置文件,我制作了一种名为alaska的用户定义语言,并创建了alaska.xml文件并将其放入.\plugins\APIs中。
这是我尝试的 XML 代码:
我在代码中或代码之外有什么遗漏吗?除了将文件放入.\plugins\APIs之外,我是否必须以某种方式安装它?我还尝试在用户定义的语言窗口中将sample定义为关键字,而在 calltip (作为函数)中没有结果。
PS:我确保在Settings->Preferences中启用了自动完成选项(实际上它适用于内置语言),并且我将alaska设置为当前使用的语言(并且我得到了在样式配置中配置的示例格式)