Rule Child Options

GigleRcOptionSetting :=

| <empty>

| '<' ol::GigleRcOptionTermList '>'

GigleRcOptionTermList :=

| GigleRcOptionTerm

| GigleRcOptionTermList ',' GigleRcOptionTerm

GigleRcOptionTerm :=

| 'static'

| 'noexpand'

| 'nodestroy'

| 'nofill'

| 'norelease'

These sets of productions starting from the nonterminal GigleRcOptionSetting, which are used for options for a rule child. Currently only options supported are 'static', 'noexpand', 'nodestroy', 'nofill' and 'norelease'. These options are by default not enabled. Multiple options are separated by ','s. The whole item option setting section is wrapped in '<' and '>' (unless it is empty).

'static' indicates this child is a static array (i.e. not dynamically allocated), only available for array type children.

'noexpand' indicates in the generator the child is not implicitly generated when it is of nonterminal pointer type; in addition, if it is an array, the array space is not allocated (need manual allocation).

'nodestroy' indicates in the destructor the child is not implicitly deleted when it is a of nonterminal pointer type; in addition, if it is an array, the array space is not deallocation (need manual deallocation).

'nofill' indicates in the generator the child is not implicitly generated when it is pointer type (same as 'noexpand' for non-array children).

'norelease' indicates in the destructor the child is not implicitly deleted when it is pointer type (same as 'nodestroy' for non-array children).

Discussions and nuances about rule child options can be seen here.