Skip to main content

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