pamela:
defpclass
defproposition
pamela
::= (
defpclass
|
defproposition
)*
no references
defpclass:
(
defpclass
symbol
args
option
)
defpclass
::= '(' 'defpclass'
symbol
args
option
* ')'
referenced by:
pamela
args:
[
symbol
]
args
::= '['
symbol
* ']'
referenced by:
defpclass
defpmethod
defproposition
option:
meta
inherit
modes
fields
methods
transitions
propositions
option
::=
meta
|
inherit
|
modes
|
fields
|
methods
|
transitions
|
propositions
referenced by:
defpclass
defproposition:
(
defproposition
keyword
args
meta
)
defproposition
::= '(' 'defproposition'
keyword
args
meta
* ')'
referenced by:
pamela
meta:
:meta
{
meta-entry
}
meta
::= ':meta' '{'
meta-entry
+ '}'
referenced by:
defproposition
option
meta-entry:
version
icon
depends
doc
meta-entry
::=
version
|
icon
|
depends
|
doc
referenced by:
meta
depends:
:depends
[
dep
]
depends
::= ':depends' '['
dep
* ']'
referenced by:
meta-entry
dep:
[
symbol
string
]
dep
::= '['
symbol
string
']'
referenced by:
depends
icon:
:icon
string
icon
::= ':icon'
string
referenced by:
meta-entry
version:
:version
string
version
::= ':version'
string
referenced by:
meta-entry
doc:
:doc
string
doc
::= ':doc'
string
referenced by:
cond
meta-entry
trans
inherit:
:inherit
[
symbol
]
inherit
::= ':inherit' '['
symbol
+ ']'
referenced by:
option
modes:
:modes
mode-enum
mode-map
modes
::= ':modes' (
mode-enum
|
mode-map
)
referenced by:
option
mode-enum:
[
keyword
]
mode-enum
::= '['
keyword
* ']'
referenced by:
modes
mode-map:
{
mode-init
}
mode-map
::= '{'
mode-init
* '}'
referenced by:
modes
mode-init:
keyword
cond-expr
mode-init
::=
keyword
cond-expr
referenced by:
mode-map
cond-expr:
true
false
not-expr
and-expr
or-expr
implies-expr
equal-expr
gt-expr
ge-expr
lt-expr
le-expr
call-expr
same-expr
propositions-expr
cond-expr
::= 'true'
| 'false'
|
not-expr
|
and-expr
|
or-expr
|
implies-expr
|
equal-expr
|
gt-expr
|
ge-expr
|
lt-expr
|
le-expr
|
call-expr
|
same-expr
|
propositions-expr
referenced by:
and-expr
ask
assert
guard
implies-expr
maintain
mode-init
not-expr
or-expr
post
pre
propositions-expr
tell
unless
when
whenever
and-expr:
(
and
cond-expr
cond-operand
)
and-expr
::= '(' 'and' (
cond-expr
|
cond-operand
)+ ')'
referenced by:
cond-expr
or-expr:
(
or
cond-expr
cond-operand
)
or-expr
::= '(' 'or' (
cond-expr
|
cond-operand
)+ ')'
referenced by:
cond-expr
implies-expr:
(
implies
cond-expr
cond-operand
)
implies-expr
::= '(' 'implies' (
cond-expr
|
cond-operand
)+ ')'
referenced by:
cond-expr
not-expr:
(
not
cond-expr
cond-operand
)
not-expr
::= '(' 'not' (
cond-expr
|
cond-operand
)+ ')'
referenced by:
cond-expr
equal-expr:
(
=
cond-operand
)
equal-expr
::= '(' '='
cond-operand
+ ')'
referenced by:
cond-expr
gt-expr:
(
>
cond-operand
)
gt-expr
::= '(' '>'
cond-operand
+ ')'
referenced by:
cond-expr
ge-expr:
(
>=
cond-operand
)
ge-expr
::= '(' '>='
cond-operand
+ ')'
referenced by:
cond-expr
lt-expr:
(
<
cond-operand
)
lt-expr
::= '(' '<'
cond-operand
+ ')'
referenced by:
cond-expr
le-expr:
(
<=
cond-operand
)
le-expr
::= '(' '<='
cond-operand
+ ')'
referenced by:
cond-expr
same-expr:
(
same
cond-operand
)
same-expr
::= '(' 'same'
cond-operand
+ ')'
referenced by:
cond-expr
call-expr:
(
call
cond-operand
)
call-expr
::= '(' 'call'
cond-operand
+ ')'
referenced by:
cond-expr
propositions-expr:
(
propositions
[
prop-search
]
where
cond-expr
)
propositions-expr
::= '(' 'propositions' '['
prop-search
+ ']' ( 'where'
cond-expr
)? ')'
referenced by:
cond-expr
prop-search:
(
search-constraints
keyword
cond-operand
)
prop-search
::= '('
search-constraints
?
keyword
cond-operand
+ ')'
referenced by:
propositions
propositions-expr
search-constraints:
[
wm
ltm
recency
]
search-constraints
::= '[' ( 'wm' | 'ltm' |
recency
)* ']'
referenced by:
prop-search
cond-operand:
literal
mode-ref
symbol-ref
cond-operand
::=
literal
|
mode-ref
|
symbol-ref
referenced by:
and-expr
call-expr
equal-expr
ge-expr
gt-expr
implies-expr
le-expr
lt-expr
not-expr
or-expr
prop-search
same-expr
mode-ref:
(
mode-of
symbol-ref
keyword
)
mode-ref
::= '(' 'mode-of'
symbol-ref
keyword
')'
referenced by:
argval
cond-operand
expr-argval
field-type
recency:
(
recency
number-ref
)
recency
::= '(' 'recency'
number-ref
')'
referenced by:
search-constraints
fields:
:fields
{
field
}
fields
::= ':fields' '{'
field
* '}'
referenced by:
option
field:
symbol
{
field-init
}
field-type
field
::=
symbol
( '{'
field-init
+ '}' |
field-type
)
referenced by:
fields
field-type:
literal
lvar-ctor
pclass-ctor
mode-ref
symbol-ref
field-type
::=
literal
|
lvar-ctor
|
pclass-ctor
|
mode-ref
|
symbol-ref
referenced by:
field
initial
field-init:
initial
access
observable
consumer
producer
field-init
::=
initial
|
access
|
observable
|
consumer
|
producer
referenced by:
field
initial:
:initial
field-type
initial
::= ':initial'
field-type
referenced by:
field-init
access:
:access
keyword
access
::= ':access'
keyword
referenced by:
field-init
observable:
:observable
boolean
observable
::= ':observable'
boolean
referenced by:
field-init
consumer:
:consumer
boolean
consumer
::= ':consumer'
boolean
referenced by:
field-init
producer:
:producer
boolean
producer
::= ':producer'
boolean
referenced by:
field-init
methods:
:methods
[
defpmethod
]
methods
::= ':methods' '['
defpmethod
* ']'
referenced by:
option
defpmethod:
(
defpmethod
symbol
cond-map
args
fn
between-stmt
)
defpmethod
::= '(' 'defpmethod'
symbol
cond-map
?
args
fn
?
between-stmt
* ')'
referenced by:
methods
transitions:
:transitions
{
transition
}
transitions
::= ':transitions' '{'
transition
* '}'
referenced by:
option
transition:
keyword
trans-map
transition
::=
keyword
trans-map
referenced by:
transitions
cond-map:
{
cond
}
cond-map
::= '{'
cond
* '}'
referenced by:
defpmethod
trans-map:
{
trans
}
trans-map
::= '{'
trans
* '}'
referenced by:
transition
cond:
doc
pre
post
opt-bounds
cost
reward
controllable
primitive
display-name
probability
cond
::=
doc
|
pre
|
post
|
opt-bounds
|
cost
|
reward
|
controllable
|
primitive
|
display-name
|
probability
referenced by:
cond-map
trans:
doc
pre
post
opt-bounds
cost
reward
probability
trans
::=
doc
|
pre
|
post
|
opt-bounds
|
cost
|
reward
|
probability
referenced by:
trans-map
propositions:
:propositions
[
prop-search
]
propositions
::= ':propositions' '['
prop-search
* ']'
referenced by:
option
pre:
:pre
keyword
cond-expr
pre
::= ':pre' (
keyword
|
cond-expr
)
referenced by:
cond
trans
post:
:post
keyword
cond-expr
post
::= ':post' (
keyword
|
cond-expr
)
referenced by:
cond
trans
display-name:
:display-name
string
display-name
::= ':display-name'
string
referenced by:
cond
fn:
ask
assert
choose
choose-whenever
delay
dotimes
maintain
optional
parallel
sequence
slack-parallel
slack-sequence
soft-parallel
soft-sequence
tell
try
unless
when
whenever
method-fn
fn
::=
ask
|
assert
|
choose
|
choose-whenever
|
delay
|
dotimes
|
maintain
|
optional
|
parallel
|
sequence
|
slack-parallel
|
slack-sequence
|
soft-parallel
|
soft-sequence
|
tell
|
try
|
unless
|
when
|
whenever
|
method-fn
referenced by:
choice
defpmethod
dotimes
enter
leave
maintain
optional
parallel
sequence
slack-parallel
slack-sequence
soft-parallel
soft-sequence
try
unless
when
whenever
ask:
(
ask
cond-expr
opt-bounds
)
ask
::= '(' 'ask'
cond-expr
opt-bounds
? ')'
referenced by:
fn
assert:
(
assert
cond-expr
opt-bounds
)
assert
::= '(' 'assert'
cond-expr
opt-bounds
? ')'
referenced by:
fn
choice:
(
choice
choice-opt
fn
)
choice
::= '(' 'choice'
choice-opt
*
fn
')'
referenced by:
choose
choose-whenever
choose:
(
choose
choose-opt
choice
)
choose
::= '(' 'choose'
choose-opt
*
choice
+ ')'
referenced by:
fn
choose-whenever:
(
choose-whenever
choose-opt
choice
)
choose-whenever
::= '(' 'choose-whenever'
choose-opt
*
choice
+ ')'
referenced by:
fn
delay:
(
delay
delay-opt
)
delay
::= '(' 'delay'
delay-opt
* ')'
referenced by:
fn
dotimes:
(
dotimes
natural
fn
)
dotimes
::= '(' 'dotimes'
natural
fn
')'
referenced by:
fn
maintain:
(
maintain
cond-expr
opt-bounds
fn
)
maintain
::= '(' 'maintain'
cond-expr
opt-bounds
?
fn
')'
referenced by:
fn
optional:
(
optional
fn-opt
fn
)
optional
::= '(' 'optional'
fn-opt
*
fn
')'
referenced by:
fn
parallel:
(
parallel
fn-opt
fn
)
parallel
::= '(' 'parallel'
fn-opt
*
fn
+ ')'
referenced by:
fn
sequence:
(
sequence
fn-opt
fn
)
sequence
::= '(' 'sequence'
fn-opt
*
fn
+ ')'
referenced by:
fn
slack-parallel:
(
slack-parallel
fn-opt
fn
)
slack-parallel
::= '(' 'slack-parallel'
fn-opt
*
fn
+ ')'
referenced by:
fn
slack-sequence:
(
slack-sequence
fn-opt
fn
)
slack-sequence
::= '(' 'slack-sequence'
fn-opt
*
fn
+ ')'
referenced by:
fn
soft-parallel:
(
soft-parallel
fn-opt
fn
)
soft-parallel
::= '(' 'soft-parallel'
fn-opt
*
fn
+ ')'
referenced by:
fn
soft-sequence:
(
soft-sequence
fn-opt
fn
)
soft-sequence
::= '(' 'soft-sequence'
fn-opt
*
fn
+ ')'
referenced by:
fn
tell:
(
tell
cond-expr
)
tell
::= '(' 'tell'
cond-expr
')'
referenced by:
fn
try:
(
try
opt-bounds
fn
(
catch
fn
)
)
try
::= '(' 'try'
opt-bounds
?
fn
'(' 'catch'
fn
')' ')'
referenced by:
fn
unless:
(
unless
cond-expr
opt-bounds
fn
)
unless
::= '(' 'unless'
cond-expr
opt-bounds
?
fn
')'
referenced by:
fn
when:
(
when
cond-expr
opt-bounds
fn
)
when
::= '(' 'when'
cond-expr
opt-bounds
?
fn
')'
referenced by:
fn
whenever:
(
whenever
cond-expr
opt-bounds
fn
)
whenever
::= '(' 'whenever'
cond-expr
opt-bounds
?
fn
')'
referenced by:
fn
method-fn:
(
symbol-ref
method-opt
argval
)
method-fn
::= '('
symbol-ref
method-opt
*
argval
* ')'
referenced by:
fn
between-stmt:
between
between-ends
between-starts
between-stmt
::=
between
|
between-ends
|
between-starts
referenced by:
defpmethod
between:
(
between
keyword
keyword
between-opt
)
between
::= '(' 'between'
keyword
keyword
between-opt
+ ')'
referenced by:
between-stmt
between-ends:
(
between-ends
keyword
keyword
between-opt
)
between-ends
::= '(' 'between-ends'
keyword
keyword
between-opt
+ ')'
referenced by:
between-stmt
between-starts:
(
between-starts
keyword
keyword
between-opt
)
between-starts
::= '(' 'between-starts'
keyword
keyword
between-opt
+ ')'
referenced by:
between-stmt
between-opt:
opt-bounds
cost-le
reward-ge
between-opt
::=
opt-bounds
|
cost-le
|
reward-ge
referenced by:
between
between-ends
between-starts
fn-opt
fn-opt:
between-opt
label
fn-opt
::=
between-opt
|
label
referenced by:
choose-opt
delay-opt
optional
parallel
sequence
slack-parallel
slack-sequence
soft-parallel
soft-sequence
choose-opt:
fn-opt
exactly
min
max
choose-opt
::=
fn-opt
|
exactly
|
min
|
max
referenced by:
choose
choose-whenever
delay-opt:
fn-opt
controllable
delay-opt
::=
fn-opt
|
controllable
referenced by:
delay
method-opt:
opt-bounds
label
cost
reward
controllable
method-opt
::=
opt-bounds
|
label
|
cost
|
reward
|
controllable
referenced by:
method-fn
choice-opt:
opt-bounds
label
cost
reward
probability
guard
enter
leave
choice-opt
::=
opt-bounds
|
label
|
cost
|
reward
|
probability
|
guard
|
enter
|
leave
referenced by:
choice
opt-bounds:
:bounds
bounds
opt-bounds
::= ':bounds'
bounds
referenced by:
ask
assert
between-opt
choice-opt
cond
maintain
method-opt
trans
try
unless
when
whenever
label:
:label
keyword
label
::= ':label'
keyword
referenced by:
choice-opt
fn-opt
method-opt
probability:
:probability
number-ref
probability
::= ':probability'
number-ref
referenced by:
choice-opt
cond
trans
cost:
:cost
number-ref
cost
::= ':cost'
number-ref
referenced by:
choice-opt
cond
method-opt
trans
reward:
:reward
number-ref
reward
::= ':reward'
number-ref
referenced by:
choice-opt
cond
method-opt
trans
cost-le:
:cost<=
number-ref
cost-le
::= ':cost<='
number-ref
referenced by:
between-opt
reward-ge:
:reward>=
number-ref
reward-ge
::= ':reward>='
number-ref
referenced by:
between-opt
guard:
:guard
cond-expr
guard
::= ':guard'
cond-expr
referenced by:
choice-opt
controllable:
:controllable
boolean
controllable
::= ':controllable'
boolean
referenced by:
cond
delay-opt
method-opt
primitive:
:primitive
boolean
primitive
::= ':primitive'
boolean
referenced by:
cond
min:
:min
integer
min
::= ':min'
integer
referenced by:
choose-opt
max:
:max
integer
max
::= ':max'
integer
referenced by:
choose-opt
exactly:
:exactly
integer
exactly
::= ':exactly'
integer
referenced by:
choose-opt
enter:
:enter
fn
enter
::= ':enter'
fn
referenced by:
choice-opt
leave:
:leave
fn
leave
::= ':leave'
fn
referenced by:
choice-opt
number-ref:
number
lvar-ctor
symbol-ref
number-ref
::=
number
|
lvar-ctor
|
symbol-ref
referenced by:
cost
cost-le
probability
recency
reward
reward-ge
lvar-ctor:
(
lvar
string
lvar-init
)
lvar-ctor
::= '(' 'lvar' (
string
lvar-init
? )? ')'
referenced by:
bounds
expr
field-type
number-ref
lvar-init:
literal
bounds-literal
lvar-init
::=
literal
|
bounds-literal
referenced by:
lvar-ctor
pclass-ctor:
(
symbol
pclass-ctor-arg
pclass-ctor-option
)
pclass-ctor
::= '('
symbol
pclass-ctor-arg
*
pclass-ctor-option
* ')'
referenced by:
field-type
pclass-ctor-arg:
string
expr
pclass-arg-keyword
boolean
symbol-ref
pclass-ctor-arg
::=
string
|
expr
|
pclass-arg-keyword
|
boolean
|
symbol-ref
referenced by:
pclass-ctor
pclass-ctor-option:
id
plant-part
interface
pclass-ctor-option
::=
id
|
plant-part
|
interface
referenced by:
pclass-ctor
pclass-arg-keyword:
keyword
pclass-arg-keyword
::=
keyword
referenced by:
pclass-ctor-arg
reserved-pclass-ctor-keyword:
:id
:interface
:plant-part
stop-token
reserved-pclass-ctor-keyword
::= ( ':id' | ':interface' | ':plant-part' )
stop-token
no references
id:
:id
argval
id
::= ':id'
argval
referenced by:
pclass-ctor-option
plant-part:
:plant-part
argval
plant-part
::= ':plant-part'
argval
referenced by:
pclass-ctor-option
interface:
:interface
argval
interface
::= ':interface'
argval
referenced by:
pclass-ctor-option
bounds:
bounds-literal
lvar-ctor
bounds
::=
bounds-literal
|
lvar-ctor
referenced by:
opt-bounds
bounds-literal:
[
expr
expr
:infinity
]
bounds-literal
::= '['
expr
(
expr
| ':infinity' ) ']'
referenced by:
bounds
lvar-init
symbol-ref:
symbol
.
symbol-ref
::=
symbol
( '.'
symbol
)*
referenced by:
argval
cond-operand
expr-argval
field-type
method-fn
mode-ref
number-ref
pclass-ctor-arg
symbol:
[A-Z]
[a-z]
[A-Z]
[a-z]
[0-9]
-
symbol
::= [A-Za-z] [A-Za-z0-9#x2D]*
referenced by:
args
defpclass
defpmethod
dep
field
inherit
pclass-ctor
symbol-ref
reserved-symbol:
reserved-string
stop-token
reserved-symbol
::=
reserved-string
stop-token
no references
reserved-string:
and
ask
assert
between
between-ends
between-starts
catch
choice
choose
choose-whenever
defpclass
defpmethod
defproposition
delay
dotimes
false
implies
lvar
maintain
mode-of
not
optional
or
parallel
sequence
slack-parallel
slack-sequence
soft-parallel
soft-sequence
tell
true
try
unless
when
whenever
reserved-string
::= 'and'
| 'ask'
| 'assert'
| 'between'
| 'between-ends'
| 'between-starts'
| 'catch'
| 'choice'
| 'choose'
| 'choose-whenever'
| 'defpclass'
| 'defpmethod'
| 'defproposition'
| 'delay'
| 'dotimes'
| 'false'
| 'implies'
| 'lvar'
| 'maintain'
| 'mode-of'
| 'not'
| 'optional'
| 'or'
| 'parallel'
| 'sequence'
| 'slack-parallel'
| 'slack-sequence'
| 'soft-parallel'
| 'soft-sequence'
| 'tell'
| 'true'
| 'try'
| 'unless'
| 'when'
| 'whenever'
referenced by:
reserved-symbol
stop-token:
whitespace
.
(
)
[
]
{
}
stop-token
::=
whitespace
| '.'
| '('
| ')'
| '['
| ']'
| '{'
| '}'
referenced by:
reserved-keyword
reserved-pclass-ctor-keyword
reserved-symbol
literal:
boolean
string
keyword
number
literal
::=
boolean
|
string
|
keyword
|
number
referenced by:
cond-operand
field-type
lvar-init
expr-argval:
string
expr
safe-keyword
boolean
mode-ref
symbol-ref
expr-argval
::=
string
|
expr
|
safe-keyword
|
boolean
|
mode-ref
|
symbol-ref
no references
argval:
string
number
safe-keyword
boolean
mode-ref
symbol-ref
argval
::=
string
|
number
|
safe-keyword
|
boolean
|
mode-ref
|
symbol-ref
referenced by:
id
interface
method-fn
plant-part
safe-keyword:
keyword
safe-keyword
::=
keyword
referenced by:
argval
expr-argval
reserved-keyword:
:label
:bounds
:cost
:reward
:controllable
stop-token
reserved-keyword
::= ( ':label' | ':bounds' | ':cost' | ':reward' | ':controllable' )
stop-token
no references
keyword:
:
[A-Z]
[a-z]
[0-9]
:
*
.
_
-
keyword
::= ':' [A-Za-z0-9:*._#x2D]+
referenced by:
access
between
between-ends
between-starts
defproposition
label
literal
mode-enum
mode-init
mode-ref
pclass-arg-keyword
post
pre
prop-search
safe-keyword
transition
boolean:
true
false
boolean
::= 'true'
| 'false'
referenced by:
argval
consumer
controllable
expr-argval
literal
observable
pclass-ctor-arg
primitive
producer
string:
"
[^"]
"
string
::= '"' [^"]* '"'
referenced by:
argval
dep
display-name
doc
expr-argval
icon
literal
lvar-ctor
pclass-ctor-arg
version
expr:
number
lvar-ctor
(
multiply-expr
divide-expr
add-expr
subtract-expr
)
expr
::=
number
|
lvar-ctor
| '(' (
multiply-expr
|
divide-expr
|
add-expr
|
subtract-expr
) ')'
referenced by:
add-expr
bounds-literal
divide-expr
expr-argval
multiply-expr
pclass-ctor-arg
subtract-expr
multiply-expr:
*
expr
multiply-expr
::= '*'
expr
+
referenced by:
expr
divide-expr:
/
expr
divide-expr
::= '/'
expr
+
referenced by:
expr
add-expr:
+
expr
add-expr
::= '+'
expr
+
referenced by:
expr
subtract-expr:
-
expr
subtract-expr
::= '-'
expr
+
referenced by:
expr
number:
float
integer
number
::=
float
|
integer
referenced by:
argval
expr
literal
number-ref
float:
-
[0-9]
.
[0-9]
.
[0-9]
E
+
-
[0-9]
float
::= '-'? ( [0-9]+
.
| [0-9]
.
[0-9]+
E
[+#x2D] ) [0-9]+
referenced by:
number
integer:
-
[0-9]
integer
::= '-'? [0-9]+
referenced by:
exactly
max
min
number
natural:
[0-9]
natural
::= [0-9]+
referenced by:
dotimes
whitespace:
;
.
,
whitespace
::= ( [, ]+ | ';'
.
* )+
referenced by:
stop-token
... generated by
RR - Railroad Diagram Generator
R
R