- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 xtext 语法,我计划在应用程序中使用它。但是,当我检查生成的类时,某些项目丢失了。
语法如下:
grammar org.xtext.example.mydsl.MyDsl with org.eclipse.xtext.common.Terminals
generate myDsl "http://www.xtext.org/example/mydsl/MyDsl"
Model:
model += ModelBlock+
;
ModelBlock:
SystemBlock | DataSetBlock | RelationshipBlock
;
SystemBlock:
'Systems' systemGroup=ID
systems+=System+
;
DataSetBlock:
'DataSets' datasetGroup=ID
datasets+=DataSet+
;
RelationshipBlock:
'Relationships' relationshipGroup=ID
relationships+=Relationship+
;
System:
name = ID ':'
'name:' nm = STRING
('description:' description = STRING)?
;
DataSet:
name = ID ':'
'name:' nm = STRING
;
Function:
name = ID ':'
'name:' nm = STRING
;
Relationship:
SystemCONNECTSSystem |
SystemCONSUMESDataSet |
SystemPRODUCESDataSet
;
SystemCONNECTSSystem:
rel=ID
':' lhs = [System]
'CONNECTS' rhs = [System]
;
SystemCONSUMESDataSet:
rel=ID ':' lhs = [System] 'CONSUMES' rhs = [DataSet]
('WITH' 'frequency:' frequency = INT)?
;
SystemPRODUCESDataSet:
rel=ID ':' lhs = [System] 'PRODUCES' rhs = [DataSet]
('WITH' 'frequency:' frequency = INT
('risk:' risk = RiskEnum)?
)?
;
enum RiskEnum:
h="high" | m="med" | l="low"
;
您会注意到类 SystemCONNECTSSystem、SystemPRODUCESDataSet 和 SystemCONSUMESDataSet 不生成属性 lhs,而是生成属性 rhs。参见下面的SystemPRODCUESDataSet,其他人也有同样的问题。
/**
*/
package org.xtext.example.mydsl.myDsl;
/**
* <!-- begin-user-doc -->
* A representation of the model object '<em><b>System PRODUCES Data Set</b></em>'.
* <!-- end-user-doc -->
*
* <p>
* The following features are supported:
* </p>
* <ul>
* <li>{@link org.xtext.example.mydsl.myDsl.SystemPRODUCESDataSet#getRhs <em>Rhs</em>}</li>
* <li>{@link org.xtext.example.mydsl.myDsl.SystemPRODUCESDataSet#getFrequency <em>Frequency</em>}</li>
* <li>{@link org.xtext.example.mydsl.myDsl.SystemPRODUCESDataSet#getRisk <em>Risk</em>}</li>
* </ul>
*
* @see org.xtext.example.mydsl.myDsl.MyDslPackage#getSystemPRODUCESDataSet()
* @model
* @generated
*/
public interface SystemPRODUCESDataSet extends Relationship
{
/**
* Returns the value of the '<em><b>Rhs</b></em>' reference.
* <!-- begin-user-doc -->
* <p>
* If the meaning of the '<em>Rhs</em>' reference isn't clear,
* there really should be more of a description here...
* </p>
* <!-- end-user-doc -->
* @return the value of the '<em>Rhs</em>' reference.
* @see #setRhs(DataSet)
* @see org.xtext.example.mydsl.myDsl.MyDslPackage#getSystemPRODUCESDataSet_Rhs()
* @model
* @generated
*/
DataSet getRhs();
/**
* Sets the value of the '{@link org.xtext.example.mydsl.myDsl.SystemPRODUCESDataSet#getRhs <em>Rhs</em>}' reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param value the new value of the '<em>Rhs</em>' reference.
* @see #getRhs()
* @generated
*/
void setRhs(DataSet value);
/**
* Returns the value of the '<em><b>Frequency</b></em>' attribute.
* <!-- begin-user-doc -->
* <p>
* If the meaning of the '<em>Frequency</em>' attribute isn't clear,
* there really should be more of a description here...
* </p>
* <!-- end-user-doc -->
* @return the value of the '<em>Frequency</em>' attribute.
* @see #setFrequency(int)
* @see org.xtext.example.mydsl.myDsl.MyDslPackage#getSystemPRODUCESDataSet_Frequency()
* @model
* @generated
*/
int getFrequency();
/**
* Sets the value of the '{@link org.xtext.example.mydsl.myDsl.SystemPRODUCESDataSet#getFrequency <em>Frequency</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param value the new value of the '<em>Frequency</em>' attribute.
* @see #getFrequency()
* @generated
*/
void setFrequency(int value);
/**
* Returns the value of the '<em><b>Risk</b></em>' attribute.
* The literals are from the enumeration {@link org.xtext.example.mydsl.myDsl.RiskEnum}.
* <!-- begin-user-doc -->
* <p>
* If the meaning of the '<em>Risk</em>' attribute isn't clear,
* there really should be more of a description here...
* </p>
* <!-- end-user-doc -->
* @return the value of the '<em>Risk</em>' attribute.
* @see org.xtext.example.mydsl.myDsl.RiskEnum
* @see #setRisk(RiskEnum)
* @see org.xtext.example.mydsl.myDsl.MyDslPackage#getSystemPRODUCESDataSet_Risk()
* @model
* @generated
*/
RiskEnum getRisk();
/**
* Sets the value of the '{@link org.xtext.example.mydsl.myDsl.SystemPRODUCESDataSet#getRisk <em>Risk</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param value the new value of the '<em>Risk</em>' attribute.
* @see org.xtext.example.mydsl.myDsl.RiskEnum
* @see #getRisk()
* @generated
*/
void setRisk(RiskEnum value);
} // SystemPRODUCESDataSet
有人能解释一下这里发生了什么吗?
最佳答案
属性LHS
在SystemPRODUCESDataSet
及其 friend 的父类(super class)型上可用。 Relationship
应该为其公开一个 getter。这是因为 Relationship
的所有子类型都具有共同的 LHS,因此它会自动拉入父类(super class)型。
关于java - Xtext 没有从我的 dsl 生成完整的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33828914/
如何在 xtext 中更改生成包的默认位置? 例如:src-gen包和xtend-gen。 在这些包中生成了各种子包。那么如何更改默认生成位置。 最佳答案 如何修改src-gen位置 打开Genera
我的 Xtext 语法中有一个终端列表,我如何测试它们是否工作并且没有 token 冲突? 例如以下终端: terminal COMMA: ','; terminal QUESTION: '?'; t
我尝试为配置文件编写 Xtext BNF(以 .ini 为扩展名) 例如,我想成功解析 [Section1] a = Easy123 b = This *is* valid too [Section_
我通过 Xtext 创建了一个 DSL,现在我需要将编辑器中创建的模型转换为另一个模型。我想最直接的方法是使用某种 M2M 转换框架,但我需要访问文本文件背后的模型。 问题:如何获得对模型的引用? 最
我正在研究使用 xtext 开发的 DSL。我正在使用 orion 编辑器使用自动完成功能。它与自动生成的网页编辑器配合得很好。但是,我们想将它与另一个使用 Angular 4 开发的 Web 应用程
所有这些以 X 开头的基于 Eclipse 的技术(Xtext、Xtend)的特点、区别和相似之处是什么?还有更多要了解的吗? 最佳答案 Xtext 是一个用于开发编程语言和领域特定语言的文本建模框架
同时尝试 mavenize Eclipse plugin for LESS遇到问题 #210 在 #208 中添加了提交 https://github.com/PaulVI/ow/commit/7c9
构建一个解析文件的独立程序,我使用了第一个选项 http://www.davehofmann.de/?p=101 定义了一个验证,如果文本不是以大写字母开头,则会给出错误(eclipse 中的红色下划
Xtext 文档,例如这里:http://www.eclipse.org/Xtext/documentation.html#syntax似乎只是通过举一个“悬空其他问题”的例子来解释句法谓词。我对此的
我使用 Eclipse 的 Xtext 插件来定义我的语言并从中生成一些文件。 该项目很大,除了插件生成的默认生成器之外,我想使用多个生成器来生成我的文件。 我试过这个解决方案http://www.e
我一直在为我们内部使用的语言开发基于 Xtext 的 Eclipse 插件。这种语言可能有以下形式的声明: run : /some/file/path/foo.txt ...最终我想提供一个自定义位置
我正在尝试编写一个 xtext 规则,我可以在其中以不同的随机顺序编写语句,但所有语句都必须保存为一个列表。 我试过: Root: ( (entity += Entity)? & (componen
我正在尝试编写一个 xtext 规则,我可以在其中以不同的随机顺序编写语句,但所有语句都必须保存为一个列表。 我试过: Root: ( (entity += Entity)? & (componen
我想重用语法定义。 我有这样的语法: Person: 'contact' name=ID '{' 'phone' phone=INT '}' ; 我想要另一个这样的语法: includ
我有一个使用 Xtext 编写的 DSL。我想要的是执行那个 DSL 来执行一些好的事情。 我在 xtend 中编写了实现接口(interface) IGenerator 的 myDslGenerat
我目前正在开发一种通用的基于代理的编程语言(它的语法会受到 Java 的启发,我们也在这种语言中使用对象)。 自项目开始以来,我们对使用 ANTLR 的事实持怀疑态度。或 Xtext .那时我们发现
我在 xtext 交叉引用方面遇到了一些问题这是一个非常简单的语法: grammar org.xtext.example.mydsl1.Test with org.eclipse.xtext.comm
我正在尝试修改 Xtext 域模型示例,以便实体属性可以有两个以上的属性(除了已经包含在示例中的“许多”之外)。所有属性都必须是可选的,并且它们的顺序无关紧要。看来,无论我做什么,第一个属性都必须是第
我正在使用xtext 2.4并且想要同时支持map和set,我的语法如下 ::- ::- | ::- '{' ( ':' (',' ':' )*)? '}' ::- '{' ( (
我需要验证 Xtext 项目中特定文件的存在。该文件具有与验证对象类似的路径,但具有其他根目录,例如: $projPath/src/dir1/dir2/ValidatedFile.src $projP
我是一名优秀的程序员,十分优秀!