日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

本文介紹了XText語法變量定義/引用的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

[any type]Realisation語法規則初始化應該是一個值或對預定義變量的引用。
對于Integer,它看起來與您從Java中知道的類似:

public int i = 3;

為什么以下語法引發異常?

Integer returns ecore::ELong:
  (Plus|Minus)? INT;

IntegerRealisation:
  {Integer} Integer | 
  ref=[Integer];

異常:

Caused by: java.io.IOException: Generated EMF Model incomplete: The context 'IntegerRealisation' is not valid for type 'Integer'
Recommended contexts for type 'Integer': 
Other valid contexts for type 'Integer': .... The context 'IntegerRealisation' is valid for types: Integer, IntegerRealisation

為什么同一錯誤的第一行和最后一行彼此不一致?

這里出了什么問題?

推薦答案

您嘗試引用的是整型文字,而不是任何其他整型變量。實施某事。如

public int i = 5; // 5 is a value
public int j = i; // i reference to a predefined variable

您的語法定義應如下所示

VariableDeclaration:
    modifiers+=Modifier* type=Type name=ID ('=' value=VariableValue)? ';';

VariableValue:
    TypedLiteral | VariableReference;

TypedLiteral:
    IntegerLiteral | ...;

IntegerLiteral:
    value=INTVAL;

terminal INTVAL returns ecore::ELong:
    (Plus|Minus)? INT;

VariableReference:
    ref=[VariableDeclaration|QualifiedName];

如您所見,它從定義變量的a規則開始。該變量有一個name屬性,這對于后面的參考實現非常重要。實際值分配是可選的(因為我會這樣做!)在這一點上,重要的是抽象規則VariableValue,它將對文字(也稱為.常量值)或對任何其他變量的引用。

如果要引用任何預定義變量,您將使用其他變量名稱,但不是其值。因此,我們還需要VariableReference,它定義我們通過(限定)名稱(在管道操作符|之后)引用任何其他變量(在管道操作符之前)。

為確保類型安全,您必須實現yourdsl.validation.YourDslValidator類以檢查文本是否與類型兼容,以及引用的變量的類型是否與類型兼容。

編輯:我稍微優化了語法。第一個版本有點不清楚。

回答您的其他問題:

變量值的返回類型是什么?

VariableValue本身是所有可能值的公共(但抽象)返回類型。它類似于java.lang.Numberjava.lang.Integerjava.lang.Double、…

的超類型

這里的問題是單詞type本身在這里是不明確的。值的類型將是int(IntegerLiteral extends TypedLiteral extends VariableValue),但AST節點的類型是IntegerLiteralVariableReference

要確定VariableReference的值類型,必須查看引用的VariableDeclaration(((VariableReference)vd1.getValue()).getRef().getValue())的value屬性。永遠不會有EString值類型!

若要為VariableDeclaration.value屬性設置值,您需要IntegerLiteral(最顯式的TypeWrital)或VariableReference

這篇關于XText語法變量定義/引用的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,

分享到:
標簽:XText 變量 定義 引用 語法
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定