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

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

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

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

問題描述

[any type]Realisation語法規(guī)則初始化應(yīng)該是一個值或?qū)︻A定義變量的引用。
對于Integer,它看起來與您從Java中知道的類似:

public int i = 3;

為什么以下語法引發(fā)異常?

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

您的語法定義應(yīng)如下所示

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規(guī)則開始。該變量有一個name屬性,這對于后面的參考實現(xiàn)非常重要。實際值分配是可選的(因為我會這樣做!)在這一點上,重要的是抽象規(guī)則VariableValue,它將對文字(也稱為.常量值)或?qū)θ魏纹渌兞康囊谩?/p>

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

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

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

回答您的其他問題:

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

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

的超類型

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

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

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

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

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

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

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

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

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

運動步數(shù)有氧達人2018-06-03

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

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

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

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