regular_expression_engine
datastore grammar version 99.1
| model | 106 | application | 
|---|---|---|
| interface | 20 | interface | 
| auto-webclient | yar.11 | generator_settings | 
| generator_annotations | ||
| phrases | ||
| query | ||
| translations | ||
| parameters | ||
| connector | 36.5 | processor | 
| variables | ||
| datastore | 116 | consumed_interfaces_mapping | 
| provided_interface_implementation | ||
| migration_mapping | ||
| regular_expression_engine | ||
| relational-database-bridge | 110 | database | 
| database_transformation | ||
| sql-mirror | 116 | sql_mapping | 
| webclient | yar.11.0 | views | 
| widget | ||
| client bindings | ||
| gui_model | ||
| phrases | ||
| translations | ||
| settings | ||
| parameters | ||
| default features | ||
| main | ||
| query | ||
| project-build-environment | 41 | wiring | 
| deployment | 
'library': dictionary { [ regexp ]
	'captures': dictionary { [ @ ]
		'next': stategroup = node-switch successor (
			| node = 'yes' { 'next' = successor }
			| none = 'no'
		)
		'pieces': component 'pieces'
	}
	'first': reference = first
}
'match list' {
	'type': stategroup (
		'code point' {
			'value': text
		}
		'code point range' {
			'begin value': text
			'end value': [ - ] text
		}
	)
	'tail': stategroup (
		'list' {
			'tail': component 'match list'
		}
		'none' { }
	)
}
'bracket expression' { [ [, ] ]
	'match type': stategroup (
		'match' { }
		'mismatch' { [ ^ ] }
	)
	'list': component 'match list'
}
'atom' {
	'type': stategroup (
		'bracket expression' {
			'expression': component 'bracket expression'
		}
		'any code point' { [ . ] }
		'code point' {
			'value': text
		}
	)
}
'atom list' {
	'atom': component 'atom'
	'tail': stategroup (
		'list' {
			'tail': component 'atom list'
		}
		'none' { }
	)
}
'piece' {
	'capture': stategroup (
		'yes' { [ (, ) ]
			'atoms': component 'atom list'
		}
		'no' {
			'atom': component 'atom'
		}
	)
	'repeat': stategroup (
		'once' { }
		'wild card' {
			'type': stategroup (
				'optional' { [ ? ] }
				'repeater' {
					'allow no match': stategroup (
						'yes' { [ * ] }
						'no' { [ + ] }
					)
				}
			)
		}
		'bound' { [ {, } ]
			'min': integer
			'type': stategroup (
				'exact' { }
				'range' { [ , ]
					'type': stategroup (
						'unlimited' { }
						'limited' {
							'max': integer
						}
					)
				}
			)
		}
	)
}