The formal syntax for Kawa Scheme is written in an extended BNF. Non–terminals are written like-this. Case is insignificant for non–terminal names. Literal text (terminals) are written like this.

All spaces in the grammar are for legibility.

The following extensions to BNF are used to make the description more concise: thing* or thing... both mean zero or more occurrences of thing, and thing+ means at least one thing.

Some non-terminal names refer to the Unicode scalar values of the same name: character-tabulation (U+0009), linefeed (U+000A), carriage-return (U+000D), line-tabulation (U+000B), form-feed (U+000C), space (U+0020), next-line (U+0085), line-separator (U+2028), and paragraph-separator (U+2029).