Grammar extracted by Vadim Zaytsev, see the Grammar Zoo entry for details: dsl/spl/extracted
Source used for this grammar: David Touzet, SPL.ecore
, 2006/01/18
String
, Integer
, Boolean
, LocatedElement
, Program
, Service
, Session
, Registration
, Dialog
, Event
, Method
, Argument
, MethodName
, SIPMethodName
, ControlMethodName
, Branch
, DefaultBranch
, NamedBranch
, TypeExpression
, SimpleType
, SequenceType
, DefinedType
, Declaration
, VariableDeclaration
, FunctionDeclaration
, RemoteFunctionDeclaration
, LocalFunctionDeclaration
, StructureDeclaration
, StructureProperty
, FunctionCall
, Statement
, CompoundStat
, SetStat
, DeclarationStat
, ReturnStat
, IfStat
, WhenStat
, ForeachStat
, SelectStat
, FunctionCallStat
, ContinueStat
, BreakStat
, PushStat
, WhenHeader
, SelectMember
, SelectDefault
, SelectCase
, Expression
, ConstantExp
, OperatorExp
, ForwardExp
, WithExp
, BlockExp
, ReasonExp
, BODYExp
, RequestURIExp
, PopExp
, FunctionCallExp
, Place
, SIPHeaderPlace
, VariablePlace
, PropertyCallPlace
, Variable
, MessageField
, ReasonMessageField
, HeadedMessageField
, Constant
, BooleanConstant
, IntegerConstant
, StringConstant
, URIConstant
, SequenceConstant
, ResponseConstant
, Response
, SuccessResponse
, ErrorResponse
, ClientErrorResponse
, GlobalErrorResponse
, RedirectionErrorResponse
, ServerErrorResponse
, Direction
, SIPMethod
, ControlMethod
, PrimitiveType
, Modifier
, FunctionLocation
, SIPHeader
, SuccessKind
, ClientErrorKind
, GlobalErrorKind
, RedirectionErrorKind
, ServerErrorKind
), 0 root (—), 1 top (LocatedElement
), 0 bottom (—).[service]
, [name]
5, [declarations]
4, [sessions]
2, [methods]
2, [eventId]
, [type]
6, [direction]
, [methodName]
, [arguments]
, [statements]
8, [branches]
, [initExp]
2, [modifier]
, [size]
, [typeName]
, [functionLocation]
, [properties]
, [function]
, [parameters]
, [target]
2, [setValue]
, [declaration]
, [returnedValue]
, [branch]
, [condition]
, [thenStatements]
, [elseStatements]
2, [idExp]
, [whenHeaders]
, [iteratorName]
, [sequenceExp]
, [matchedExp]
, [selectCases]
, [selectDefault]
, [functionCall]
2, [pushedValue]
, [headerId]
2, [value]
5, [values]
2, [opName]
, [leftExp]
, [rightExp]
, [isParallel]
, [exp]
4, [msgFields]
, [source]
3, [header]
, [propName]
, [uri]
2, [response]
2, [successKind]
, [errorKind]
4, [inout]
, [in]
, [out]
, [ACK]
, [BYE]
, [CANCEL]
, [INVITE]
, [NOTIFY]
, [OPTIONS]
, [REACK]
, [REGISTER]
, [REINVITE]
, [REREGISTER]
, [RESUBSCRIBE]
, [SUBSCRIBE]
, [deploy]
, [undeploy]
, [uninvite]
, [unregister]
, [unsubscribe]
, [void]
, [bool]
, [int]
, [request]
, [string]
, [time]
, [LIFO]
, [FIFO]
, [remote]
, [local]
, [CALL_ID]
, [CONTACT]
, [CSEQ]
, [EVENT]
, [FROM]
, [MAX_FORWARDS]
, [SUBSCRIPTION_STATE]
, [TO]
, [VIA]
, [OK]
, [ACCEPTED]
, [ADDRESS_INCOMPLETE]
, [AMBIGUOUS]
, [BAD_EXTENSION]
, [BAD_REQUEST]
, [BUSY_HERE]
, [CALL_OR_TRANSACTION_DOES_NOT_EXIST]
, [EXTENSION_REQUIRED]
, [FORBIDDEN]
, [GONE]
, [INTERVAL_TOO_BRIEF]
, [LOOP_DETECTED]
, [METHOD_NOT_ALLOWED]
, [NOT_ACCEPTABLE_HERE]
, [NOT_ACCEPTABLE]
2, [NOT_FOUND]
, [PAYMENT_REQUIRED]
, [PROXY_AUTHENTICATION_REQUIRED]
, [REQUESTURI_TOO_LONG]
, [REQUEST_ENTITY_TOO_LARGE]
, [REQUEST_PENDING]
, [REQUEST_TERMINATED]
, [REQUEST_TIMEOUT]
, [TEMPORARILY_UNAVAILABLE]
, [TOO_MANY_HOPS]
, [UNAUTHORIZED]
, [UNDECIPHERABLE]
, [UNSUPPORTED_MEDIA_TYPE]
, [UNSUPPORTED_URI_SCHEME]
, [BUSY_EVERYWHERE]
, [DECLINE]
, [DOES_NOT_EXIST_ANYWHERE]
, [ALTERNATIVE_SERVICE]
, [MOVED_PERMANENTLY]
, [MOVED_TEMPORARILY]
, [MULTIPLE_CHOICES]
, [USE_PROXY]
, [BAD_GATEWAY]
, [MESSAGE_TOO_LARGE]
, [NOT_IMPLEMENTED]
, [SERVER_INTERNAL_ERROR]
, [SERVER_TIMEOUT]
, [SERVICE_UNAVAILABLE]
, [VERSION_NOT_SUPPORTED]
.String ::= string
Integer ::= integer
Boolean ::= "true" "false"
LocatedElement ::= Program
LocatedElement ::= Service
LocatedElement ::= Session
LocatedElement ::= MethodName
LocatedElement ::= Branch
LocatedElement ::= TypeExpression
LocatedElement ::= Declaration
LocatedElement ::= StructureProperty
LocatedElement ::= FunctionCall
LocatedElement ::= Statement
LocatedElement ::= SelectMember
LocatedElement ::= Expression
LocatedElement ::= MessageField
LocatedElement ::= Constant
LocatedElement ::= Response
Program ::= [service]::Service
Service ::= [name]::String [declarations]::Declaration[sessions]::Session
Session ::= Registration
Session ::= Dialog
Session ::= Event
Session ::= Method
Registration ::= [declarations]::Declaration[sessions]::Session
Dialog ::= [declarations]::Declaration[methods]::Method
Event ::= [eventId]::String [declarations]::Declaration[methods]::Method
Method ::= [type]::TypeExpression [direction]::Direction [methodName]::MethodName [arguments]::Argument[statements]::Statement [branches]::Branch
Argument ::= [type]::TypeExpression [initExp]::Expression
MethodName ::= SIPMethodName
MethodName ::= ControlMethodName
SIPMethodName ::= [name]::SIPMethod
ControlMethodName ::= [name]::ControlMethod
Branch ::= DefaultBranch
Branch ::= NamedBranch
Branch ::=
[statements]::Statement
DefaultBranch ::=
[statements]::Statement
NamedBranch ::=
[name]::String
TypeExpression ::= SimpleType
TypeExpression ::= SequenceType
TypeExpression ::= DefinedType
SimpleType ::= [type]::PrimitiveType
SequenceType ::= [modifier]::Modifier [type]::PrimitiveType [size]::Integer
DefinedType ::= [typeName]::String
Declaration ::= VariableDeclaration
Declaration ::= FunctionDeclaration
Declaration ::= StructureDeclaration
VariableDeclaration ::= Argument
VariableDeclaration ::= WhenHeader
VariableDeclaration ::= [type]::TypeExpression [initExp]::Expression
FunctionDeclaration ::= RemoteFunctionDeclaration
FunctionDeclaration ::= LocalFunctionDeclaration
RemoteFunctionDeclaration ::= [functionLocation]::FunctionLocation
LocalFunctionDeclaration ::=
[statements]::Statement
StructureDeclaration ::=
[properties]::Argument
StructureProperty ::= [name]::String [type]::TypeExpression
FunctionCall ::=
[function]::FunctionDeclaration [parameters]::Expression
Statement ::= CompoundStat
Statement ::= SetStat
Statement ::= DeclarationStat
Statement ::= ReturnStat
Statement ::= IfStat
Statement ::= WhenStat
Statement ::= ForeachStat
Statement ::= SelectStat
Statement ::= FunctionCallStat
Statement ::= ContinueStat
Statement ::= BreakStat
Statement ::= PushStat
CompoundStat ::=
[statements]::Statement
SetStat ::= [target]::Place [setValue]::Expression
DeclarationStat ::= [declaration]::Declaration
ReturnStat ::= [returnedValue]::Expression [branch]::NamedBranch
IfStat ::= [condition]::Expression [thenStatements]::Statement[elseStatements]::Statement
WhenStat ::= [idExp]::Variable [whenHeaders]::WhenHeader[statements]::Statement [elseStatements]::Statement
ForeachStat ::=
[iteratorName]::String [sequenceExp]::Expression [statements]::Statement
SelectStat ::=
[matchedExp]::Expression [selectCases]::SelectCase
[selectDefault]::SelectDefaultFunctionCallStat ::= [functionCall]::FunctionCall
ContinueStat ::= ε
BreakStat ::= ε
PushStat ::= [target]::Place [pushedValue]::Expression
WhenHeader ::= [headerId]::String [value]::Constant
SelectMember ::= SelectDefault
SelectMember ::= SelectCase
SelectDefault ::=
[statements]::Statement
SelectCase ::=
[values]::Constant
Expression ::= ConstantExp
Expression ::= OperatorExp
Expression ::= ForwardExp
Expression ::= WithExp
Expression ::= BlockExp
Expression ::= ReasonExp
Expression ::= BODYExp
Expression ::= RequestURIExp
Expression ::= PopExp
Expression ::= FunctionCallExp
Expression ::= Place
ConstantExp ::= [value]::Constant
OperatorExp ::= [opName]::String [leftExp]::Expression [rightExp]::Expression
ForwardExp ::= [isParallel]::Boolean [exp]::Expression
WithExp ::=
[exp]::Expression [msgFields]::MessageField
BlockExp ::= [exp]::Expression
ReasonExp ::= ε
BODYExp ::= ε
RequestURIExp ::= ε
PopExp ::= [source]::Place
FunctionCallExp ::= [functionCall]::FunctionCall
Place ::= SIPHeaderPlace
Place ::= VariablePlace
SIPHeaderPlace ::= [header]::SIPHeader
VariablePlace ::= PropertyCallPlace
VariablePlace ::= Variable
PropertyCallPlace ::= [propName]::String [source]::VariablePlace
Variable ::= [source]::Declaration
MessageField ::= ReasonMessageField
MessageField ::= HeadedMessageField
ReasonMessageField ::= [exp]::Expression
HeadedMessageField ::= [headerId]::String
Constant ::= BooleanConstant
Constant ::= IntegerConstant
Constant ::= StringConstant
Constant ::= URIConstant
Constant ::= SequenceConstant
Constant ::= ResponseConstant
BooleanConstant ::= [value]::Boolean
IntegerConstant ::= [value]::Integer
StringConstant ::= [value]::String
URIConstant ::= [uri]::String
SequenceConstant ::=
[values]::Constant
ResponseConstant ::= [response]::Response
Response ::= SuccessResponse
Response ::= ErrorResponse
SuccessResponse ::= [successKind]::SuccessKind
ErrorResponse ::= ClientErrorResponse
ErrorResponse ::= GlobalErrorResponse
ErrorResponse ::= RedirectionErrorResponse
ErrorResponse ::= ServerErrorResponse
ErrorResponse ::= ClientErrorResponse GlobalErrorResponse RedirectionErrorResponse ServerErrorResponse
ClientErrorResponse ::= [errorKind]::ClientErrorKind
GlobalErrorResponse ::= [errorKind]::GlobalErrorKind
RedirectionErrorResponse ::= [errorKind]::RedirectionErrorKind
ServerErrorResponse ::= [errorKind]::ServerErrorKind
Direction ::= [inout]::ε [in]::ε [out]::ε
SIPMethod ::= [ACK]::ε [BYE]::ε [CANCEL]::ε [INVITE]::ε [NOTIFY]::ε [OPTIONS]::ε [REACK]::ε [REGISTER]::ε [REINVITE]::ε [REREGISTER]::ε [RESUBSCRIBE]::ε [SUBSCRIBE]::ε
ControlMethod ::= [deploy]::ε [undeploy]::ε [uninvite]::ε [unregister]::ε [unsubscribe]::ε
PrimitiveType ::= [void]::ε [bool]::ε [int]::ε [request]::ε [response]::ε [string]::ε [time]::ε [uri]::ε
Modifier ::= [LIFO]::ε [FIFO]::ε
FunctionLocation ::= [remote]::ε [local]::ε
SIPHeader ::= [CALL_ID]::ε [CONTACT]::ε [CSEQ]::ε [EVENT]::ε [FROM]::ε [MAX_FORWARDS]::ε [SUBSCRIPTION_STATE]::ε [TO]::ε [VIA]::ε
SuccessKind ::= [OK]::ε [ACCEPTED]::ε
ClientErrorKind ::= [ADDRESS_INCOMPLETE]::ε [AMBIGUOUS]::ε [BAD_EXTENSION]::ε [BAD_REQUEST]::ε [BUSY_HERE]::ε [CALL_OR_TRANSACTION_DOES_NOT_EXIST]::ε [EXTENSION_REQUIRED]::ε [FORBIDDEN]::ε [GONE]::ε [INTERVAL_TOO_BRIEF]::ε [LOOP_DETECTED]::ε [METHOD_NOT_ALLOWED]::ε [NOT_ACCEPTABLE_HERE]::ε [NOT_ACCEPTABLE]::ε [NOT_FOUND]::ε [PAYMENT_REQUIRED]::ε [PROXY_AUTHENTICATION_REQUIRED]::ε [REQUESTURI_TOO_LONG]::ε [REQUEST_ENTITY_TOO_LARGE]::ε [REQUEST_PENDING]::ε [REQUEST_TERMINATED]::ε [REQUEST_TIMEOUT]::ε [TEMPORARILY_UNAVAILABLE]::ε [TOO_MANY_HOPS]::ε [UNAUTHORIZED]::ε [UNDECIPHERABLE]::ε [UNSUPPORTED_MEDIA_TYPE]::ε [UNSUPPORTED_URI_SCHEME]::ε
GlobalErrorKind ::= [BUSY_EVERYWHERE]::ε [DECLINE]::ε [DOES_NOT_EXIST_ANYWHERE]::ε [NOT_ACCEPTABLE]::ε
RedirectionErrorKind ::= [ALTERNATIVE_SERVICE]::ε [MOVED_PERMANENTLY]::ε [MOVED_TEMPORARILY]::ε [MULTIPLE_CHOICES]::ε [USE_PROXY]::ε
ServerErrorKind ::= [BAD_GATEWAY]::ε [MESSAGE_TOO_LARGE]::ε [NOT_IMPLEMENTED]::ε [SERVER_INTERNAL_ERROR]::ε [SERVER_TIMEOUT]::ε [SERVICE_UNAVAILABLE]::ε [VERSION_NOT_SUPPORTED]::ε