Examples
US Postal Address
US Postal Address
Diagram(
Sequence(
Optional(
Sequence(
NonTerminal('Company Name', '', '', 'optional-path'),
Terminal(',', '', '', 'optional-path')
),
'skip'
),
NonTerminal('Addressee Name'),
Terminal(','),
NonTerminal('Street One'),
Terminal(','),
Optional(
Sequence(
NonTerminal('Street Two', '', '', 'optional-path'),
Terminal(',', '', '', 'optional-path')
),
'skip'),
NonTerminal('City'),
Terminal(','),
NonTerminal('State'),
Terminal(','),
NonTerminal('Postal Code')
)
)
Cupcake Purchase
Cupcake Purchase
Diagram(
Sequence(
Group(
Choice(
1,
NonTerminal('Cherry'),
NonTerminal('Chocolate'),
NonTerminal('Dark Chocolate')
),
'Which cupcake?'
),
Group(
Choice(
1,
NonTerminal('Vanilla'),
NonTerminal('Chocolate'),
NonTerminal('Strawberry')
),
'Which icing?'
),
Group(
ZeroOrMore(
NonTerminal('Rainbow Sprinkles','','','optional-path'),
Comment('Up to 4 shakes'),
'skip'
),
'Sprinkles?'
),
NonTerminal('Pay'),
NonTerminal('Eat'),
Comment('Yummm!')
)
)
Sonnet - English Form
Sonnet - English Form
Diagram(
Stack(
Group(
Sequence( NonTerminal( "Rhyme A Line" ), NonTerminal( "Rhyme B Line" ), NonTerminal( "Rhyme A Line" ), NonTerminal( "Rhyme B Line" ) ),
"Quatrain 1"
),
Group(
Sequence( NonTerminal( "Rhyme C Line" ), NonTerminal( "Rhyme D Line" ), NonTerminal( "Rhyme C Line" ), NonTerminal( "Rhyme D Line" ) ),
"Quatrain 2"
),
Group(
Sequence( NonTerminal( "Rhyme E Line" ), NonTerminal( "Rhyme F Line" ), NonTerminal( "Rhyme E Line" ), NonTerminal( "Rhyme F Line" ) ),
"Quatrain 3"
),
Group(
Sequence( NonTerminal( "Rhyme G Line" ), NonTerminal( "Rhyme G Line" ) ),
"Couplet"
)
)
)
Animal Picker
Animal Picker
Diagram(
NonTerminal("Number of Legs?"),
Choice(1,
Sequence(
Comment("2"),
NonTerminal("Has Wings?"),
Choice(1,
Sequence(
Comment("Yes"),
NonTerminal("Bird"),
),
Sequence(
Comment("No"),
NonTerminal("Human")
)
)
),
Sequence(
Comment("4"),
NonTerminal("Purrs or Roars?"),
Choice(1,
Sequence(
Comment("Purrs"),
NonTerminal("Cat")
),
Sequence(
Comment("Roars"),
NonTerminal("Lion")
),
Sequence(
Comment("Neither"),
NonTerminal("Dog")
)
)
),
Sequence(
Comment("6"),
NonTerminal("Color?"),
Choice(0,
Sequence(
Comment("Black"),
NonTerminal("Cricket")
),
Sequence(
Comment("Green"),
NonTerminal("Grasshopper")
),
Sequence(
Comment("Black and Yellow"),
NonTerminal("Hornet")
),
Sequence(
Comment("Other"),
NonTerminal("Beetle")
)
)
)
)
)
Software Development Method
Software Development Method
Diagram(
OneOrMore(
Sequence(
OneOrMore(
MultipleChoice(
1,
'all',
NonTerminal('Design'),
NonTerminal('Model'),
NonTerminal('Mock')
)
),
NonTerminal('Build'),
OneOrMore(
Sequence(
OneOrMore(
NonTerminal('Test'),
NonTerminal('Debug', '', '', 'recurring-path')
),
NonTerminal('Publish')
),
NonTerminal('Find Bug', '', '', 'recurring-path')
)
),
Choice(
0,
NonTerminal('Determine New Features', '', '', 'recurring-path')
)
)
)
Number
Number
Diagram(
Choice(
0,
Skip(),
Terminal('+', '', '', 'optional-path'),
Terminal('-', '', '', 'optional-path')
),
Choice(
1,
OneOrMore(
NonTerminal('digit')
),
Sequence(
'.',
OneOrMore(
NonTerminal('digit')
)
),
Sequence(
OneOrMore(
NonTerminal('digit')
),
'.',
OneOrMore(
NonTerminal('digit')
)
)
),
Choice(
0,
Skip(),
Sequence(
Choice(
0,
Terminal('e', '', '', 'optional-path'),
Terminal('E', '', '', 'optional-path')
),
Choice(
0,
Skip(),
Terminal('+', '', '', 'optional-path'),
Terminal('-', '', '', 'optional-path')
),
OneOrMore(
NonTerminal('digit', '', '', 'optional-path')
)
)
)
)
String
String
Diagram(
Choice(
0,
Sequence(
'"',
Choice(
0,
OneOrMore(
Choice(
0,
NonTerminal('not " or \\'),
NonTerminal('escape')
)
),
Skip()
),
'"'
),
Sequence(
"'",
Choice(
0,
OneOrMore(
Choice(
0,
NonTerminal("not ' or \\"),
NonTerminal('escape')
)
),
Skip()
),
"'"
)
)
)
CSS Unicode Range
CSS Unicode Range
Diagram(
Choice(
0,
'U',
Terminal('u', '', '', 'optional-path')
),
'+',
Choice(
1,
Group(
Sequence(
OneOrMore(
NonTerminal('hex digit'),
Comment('1-6 times')
)
),
'single code point'
),
Group(
Sequence(
OneOrMore(
NonTerminal('hex digit'),
Comment('1-6 times')
),
'-',
OneOrMore(
NonTerminal('hex digit'),
Comment('1-6 times')
)
),
'code point range'
),
Group(
Sequence(
ZeroOrMore(
NonTerminal('hex digit', '', '', 'optional-path'),
Comment('1-5 times'),
'skip'
),
OneOrMore(
'?',
Comment('repeated so the total length is 6 digits')
)
),
'wildcard range'
)
)
)
SQL Statement
SQL Statement
Diagram(
Stack(
Sequence(
'SELECT',
Optional(
Terminal('DISTINCT','','','optional-path'),
'skip'
),
Choice(
0,
OneOrMore(
Choice(
0,
Sequence(
NonTerminal('field name'),
Optional(
Sequence(
Terminal('AS', '', '', 'optional-path'),
NonTerminal('alias', '', '', 'optional-path')
),
'skip'
)
),
Sequence(
NonTerminal('expression', '', '', 'optional-path'),
Optional(
Sequence(
Terminal('AS', '', '', 'optional-path'),
NonTerminal('alias', '', '', 'optional-path')
),
'skip'
)
)
),
Terminal(',','','','recurring-path')
),
Terminal('*','','','optional-path')
),
'FROM',
NonTerminal('table name'),
Optional(
Sequence(
Terminal('AS', '', '', 'optional-path'),
NonTerminal('alias', '', '', 'optional-path')
),
'skip'
)
),
Sequence(
Optional(
Sequence(
Terminal('WHERE','','','optional-path'),
OneOrMore(
NonTerminal('condition','','','optional-path'),
Choice(
0,
Terminal('AND','','','recurring-path'),
Terminal('OR','','','recurring-path')
)
)
),
'skip'
),
Optional(
Sequence(
Terminal('GROUP BY','','','optional-path'),
OneOrMore(
NonTerminal('expressions','','','optional-path'),
Choice(
0,
Terminal('AND','','','recurring-path'),
Terminal('OR','','','recurring-path')
)
)
),
'skip'
),
Optional(
Sequence(
Terminal('HAVING','','','optional-path'),
OneOrMore(
NonTerminal('condition','','','optional-path'),
Choice(
0,
Terminal('AND','','','recurring-path'),
Terminal('OR','','','recurring-path')
)
)
),
'skip'
),
),
Sequence(
Optional(
Sequence(
Terminal('ORDER BY','','','optional-path'),
OneOrMore(
Choice(
0,
Sequence(
NonTerminal('field name','','','optional-path'),
Choice(
0,
Skip(),
Terminal('ASC','','','optional-path'),
Terminal('DESC','','','optional-path')
)
),
Sequence(
NonTerminal('expression','','','optional-path'),
Choice(
0,
Skip(),
Terminal('ASC','','','optional-path'),
Terminal('DESC','','','optional-path')
)
)
),
Terminal(',','','','recurring-path')
)
),
'skip'
),
Optional(
Sequence(
Terminal('LIMIT','','','optional-path'),
Choice(
0,
NonTerminal('count','','','optional-path'),
Terminal('ALL','','','optional-path')
)
),
'skip'
),
Optional(
Sequence(
Terminal('OFFSET','','','optional-path'),
NonTerminal('start','','','optional-path'),
Optional(
Terminal('ROWS','','','optional-path'),
'skip'
)
),
'skip'
)
)
)
)
Order Shipment Advice
Order Shipment Advice
Diagram(
Stack(
Sequence(
NonTerminal('customerId'),
NonTerminal('batchId'),
NonTerminal('batchDate')
),
OneOrMore(
Group(
Stack(
Sequence(
NonTerminal('customerOrderNumber'),
Optional(
Group(
Sequence(
NonTerminal('name', '', '', 'optional-path'),
NonTerminal('purchaseOrderNumber', '', '', 'optional-path'),
Optional(
NonTerminal('purchaseOrderDate', '', '', 'optional-path'),
'skip'
)
),
'tradingPartner'
),
'skip'
),
Group(
Sequence(
NonTerminal('carrier'),
NonTerminal('service')
),
'transport'
)
),
Group(
Sequence(
Optional(
NonTerminal('companyName', '', '', 'optional-path'),
'skip'
),
NonTerminal('contactName'),
NonTerminal('streetOne'),
Optional(
NonTerminal('streetTwo', '', '', 'optional-path'),
'skip'
),
NonTerminal('city'),
NonTerminal('state'),
NonTerminal('postalCode'),
Optional(
NonTerminal('countryCode', '', '', 'optional-path'),
'skip'
)
),
'shipToAddress'
),
OneOrMore(
Group(
Sequence(
NonTerminal('item'),
NonTerminal('quantity'),
NonTerminal('uom'),
Optional(
NonTerminal('lot', '', '', 'optional-path'),
'skip'
)
),
'detail'
)
)
),
'shipmentAdvice'
)
)
)
)