Accessors are functions dynamically generated on objects to access the member properties defined in PropertySheets. They also can access properties with complex relations to current object (like the default address of a related assignment of a person).
TODO
- boolean testers (is)
- "strange" accessors (...Ids, ...Values)
Actually, those accessors just don't follow the naming conventions and are (should be ?) just aliases to ...IdList and ...ValueList.
- Finish describing the grammar
Base elements
Those elements serve as a base to the grammar definition.
lowercase ::= "a"..."z"
digit ::= "0"..."9"
property_id ::= lowercase (lowercase | "_")*
private ::= "_"
getter ::= "get"
setter ::= "set"
tester ::= "has"
default ::= "default"
translation ::= "translated"
translation_domain ::= "translation_domain"
list ::= "list"
set ::= "set"
property_super_private ::= "base"
category_super_private ::= "category"
Slot definition
Each slot can contain a value (or nothing).
private_slot ::= ( | private )
super_private_slot ::= ( | property_super_private | category_super_private )
type_slot ::= ( get | set | has )
translation_slot ::= ( | translation )
default_slot ::= ( | default )
cardinality_slot ::= ( | list | set | "s")
Slot assembly
accessor_id ::= private_slot super_private_slot type_slot "_" to finish...