module demo::lang::MissGrant::MissGrant
rascal-0.34.0
Usage
import demo::lang::MissGrant::MissGrant;
syntax Controller
start syntax Controller = controller: Events events ResetEvents? resets Commands? commands State+ states;
syntax Events
syntax Events = @Foldable "events" Event* "end";
syntax ResetEvents
syntax ResetEvents = @Foldable "resetEvents" Id* "end";
syntax Commands
syntax Commands = @Foldable "commands" Command* "end";
syntax Command
syntax Command = command: Id name Id token;
syntax Event
syntax Event = event: Id name Id token;
syntax State
syntax State = @Foldable state: "state" Id name Actions? Transition* "end";
syntax Actions
syntax Actions = "actions" "{" Id+ "}";
syntax Transition
syntax Transition = transition: Id event "=\>" Id state;
syntax Id
lexical Id = ([a-zA-Z][a-zA-Z0-9_]* !>> [a-zA-Z0-9_]) \ Reserved ;
syntax Reserved
keyword Reserved = "events" | "end" | "resetEvents" | "state" | "actions" ;
syntax LAYOUT
lexical LAYOUT = whitespace: [\t-\n\r\ ] | Comment ;
syntax LAYOUTLIST
layout LAYOUTLIST = LAYOUT* !>> [\t-\n\r\ ] !>> "/*" ;
syntax Comment
lexical Comment = @category="Comment" "/*" CommentChar* "*/" ;
syntax CommentChar
lexical CommentChar = ![*] | Asterisk ;
syntax Asterisk
lexical Asterisk = [*] !>> [/] ;