blob: 2403f913b8ba99fac1a938a6a13cf10e777a1fca [file] [log] [blame]
<html>
<head>
<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
<meta name=Generator content="Microsoft Word 10 (filtered)">
<title>language Emfatic;</title>
<style>
<!--
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0cm;
margin-bottom:.0001pt;
font-size:12.0pt;
font-family:"Times New Roman";}
@page Section1
{size:612.0pt 792.0pt;
margin:70.85pt 70.85pt 2.0cm 70.85pt;}
div.Section1
{page:Section1;}
-->
</style>
</head>
<body lang=DE>
<div class=Section1>
<p class=MsoNormal style='text-autospace:none'><span style='font-size:8.0pt;
font-family:"Courier New";color:blue'>language</span><span style='font-size:
8.0pt;font-family:"Courier New";color:black'> Emfatic;</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-size:8.0pt;
font-family:"Courier New"'>&nbsp;</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-size:8.0pt;
font-family:"Courier New";color:blue'>options</span><span style='font-size:
8.0pt;font-family:"Courier New";color:black'> { k=3; </span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-size:8.0pt;
font-family:"Courier New";color:black'>          parserPackageName=</span><b><span
style='font-size:8.0pt;font-family:"Courier New";color:navy'>&quot;org.eclipse.emf.emfatic.core.lang.gen.parser&quot;</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'>; </span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-size:8.0pt;
font-family:"Courier New";color:black'>          astPackageName=</span><b><span
style='font-size:8.0pt;font-family:"Courier New";color:navy'>&quot;org.eclipse.emf.emfatic.core.lang.gen.ast&quot;</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'>; </span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-size:8.0pt;
font-family:"Courier New";color:black'>          astBaseClassName=</span><b><span
style='font-size:8.0pt;font-family:"Courier New";color:navy'>&quot;EmfaticASTNode&quot;</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'>;</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-size:8.0pt;
font-family:"Courier New";color:black'>        }</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-size:8.0pt;
font-family:"Courier New"'>&nbsp;</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-size:8.0pt;
font-family:"Courier New"'>&nbsp;</span></p>
<p class=MsoNormal style='text-autospace:none'><b><span style='font-size:8.0pt;
font-family:"Courier New";color:red;background:yellow'>sequence</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'> compUnit [entry]
: packageDecl importStmts topLevelDecls  ;</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-size:8.0pt;
font-family:"Courier New"'>&nbsp;</span></p>
<p class=MsoNormal style='text-autospace:none'><b><span style='font-size:8.0pt;
font-family:"Courier New";color:red;background:yellow'>sequence</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'> packageDecl : annotations
</span><b><span style='font-size:8.0pt;font-family:"Courier New";color:navy'>&quot;package&quot;</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'> name=qualifiedID
SEMI ;</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-size:8.0pt;
font-family:"Courier New"'>&nbsp;</span></p>
<p class=MsoNormal style='text-autospace:none'><b><span style='font-size:8.0pt;
font-family:"Courier New";color:red;background:yellow'>list</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'> qualifiedID :
id1=ID (qidSeparator idn=ID)* ;</span></p>
<p class=MsoNormal style='text-autospace:none'><b><span style='font-size:8.0pt;
font-family:"Courier New";color:red;background:yellow'>token</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'> qidSeparator :
DOT | DOLLAR ;</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-size:8.0pt;
font-family:"Courier New"'>&nbsp;</span></p>
<p class=MsoNormal style='text-autospace:none'><b><span style='font-size:8.0pt;
font-family:"Courier New";color:red;background:yellow'>abstract</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'> stringLiteralOrQualifiedID
: stringLiteralContainer | qualifiedIDContainer ;</span></p>
<p class=MsoNormal style='text-autospace:none'><b><span style='font-size:8.0pt;
font-family:"Courier New";color:red;background:yellow'>sequence</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'> stringLiteralContainer
: STRING_LITERAL ;</span></p>
<p class=MsoNormal style='text-autospace:none'><b><span style='font-size:8.0pt;
font-family:"Courier New";color:red;background:yellow'>sequence</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'> qualifiedIDContainer
: qualifiedID ;</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-size:8.0pt;
font-family:"Courier New"'>&nbsp;</span></p>
<p class=MsoNormal style='text-autospace:none'><b><span style='font-size:8.0pt;
font-family:"Courier New";color:red;background:yellow'>list</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'> annotations : annotation*
;</span></p>
<p class=MsoNormal style='text-autospace:none'><b><span style='font-size:8.0pt;
font-family:"Courier New";color:red;background:yellow'>sequence</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'> annotation : AT source=stringLiteralOrQualifiedID
LPAREN keyEqualsValueList RPAREN ;</span></p>
<p class=MsoNormal style='text-autospace:none'><b><span style='font-size:8.0pt;
font-family:"Courier New";color:red;background:yellow'>list</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'> keyEqualsValueList
: kv1=keyEqualsValue (COMMA kvn=keyEqualsValue)* ;</span></p>
<p class=MsoNormal style='text-autospace:none'><b><span style='font-size:8.0pt;
font-family:"Courier New";color:red;background:yellow'>sequence</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'> keyEqualsValue :
key=stringLiteralOrQualifiedID EQUALS value=stringLiteralOrQualifiedID ;</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-size:8.0pt;
font-family:"Courier New"'>&nbsp;</span></p>
<p class=MsoNormal style='text-autospace:none'><b><span style='font-size:8.0pt;
font-family:"Courier New";color:red;background:yellow'>list</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'> importStmts : importStmt*
; </span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-size:8.0pt;
font-family:"Courier New"'>&nbsp;</span></p>
<p class=MsoNormal style='text-autospace:none'><b><span style='font-size:8.0pt;
font-family:"Courier New";color:red;background:yellow'>sequence</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'> importStmt : </span><b><span
style='font-size:8.0pt;font-family:"Courier New";color:navy'>&quot;import&quot;</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'> (alias=ID
EQUALS)? uri=stringLiteralOrQualifiedID SEMI ;</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-size:8.0pt;
font-family:"Courier New"'>&nbsp;</span></p>
<p class=MsoNormal style='text-autospace:none'><b><span style='font-size:8.0pt;
font-family:"Courier New";color:red;background:yellow'>list</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'> topLevelDecls : topLevelDecl*
;</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-size:8.0pt;
font-family:"Courier New"'>&nbsp;</span></p>
<p class=MsoNormal style='text-autospace:none'><b><span style='font-size:8.0pt;
font-family:"Courier New";color:red;background:yellow'>abstract</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'> topLevelDecl : (annotations)
</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-size:8.0pt;
font-family:"Courier New";color:black'>  subPackageDecl | classDecl | dataTypeDecl
| enumDecl | mapEntryDecl ;</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-size:8.0pt;
font-family:"Courier New"'>&nbsp;</span></p>
<p class=MsoNormal style='text-autospace:none'><b><span style='font-size:8.0pt;
font-family:"Courier New";color:red;background:yellow'>sequence</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'> subPackageDecl :
</span><b><span style='font-size:8.0pt;font-family:"Courier New";color:navy'>&quot;package&quot;</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'> name=ID LCURLY topLevelDecls
RCURLY ;</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-size:8.0pt;
font-family:"Courier New"'>&nbsp;</span></p>
<p class=MsoNormal style='text-autospace:none'><b><span style='font-size:8.0pt;
font-family:"Courier New";color:red;background:yellow'>sequence</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'> classDecl : (abstractModifier)?
</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-size:8.0pt;
font-family:"Courier New";color:black'>                     classKind name=ID </span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-size:8.0pt;
font-family:"Courier New";color:black'>                     (typeParamsInfo=typeParamsInfo)?</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-size:8.0pt;
font-family:"Courier New";color:black'>                     (</span><b><span
style='font-size:8.0pt;font-family:"Courier New";color:navy'>&quot;extends&quot;</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'> superTypes=commaListBoundExceptWild)?
</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-size:8.0pt;
font-family:"Courier New";color:black'>                     (COLON instClassName=boundExceptWildcard)?
</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-size:8.0pt;
font-family:"Courier New";color:black'>                     LCURLY classMemberDecls
RCURLY ;</span></p>
<p class=MsoNormal style='text-autospace:none'><b><span style='font-size:8.0pt;
font-family:"Courier New";color:red;background:yellow'>list</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'> commaListBoundExceptWild
: tb1=boundExceptWildcard (COMMA tbn=boundExceptWildcard)*;</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-size:8.0pt;
font-family:"Courier New"'>&nbsp;</span></p>
<p class=MsoNormal style='text-autospace:none'><b><span style='font-size:8.0pt;
font-family:"Courier New";color:red;background:yellow'>sequence</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'> abstractModifier
: </span><b><span style='font-size:8.0pt;font-family:"Courier New";color:navy'>&quot;abstract&quot;</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'> ;</span></p>
<p class=MsoNormal style='text-autospace:none'><b><span style='font-size:8.0pt;
font-family:"Courier New";color:red;background:yellow'>token</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'> classKind : </span><b><span
style='font-size:8.0pt;font-family:"Courier New";color:navy'>&quot;class&quot;</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'> | </span><b><span
style='font-size:8.0pt;font-family:"Courier New";color:navy'>&quot;interface&quot;</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'> ;</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-size:8.0pt;
font-family:"Courier New"'>&nbsp;</span></p>
<p class=MsoNormal style='text-autospace:none'><b><span style='font-size:8.0pt;
font-family:"Courier New";color:red;background:yellow'>sequence</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'> typeParamsInfo :
LT oneOrMoreTypeParams GT ; </span></p>
<p class=MsoNormal style='text-autospace:none'><b><span style='font-size:8.0pt;
font-family:"Courier New";color:red;background:yellow'>list</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'> oneOrMoreTypeParams
: tp1=typeParam (COMMA tpn=typeParam)* ;</span></p>
<p class=MsoNormal style='text-autospace:none'><b><span style='font-size:8.0pt;
font-family:"Courier New";color:red;background:yellow'>sequence</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'> typeParam : typeVarName=ID
(typeBoundsInfo=typeBoundsInfo)? ; </span></p>
<p class=MsoNormal style='text-autospace:none'><b><span style='font-size:8.0pt;
font-family:"Courier New";color:red;background:yellow'>sequence</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'> typeBoundsInfo :
</span><b><span style='font-size:8.0pt;font-family:"Courier New";color:navy'>&quot;extends&quot;</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'> oneOrMoreTypeParamBounds
; </span></p>
<p class=MsoNormal style='text-autospace:none'><b><span style='font-size:8.0pt;
font-family:"Courier New";color:red;background:yellow'>list</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'> oneOrMoreTypeParamBounds
: tb1=boundExceptWildcard (AMP tbn=boundExceptWildcard)*; </span></p>
<p class=MsoNormal style='text-autospace:none'><b><span style='font-size:8.0pt;
font-family:"Courier New";color:red;background:yellow'>sequence</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'> boundExceptWildcard
: rawTNameOrTVarOrParamzedTName=qualifiedID (LT oneOrMoreTypeArgs GT)? ; </span></p>
<p class=MsoNormal style='text-autospace:none'><b><span style='font-size:8.0pt;
font-family:"Courier New";color:red;background:yellow'>list</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'> oneOrMoreTypeArgs
: ta1=typeArg (COMMA tan=typeArg)*;</span></p>
<p class=MsoNormal style='text-autospace:none'><b><span style='font-size:8.0pt;
font-family:"Courier New";color:red;background:yellow'>abstract</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'> typeArg : boundExceptWildcard
| wildcard  ;</span></p>
<p class=MsoNormal style='text-autospace:none'><b><span style='font-size:8.0pt;
font-family:"Courier New";color:red;background:yellow'>sequence</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'> wildcard : QMARK
( extendsOrSuper boundExceptWildcard )? ; </span></p>
<p class=MsoNormal style='text-autospace:none'><b><span style='font-size:8.0pt;
font-family:"Courier New";color:red;background:yellow'>token</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'> extendsOrSuper :
</span><b><span style='font-size:8.0pt;font-family:"Courier New";color:navy'>&quot;extends&quot;</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'> | </span><b><span
style='font-size:8.0pt;font-family:"Courier New";color:navy'>&quot;super&quot;</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'> ; </span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-size:8.0pt;
font-family:"Courier New"'>&nbsp;</span></p>
<p class=MsoNormal style='text-autospace:none'><b><span style='font-size:8.0pt;
font-family:"Courier New";color:navy;background:gray'>// there are no array types
in EMF</span></b></p>
<p class=MsoNormal style='text-autospace:none'><b><span style='font-size:8.0pt;
font-family:"Courier New";color:navy;background:gray'>/* dot means package nesting,
there are no inner classes in EMF */</span></b></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-size:8.0pt;
font-family:"Courier New"'>&nbsp;</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-size:8.0pt;
font-family:"Courier New"'>&nbsp;</span></p>
<p class=MsoNormal style='text-autospace:none'><b><span style='font-size:8.0pt;
font-family:"Courier New";color:red;background:yellow'>list</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'> classMemberDecls
: classMemberDecl* ;</span></p>
<p class=MsoNormal style='text-autospace:none'><b><span style='font-size:8.0pt;
font-family:"Courier New";color:red;background:yellow'>abstract</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'> classMemberDecl
: (annotations modifiers) attribute | reference | operation ;</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-size:8.0pt;
font-family:"Courier New"'>&nbsp;</span></p>
<p class=MsoNormal style='text-autospace:none'><b><span style='font-size:8.0pt;
font-family:"Courier New";color:red;background:yellow'>sequence</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'> attribute : </span><b><span
style='font-size:8.0pt;font-family:"Courier New";color:navy'>&quot;attr&quot;</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'> typeWithMulti name=ID
(EQUALS defaultValueExpr)? SEMI ; </span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-size:8.0pt;
font-family:"Courier New"'>&nbsp;</span></p>
<p class=MsoNormal style='text-autospace:none'><b><span style='font-size:8.0pt;
font-family:"Courier New";color:red;background:yellow'>sequence</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'> typeWithMulti : name=boundExceptWildcard
(multiplicity)? ;</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-size:8.0pt;
font-family:"Courier New"'>&nbsp;</span></p>
<p class=MsoNormal style='text-autospace:none'><b><span style='font-size:8.0pt;
font-family:"Courier New";color:red;background:yellow'>sequence</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'> multiplicity :
LSQUARE (multiplicityExpr)? RSQUARE ;</span></p>
<p class=MsoNormal style='text-autospace:none'><b><span style='font-size:8.0pt;
font-family:"Courier New";color:red;background:yellow'>sequence</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'> multiplicityExpr
: lowerBound=simpleMultiplicityExpr (DOT_DOT upperBound=simpleMultiplicityExpr)?
;</span></p>
<p class=MsoNormal style='text-autospace:none'><b><span style='font-size:8.0pt;
font-family:"Courier New";color:red;background:yellow'>token</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'> simpleMultiplicityExpr
: STAR | PLUS | QMARK | INT_LITERAL ;</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-size:8.0pt;
font-family:"Courier New"'>&nbsp;</span></p>
<p class=MsoNormal style='text-autospace:none'><b><span style='font-size:8.0pt;
font-family:"Courier New";color:red;background:yellow'>sequence</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'> reference : referenceKind
typeWithMulti (HASH oppositeName=ID)? name=ID SEMI ;</span></p>
<p class=MsoNormal style='text-autospace:none'><b><span style='font-size:8.0pt;
font-family:"Courier New";color:red;background:yellow'>token</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'> referenceKind : </span><b><span
style='font-size:8.0pt;font-family:"Courier New";color:navy'>&quot;ref&quot;</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'> | </span><b><span
style='font-size:8.0pt;font-family:"Courier New";color:navy'>&quot;val&quot;</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'> ;</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-size:8.0pt;
font-family:"Courier New"'>&nbsp;</span></p>
<p class=MsoNormal style='text-autospace:none'><b><span style='font-size:8.0pt;
font-family:"Courier New";color:red;background:yellow'>list</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'> modifiers : optNegatedModifier*
;</span></p>
<p class=MsoNormal style='text-autospace:none'><b><span style='font-size:8.0pt;
font-family:"Courier New";color:red;background:yellow'>sequence</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'> optNegatedModifier
: (BANG)? modifier ;</span></p>
<p class=MsoNormal style='text-autospace:none'><b><span style='font-size:8.0pt;
font-family:"Courier New";color:red;background:yellow'>token</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'> modifier</span></p>
<p class=MsoNormal style='text-autospace:none'><b><span style='font-size:8.0pt;
font-family:"Courier New";color:navy;background:gray'>// keyword        EMF meaning</span></b></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-size:8.0pt;
font-family:"Courier New";color:black'>: </span><b><span style='font-size:8.0pt;
font-family:"Courier New";color:navy'>&quot;readonly&quot;</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'>   </span><b><span
style='font-size:8.0pt;font-family:"Courier New";color:navy;background:gray'>//
EStructuralFeature.changeable = false</span></b></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-size:8.0pt;
font-family:"Courier New";color:black'>| </span><b><span style='font-size:8.0pt;
font-family:"Courier New";color:navy'>&quot;volatile&quot;</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'>   </span><b><span
style='font-size:8.0pt;font-family:"Courier New";color:navy;background:gray'>//
EStructuralFeature.volatile   = true</span></b></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-size:8.0pt;
font-family:"Courier New";color:black'>| </span><b><span style='font-size:8.0pt;
font-family:"Courier New";color:navy'>&quot;transient&quot;</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'>  </span><b><span
style='font-size:8.0pt;font-family:"Courier New";color:navy;background:gray'>//
EStructuralFeature.transient  = true</span></b></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-size:8.0pt;
font-family:"Courier New";color:black'>| </span><b><span style='font-size:8.0pt;
font-family:"Courier New";color:navy'>&quot;unsettable&quot;</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'> </span><b><span
style='font-size:8.0pt;font-family:"Courier New";color:navy;background:gray'>//
EStructuralFeature.unsettable = true</span></b></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-size:8.0pt;
font-family:"Courier New";color:black'>| </span><b><span style='font-size:8.0pt;
font-family:"Courier New";color:navy'>&quot;derived&quot;</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'>    </span><b><span
style='font-size:8.0pt;font-family:"Courier New";color:navy;background:gray'>//
EStructuralFeature.derived    = true</span></b></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-size:8.0pt;
font-family:"Courier New";color:black'>| </span><b><span style='font-size:8.0pt;
font-family:"Courier New";color:navy'>&quot;unique&quot;</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'>     </span><b><span
style='font-size:8.0pt;font-family:"Courier New";color:navy;background:gray'>//
*ETypedElement.unique         = true  -- bag?</span></b></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-size:8.0pt;
font-family:"Courier New";color:black'>| </span><b><span style='font-size:8.0pt;
font-family:"Courier New";color:navy'>&quot;ordered&quot;</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'>    </span><b><span
style='font-size:8.0pt;font-family:"Courier New";color:navy;background:gray'>//
*ETypedElement.ordered        = true  -- random?</span></b></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-size:8.0pt;
font-family:"Courier New";color:black'>| </span><b><span style='font-size:8.0pt;
font-family:"Courier New";color:navy'>&quot;resolve&quot;</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'>    </span><b><span
style='font-size:8.0pt;font-family:"Courier New";color:navy;background:gray'>//
*EReference.resolveProxies    = true  -- local?</span></b></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-size:8.0pt;
font-family:"Courier New";color:black'>| </span><b><span style='font-size:8.0pt;
font-family:"Courier New";color:navy'>&quot;id&quot;</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'>         </span><b><span
style='font-size:8.0pt;font-family:"Courier New";color:navy;background:gray'>//
EAttribute.id                 = true</span></b></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-size:8.0pt;
font-family:"Courier New";color:black'>;</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-size:8.0pt;
font-family:"Courier New"'>&nbsp;</span></p>
<p class=MsoNormal style='text-autospace:none'><b><span style='font-size:8.0pt;
font-family:"Courier New";color:red;background:yellow'>abstract</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'> defaultValueExpr
: boolExpr | intExpr | stringExpr | charExpr ;</span></p>
<p class=MsoNormal style='text-autospace:none'><b><span style='font-size:8.0pt;
font-family:"Courier New";color:red;background:yellow'>sequence</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'> boolExpr : trueOrFalse
;</span></p>
<p class=MsoNormal style='text-autospace:none'><b><span style='font-size:8.0pt;
font-family:"Courier New";color:red;background:yellow'>token</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'> trueOrFalse : </span><b><span
style='font-size:8.0pt;font-family:"Courier New";color:navy'>&quot;true&quot;</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'> | </span><b><span
style='font-size:8.0pt;font-family:"Courier New";color:navy'>&quot;false&quot;</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'> ;</span></p>
<p class=MsoNormal style='text-autospace:none'><b><span style='font-size:8.0pt;
font-family:"Courier New";color:red;background:yellow'>sequence</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'> intExpr :
(MINUS)? INT_LITERAL ;</span></p>
<p class=MsoNormal style='text-autospace:none'><b><span style='font-size:8.0pt;
font-family:"Courier New";color:red;background:yellow'>sequence</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'> stringExpr :
STRING_LITERAL ;</span></p>
<p class=MsoNormal style='text-autospace:none'><b><span style='font-size:8.0pt;
font-family:"Courier New";color:red;background:yellow'>sequence</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'> charExpr :
CHAR_LITERAL ;</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-size:8.0pt;
font-family:"Courier New"'>&nbsp;</span></p>
<p class=MsoNormal style='text-autospace:none'><b><span style='font-size:8.0pt;
font-family:"Courier New";color:red;background:yellow'>sequence</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'> operation : </span><b><span
style='font-size:8.0pt;font-family:"Courier New";color:navy'>&quot;op&quot;</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'> (typeParamsInfo=typeParamsInfo)?
</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-size:8.0pt;
font-family:"Courier New";color:black'>   resType=resultType name=ID LPAREN (params)?
RPAREN </span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-size:8.0pt;
font-family:"Courier New";color:black'>   (</span><b><span style='font-size:
8.0pt;font-family:"Courier New";color:navy'>&quot;throws&quot;</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'> exceptions=commaListBoundExceptWild)?
SEMI ;</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-size:8.0pt;
font-family:"Courier New"'>&nbsp;</span></p>
<p class=MsoNormal style='text-autospace:none'><b><span style='font-size:8.0pt;
font-family:"Courier New";color:red;background:yellow'>abstract</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'> resultType : typeWithMulti
| voidContainer ; </span></p>
<p class=MsoNormal style='text-autospace:none'><b><span style='font-size:8.0pt;
font-family:"Courier New";color:red;background:yellow'>sequence</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'> voidContainer : </span><b><span
style='font-size:8.0pt;font-family:"Courier New";color:navy'>&quot;void&quot;</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'> ; </span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-size:8.0pt;
font-family:"Courier New"'>&nbsp;</span></p>
<p class=MsoNormal style='text-autospace:none'><b><span style='font-size:8.0pt;
font-family:"Courier New";color:red;background:yellow'>list</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'> params :
p1=param (COMMA pn=param)*; </span></p>
<p class=MsoNormal style='text-autospace:none'><b><span style='font-size:8.0pt;
font-family:"Courier New";color:red;background:yellow'>sequence</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'> param : leadingAnnotations=annotations
modifiers typeWithMulti name=ID trailingAnnotations=annotations ;</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-size:8.0pt;
font-family:"Courier New"'>&nbsp;</span></p>
<p class=MsoNormal style='text-autospace:none'><b><span style='font-size:8.0pt;
font-family:"Courier New";color:navy;background:gray'>// &quot;transient&quot; means
!serializable</span></b></p>
<p class=MsoNormal style='text-autospace:none'><b><span style='font-size:8.0pt;
font-family:"Courier New";color:red;background:yellow'>sequence</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'> dataTypeDecl : (transientModifier)?
</span><b><span style='font-size:8.0pt;font-family:"Courier New";color:navy'>&quot;datatype&quot;</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'> name=ID COLON instClassName=stringLiteralOrQualifiedID
SEMI ; </span><b><span style='font-size:8.0pt;font-family:"Courier New";
color:navy;background:gray'>// TODO datatypes should accept type parameters</span></b></p>
<p class=MsoNormal style='text-autospace:none'><b><span style='font-size:8.0pt;
font-family:"Courier New";color:red;background:yellow'>sequence</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'> transientModifier
: </span><b><span style='font-size:8.0pt;font-family:"Courier New";color:navy'>&quot;transient&quot;</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'> ;</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-size:8.0pt;
font-family:"Courier New"'>&nbsp;</span></p>
<p class=MsoNormal style='text-autospace:none'><b><span style='font-size:8.0pt;
font-family:"Courier New";color:red;background:yellow'>sequence</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'> enumDecl : </span><b><span
style='font-size:8.0pt;font-family:"Courier New";color:navy'>&quot;enum&quot;</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'> name=ID LCURLY enumLiterals
RCURLY ;</span></p>
<p class=MsoNormal style='text-autospace:none'><b><span style='font-size:8.0pt;
font-family:"Courier New";color:red;background:yellow'>list</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'> enumLiterals : enumLiteral*
;</span></p>
<p class=MsoNormal style='text-autospace:none'><b><span style='font-size:8.0pt;
font-family:"Courier New";color:red;background:yellow'>sequence</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'> enumLiteral : leadingAnnotations=annotations
name=ID (EQUALS val=INT_LITERAL)? trailingAnnotations=annotations SEMI ;</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-size:8.0pt;
font-family:"Courier New"'>&nbsp;</span></p>
<p class=MsoNormal style='text-autospace:none'><b><span style='font-size:8.0pt;
font-family:"Courier New";color:red;background:yellow'>sequence</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'> mapEntryDecl : </span><b><span
style='font-size:8.0pt;font-family:"Courier New";color:navy'>&quot;mapentry&quot;</span></b><span
style='font-size:8.0pt;font-family:"Courier New";color:black'> name=ID COLON key=typeWithMulti
MINUS_GT value=typeWithMulti SEMI ;</span></p>
<p class=MsoNormal style='text-autospace:none'><span style='font-size:8.0pt;
font-family:"Courier New"'>&nbsp;</span></p>
<p class=MsoNormal style='text-autospace:none'><b><span style='font-size:8.0pt;
font-family:"Courier New";color:navy;background:gray'>// the following tokens were
added to cater for generics syntax : AMP, LT, GT</span></b><span
style='font-size:8.0pt;font-family:"Courier New"'> </span></p>
<p class=MsoNormal><span lang=EN-US>&nbsp;</span></p>
</div>
</body>
</html>