XCend File Syntax

The page is incomplete and outdated.

A XCend file consists mainly of a pattern, which has to be an element at the root:

element <name> {
  <body>
}

In general, a pattern is a sequence of element and attribute declarations:

element <name> (?|* (<name>)?)? {
  <body>
}
 
# and
 
attribute <name> (?)? {
  <body>
}

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.

element choice {
  element a {} | element b {} | attribute c {}
}

A body can either be empty, pattern, type or enumeration declaration:

element empty {
}
 
# and
 
element types {
  string | integer | ident
}
 
# and
 
element enumeration {
  "Monday" | "Tuesday" | "Wednesday" | "Thursday" | "Friday"
}