This shows you the differences between two versions of the page.
Next revision | Previous revision Last revision Both sides next revision | ||
syntax [2011/09/26 09:53] Patrick Michel created |
syntax [2011/10/02 00:26] Patrick Michel |
||
---|---|---|---|
Line 9: | Line 9: | ||
</code> | </code> | ||
- | In general a pattern is a sequence of ''element'' and ''attribute'' declarations: | + | In general, a pattern is a sequence of ''element'' and ''attribute'' declarations: |
<code xcend> | <code xcend> | ||
- | element <name> (?|*|+)? { | + | element <name> (?|* (<name>)?)? { |
<body> | <body> | ||
} | } | ||
Line 23: | Line 23: | ||
</code> | </code> | ||
- | Elements can be optional, repeated or repeated but have to appear at least once. Attributes can only be optional. | + | Elements can be //optional// or //repeated//, attributes can only be optional. For repeated elements, the implicit disambiguation identifier can be renamed and accessed like a normal attribute. |
+ | You can also specify choices between elements and attributes, which means that only one has to exist. | ||
+ | <code xcend> | ||
+ | element choice { | ||
+ | element a {} | element b {} | attribute c {} | ||
+ | } | ||
+ | </code> | ||
A body can either be empty, pattern, type or enumeration declaration: | A body can either be empty, pattern, type or enumeration declaration: | ||
<code xcend> | <code xcend> | ||
- | element types { | + | element empty { |
} | } | ||