1+ grammar BeePathGrammar;
2+
3+ description : leadingText initialStatement statement+ closingStatement;
4+
5+ leadingText : ' ...' ;
6+ initialStatement : ' Initially' ' start' ACTIVITY ;
7+ closingStatement : ' After' ( act_fragment ' ends'
8+ | act_fragment ' ends' (' and' act_fragment ' ends' )+
9+ | ' either' act_fragment ' ends' (' or' act_fragment ' ends' )+
10+ ) ' ,' ' the' ' process' ' finishes' ;
11+
12+ statement : sequence
13+ | parallelSplit
14+ | synchronization
15+ | exclusiveChoice
16+ | simpleMerge
17+ | repeatSince
18+ | eventually
19+ | andSplitInXorSplit
20+ | xorSplitInAndSplit
21+ | andJoinInXorJoin
22+ | xorJoinInAndJoin
23+ | subprocess;
24+
25+ sequence : ' After' ACTIVITY ' ends' ' ,' ' immediately' ' start' ACTIVITY ;
26+ parallelSplit : ' After' ACTIVITY ' ends' ' ,' ' immediately' ' start' ACTIVITY (' and' ' start' ACTIVITY )+;
27+ synchronization : ' After' ACTIVITY ' ends' (' and' ACTIVITY ' ends' )+ ' ,' ' immediately' ' start' ACTIVITY ;
28+ exclusiveChoice : ' After' ACTIVITY ' ends' ' ,' ' immediately' ' either' ' start' ACTIVITY (' or' ' start' ACTIVITY )+;
29+ simpleMerge : ' After' ' either' ACTIVITY ' ends' (' or' ACTIVITY ' ends' )+ ' ,' ' immediately' ' start' ACTIVITY ;
30+ repeatSince : ' After' ACTIVITY ' ends' ' ,' ' immediately' ' repeat' ' since' ACTIVITY (' or' ' start' ACTIVITY )+;
31+ eventually : ' After' ACTIVITY ' ends' ' ,' ' eventually' ' start' ACTIVITY ;
32+ andSplitInXorSplit : ' After' ACTIVITY ' ends' ' ,' ' immediately' ' either' ' start' act_fragment (' or' ' start' act_fragment)+;
33+ xorSplitInAndSplit : ' After' ACTIVITY ' ends' ' ,' ' immediately' ' start' act_fragment (' and' ' start' act_fragment)+;
34+ andJoinInXorJoin : ' After' ' either' act_fragment ' ends' (' or' act_fragment ' ends' )+ ' ,' ' immediately' ' start' ACTIVITY ;
35+ xorJoinInAndJoin : ' After' act_fragment ' ends' (' and' act_fragment ' ends' )+ ' ,' ' immediately' ' start' ACTIVITY ;
36+
37+ subprocess : andSubprocess | orSubprocess;
38+ andSubprocess : SUBPROCESS_ID ' :' ACTIVITY (' and' ACTIVITY )+;
39+ orSubprocess : SUBPROCESS_ID ' :' ACTIVITY (' or' ACTIVITY )+;
40+
41+ act_fragment : ACTIVITY | SUBPROCESS_ID ;
42+ ACTIVITY : ' "' WORD (' ' WORD )* ' "' ;
43+ SUBPROCESS_ID : ' (' WORD + ' )' ;
44+
45+ WORD : ([a-z] | [A -Z ] | [0-9] | ' _' )+;
46+ SPACE : (' ' | ' \t ' ) -> skip;
47+ NEWLINE : (' \r ' ? ' \n ' | ' \r ' ) -> skip;
0 commit comments