Skip to main content

module demo::lang::MissGrant::MissGrant

rascal-0.42.2

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 = [*] !>> [/] ;