GraphTypeDef |
::= |
<kwGraph> <kwType> <IDENTIFIER> ( LanguageVersionSpec )? "{" ( VertexTypeDecl | EdgeTypeDecl | AttributeDecl | AttributeDef | PredicateDecl | GlobalDecl )* "}" |
LanguageVersionSpec |
::= |
<kwVersion> <INTEGER> ( ":" <INTEGER> )* |
AttributeDef |
::= |
<kwConst> <IDENTIFIER> "=" <STRING> "." |
AttributeDecl |
::= |
<kwAttribute> AttrDeclsOpt "." |
AttrDeclsOpt |
::= |
( AttrDecl ( "," AttrDecl )* )? |
AttrDecl |
::= |
( <kwHidden> | <kwExpert> )? AttrType <IDENTIFIER> ( "=" Expression )? |
AttrType |
::= |
( ( <kwInteger> ) | ( <kwReal> ) | ( <kwString> ( "(" <STRING> ")" )? ) | ( <kwText> ( "(" <STRING> ")" )? ) | ( <kwType> ) | ( <kwFrame> ) | ( <kwExpression> ) | ( <kwParameters> ) | ( <kwOther> ( "(" <STRING> ")" )? ) | ( <kwDerived> ) | ( <kwGraph> ( "(" <STRING> ")" )? ) ) |
VertexTypeDecl |
::= |
<kwVertex> <kwType> <IDENTIFIER> "(" AttrDeclsOpt ")" ( "[" <STRING> "]" )? ( GraphicAttrDecls )? "." |
EdgeTypeDecl |
::= |
<kwEdge> <kwType> <IDENTIFIER> "(" AttrDeclsOpt ")" ( "[" <STRING> "]" )? ( GraphicAttrDecls )? "." |
GraphicAttrDecls |
::= |
<kwGraphics> "(" GraphicAttributesOpt ")" |
GraphicAttributesOpt |
::= |
( GraphicAttribute ( "," GraphicAttribute )* )? |
GraphicAttribute |
::= |
( <kwHidden> | <kwExpert> )? GraphicType <IDENTIFIER> "=" GraphicAttributeValue |
GraphicType |
::= |
( ( <kwInteger> ) | ( <kwReal> ) | ( <kwString> ) | ( <kwText> ) | ( <kwColor> ) | ( <kwOther> ) ) ( <STRING> )? |
GraphicAttributeValue |
::= |
( ( <REAL> ) | ( <INTEGER> ) | ( <STRING> ) ) |
GlobalDecl |
::= |
<kwDeclare> "{" ExpressionFrame "}" |
PredicateDecl |
::= |
( <kwOptional> )? <kwPredicate> <IDENTIFIER> ( <STRING> )? ( ( <kwForall> | <kwExists> ) QuantifiedVars )? ":" Expression <kwEnd> |
ParameterDeclsOpt |
::= |
( ParameterDecl ( "," ParameterDecl )* )? |
ParameterDecl |
::= |
( <IDENTIFIER> ( ":" TypeSpecifier )? ) |
ParametersOpt |
::= |
( Expression ( "," Expression )* )? |
TypeSpecifier |
::= |
( BasicType | ObjectType | FunctionType ) |
ObjectType |
::= |
<IDENTIFIER> |
BasicType |
::= |
( <kwChar> | <kwInt> | <kwBoolean> | <kwReal> ) |
FunctionType |
::= |
"(" ( TypeSpecifier ( "," TypeSpecifier )* )? ")" "->" TypeSpecifier |
Expression |
::= |
SingleExpression ( ";" SingleExpression )* |
SingleExpression |
::= |
( ( CondExpression | LetExpression | LambdaExpression | WhileExpr | AssignmentExpr | QuantifiedExpression | EnvExpr | MapExpr | ListExpr | SetExpr | BinOp4Expr ) ) |
AtomicExpression |
::= |
( VariableRef | <INTEGER> | <REAL> | <STRING> | <kwTrue> | <kwFalse> | <kwNull> ) |
BinOp4Expr |
::= |
BinOp3Expr ( BinOp4 BinOp4Expr )* |
BinOp4 |
::= |
( "*" | "/" | "&" | <kwMod> | <kwIn> ) |
BinOp3Expr |
::= |
BinOp2Expr ( BinOp3 BinOp3Expr )* |
BinOp3 |
::= |
( "+" | "-" | "|" ) |
BinOp2Expr |
::= |
BinOp1Expr ( BinOp2 BinOp2Expr )* |
BinOp2 |
::= |
( "&&" | "||" ) |
BinOp1Expr |
::= |
ApplicationExpr ( BinOp1 BinOp1Expr )* |
BinOp1 |
::= |
( "=" | "<" | "<=" | ">" | ">=" | "<>" ) |
ApplicationExpr |
::= |
PrimaryExpr ( ( "\'" <IDENTIFIER> ( "(" ParametersOpt ")" )? ) | ( "(" ParametersOpt ")" ) )* |
PrimaryExpr |
::= |
( PrefixExpr | StaticMethodCall | AtomicExpression | NewExpr | ThrowExpr | InstanceofExpr | BoundpExpr | "(" Expression ")" ) |
StaticMethodCall |
::= |
<kwClass> QID "\'" <IDENTIFIER> "(" ParametersOpt ")" |
PrefixExpr |
::= |
PrefixOp Expression |
PrefixOp |
::= |
( "-" | "~" ) |
NewExpr |
::= |
<kwNew> QID "(" ParametersOpt ")" |
InstanceofExpr |
::= |
<kwInstanceof> "(" Expression "," QID ")" |
BoundpExpr |
::= |
<kwIsbound> <IDENTIFIER> |
ThrowExpr |
::= |
<kwThrow> Expression |
CondExpression |
::= |
<kwIf> Expression <kwThen> Expression <kwElse> Expression <kwEnd> |
LetExpression |
::= |
<kwLet> ExpressionFrame ":" Expression <kwEnd> |
LambdaExpression |
::= |
<kwLambda> "(" ParameterDeclsOpt ")" Expression <kwEnd> |
WhileExpr |
::= |
<kwWhile> Expression ":" Expression <kwEnd> |
AssignmentExpr |
::= |
<IDENTIFIER> ":=" Expression |
QuantifiedExpression |
::= |
( ( <kwForall> ) | ( <kwExists> ) ) QuantifiedVars ":" Expression <kwEnd> |
QuantifiedVars |
::= |
SimpleQuantifiedVars ( "|" SimpleQuantifiedVars )* |
SimpleQuantifiedVars |
::= |
SingleQuantifiedVar ( "," SingleQuantifiedVar )* |
SingleQuantifiedVar |
::= |
<IDENTIFIER> <kwIn> Expression |
MapExpr |
::= |
<kwMap> "[" ( Expression "->" Expression ( "," Expression "->" Expression )* )? "]" |
ListExpr |
::= |
"[" ( Expression ( "," Expression )* )? "]" |
SetExpr |
::= |
"{" ( Expression ( "," Expression )* )? "}" |
EnvExpr |
::= |
<kwEnvironment> ( "[" ( <IDENTIFIER> ( ":" TypeSpecifier )? "=" Expression ( "," <IDENTIFIER> ( ":" TypeSpecifier )? "=" Expression )* )? "]" )? |
ExpressionFrameOpt |
::= |
( LocalDecl ( "," LocalDecl )* )? |
ExpressionFrame |
::= |
LocalDecl ( "," LocalDecl )* |
LocalDecl |
::= |
<IDENTIFIER> ( ":" TypeSpecifier )? "=" Expression |
VariableRef |
::= |
<IDENTIFIER> |
QID |
::= |
( <IDENTIFIER> ( "." <IDENTIFIER> )* ) |