add a domain element to the topic
add a domain element to the topic
assoc : role
assoc : role
optional attributes
optional attributes
true or false constants
true or false constants
single value expressions, where != 0 is true and != null is true
single value expressions, where != 0 is true and != null is true
pattern match for ent.met
pattern match for ent.met
ent.met (parms)
ent.met (parms)
msg name (a,b) : String
msg name (a,b) : String
main entry point for an expression
main entry point for an expression
this one used for fiddles, see FiddleParser
this one used for fiddles, see FiddleParser
this is not parsed in the context of a wiki, it's just for a fiddle display...
a regular ident but also something in single quotes '[email protected] and - is a good ident eh'
a regular ident but also something in single quotes '[email protected] and - is a good ident eh'
allow JSON ids with double quotes, single quotes or no quotes
allow JSON ids with double quotes, single quotes or no quotes
assoc : role
assoc : role
a line of wiki (to CR/LF)
a line of wiki (to CR/LF)
this one used for fiddles, see FiddleParser
this one used for fiddles, see FiddleParser
this is not parsed in the context of a wiki, it's just for a fiddle display...
.mock a.role (attrs) => z.role (attrs)
this one used for fiddles, see FiddleParser
this one used for fiddles, see FiddleParser
just for display, not in the context of a wiki
.msg object.func (a,b) : (out)
a sequence of lines
a sequence of lines
def name (a,b) : String
def name (a,b) : String
todo is not working
todo is not working
optional attributes
optional attributes
optional script body
optional script body
:<>type[kind]* <> means it's a ref, not ownership * means it's a list
:<>type[kind]* <> means it's a ref, not ownership * means it's a list
an optional line
an optional line
.anno (params)
.anno (params)
annotation - applied to the next element. you can have just one for now
annotations have to be in the same page and are claimed by the first element that follows
use this to parse wiki markdown on the spot - it is meant for short strings within like a cell or something
use this to parse wiki markdown on the spot - it is meant for short strings within like a cell or something
parm assignment, left side can be a[5].name, useful in a $val
parm assignment, left side can be a[5].name, useful in a $val
.expect object.func (a,b)
.expect object.func (a,b)
.assoc name a:role -> z:role
.assoc name a:role -> z:role
parm definition / assignment
parm definition / assignment
name:<>type[kind]*~=default
<> means it's a ref, not ownership * means it's a list
optional script body
optional script body
simple ident = expr assignemtn when calling
simple ident = expr assignemtn when calling
.class X [T] (a,b:String) extends A,B {}
.class X [T] (a,b:String) extends A,B {}
.func name (a,b) : String
.func name (a,b) : String
.expect object.func (a,b)
.expect object.func (a,b)
.flow e.a => expr
.flow e.a => expr
- text - i.e.
- text - i.e. step description
- text - i.e.
- text - i.e. step description todo is not working
.match a.role (attrs) // not used
.match a.role (attrs) // not used
condition - bool expr
condition - bool expr
name:type[kind] OPerator xx means it's a list
name:type[kind] OPerator xx means it's a list
pmatch is more than just a simple conditional expression
.msg object.func (a,b)
.msg object.func (a,b)
An NVP is either the spec or an instance of a function call, a message, a data object... whatever...
.receive object.func (a,b)
.receive object.func (a,b)
An NVP is either the spec or an instance of a function call, a message, a data object... whatever...
.option name:type=value
.option name:type=value
use them to set options
.when <tags> a.role (attrs) => z.role (attrs) tags are optional and could be rule, mock, model, impl etc - rule is the default for execution - mock is for mocks - others like model or impl are specific
.when <tags> a.role (attrs) => z.role (attrs) tags are optional and could be rule, mock, model, impl etc - rule is the default for execution - mock is for mocks - others like model or impl are specific
ent.met - qualified ent so at least two elements
ent.met - qualified ent so at least two elements
(ent, act, fullString)
qualified idents, .
qualified idents, . notation, parsed as a single string
p.a.ent.met - qualified ent so at least two elements
p.a.ent.met - qualified ent so at least two elements
(ent, act, fullString)
provide a realm
provide a realm
qualified idents, .
qualified idents, . notation, parsed as a list
(Changed in version 2.9.0) The p0
call-by-name arguments is evaluated at most once per constructed Parser object, instead of on every need that arises during parsing.
A simple parser for diesel specs
DomParser is the actual Diesel/Dom parser. We extend from it to include its functionality and then we add its parsing rules with withBlocks()