BNF

Productions are in normal type, linked to their definitions.
Regular expressions are in italics
Literal characters in quoted in bold
void means an empty production.

barename

[A-Z_a-zÀ-ÖØ-öø-˿Ͱ-ͽͿ-῿‌-‍⁰-↏Ⰰ-⿯、-퟿豈-﷏ﷰ-�𐀀-󯿿][\-0-9A-Z_a-z·À-ÖØ-öø-ͽͿ-῿‌-‍‿-⁀⁰-↏Ⰰ-⿯、-퟿豈-﷏ﷰ-�𐀀-󯿿]*

barename_csl

barename barename_csl_tail

void

barename_csl_tail

"," barename barename_csl_tail

void

boolean

"@false"

"@true"

date

[0-9][0-9]-[0-9][0-9]-[0-9][0-9]Z?

dateTime

[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9](T[0-9][0-9]:[0-9][0-9](:[0-9][0-9](\.[0-9]*)?)?)?Z?

decimal

[-+]?[0-9]+\.[0-9]*

declaration

"@base" explicituri

"@keywords" barename_csl

"@prefix" prefix explicituri

document

statements_optional EOF

double

[-+]?[0-9]+(\.[0-9]+)?([eE][-+]?[0-9]+)

dtlang

"@" langcode

"^^" symbol

void

existential

"@forSome" symbol_csl

explicituri

<[^>]*>

expression

pathitem pathtail

formulacontent

statementlist

integer

[-+]?[0-9]+

langcode

[a-z]+(-[a-z0-9]+)*

literal

string dtlang

numericliteral

decimal

double

integer

rational

object

expression

objecttail

"," object objecttail

void

pathitem

boolean

literal

numericliteral

quickvariable

symbol

"(" pathlist ")"

"[" propertylist "]"

"{" formulacontent "}"

pathlist

expression pathlist

void

pathtail

"!" expression

"^" expression

void

predicate

expression

"<="

"="

"=>"

"@a"

"@has" expression

"@is" expression "@of"

prefix

([A-Z_a-zÀ-ÖØ-öø-˿Ͱ-ͽͿ-῿‌-‍⁰-↏Ⰰ-⿯、-퟿豈-﷏ﷰ-�𐀀-󯿿][\-0-9A-Z_a-z·À-ÖØ-öø-ͽͿ-῿‌-‍‿-⁀⁰-↏Ⰰ-⿯、-퟿豈-﷏ﷰ-�𐀀-󯿿]*)?:

propertylist

predicate object objecttail propertylisttail

void

propertylisttail

";" propertylist

void

qname

(([A-Z_a-zÀ-ÖØ-öø-˿Ͱ-ͽͿ-῿‌-‍⁰-↏Ⰰ-⿯、-퟿豈-﷏ﷰ-�𐀀-󯿿][\-0-9A-Z_a-z·À-ÖØ-öø-ͽͿ-῿‌-‍‿-⁀⁰-↏Ⰰ-⿯、-퟿豈-﷏ﷰ-�𐀀-󯿿]*)?:)?[A-Z_a-zÀ-ÖØ-öø-˿Ͱ-ͽͿ-῿‌-‍⁰-↏Ⰰ-⿯、-퟿豈-﷏ﷰ-�𐀀-󯿿][\-0-9A-Z_a-z·À-ÖØ-öø-ͽͿ-῿‌-‍‿-⁀⁰-↏Ⰰ-⿯、-퟿豈-﷏ﷰ-�𐀀-󯿿]*

quickvariable

\?[A-Z_a-zÀ-ÖØ-öø-˿Ͱ-ͽͿ-῿‌-‍⁰-↏Ⰰ-⿯、-퟿豈-﷏ﷰ-�𐀀-󯿿][\-0-9A-Z_a-z·À-ÖØ-öø-ͽͿ-῿‌-‍‿-⁀⁰-↏Ⰰ-⿯、-퟿豈-﷏ﷰ-�𐀀-󯿿]*

rational

integer "/" unsignedint

simpleStatement

subject propertylist

statement

declaration

existential

simpleStatement

universal

statementlist

statement statementtail

void

statements_optional

statement "." statements_optional

void

statementtail

"." statementlist

void

string

("""[^"\\]*(?:(?:\\.|"(?!""))[^"\\]*)*""")|("[^"\\]*(?:\\.[^"\\]*)*")

subject

expression

symbol

explicituri

qname

symbol_csl

symbol symbol_csl_tail

void

symbol_csl_tail

"," symbol symbol_csl_tail

void

universal

"@forAll" symbol_csl

unsignedint

[0-9]+