Grammar
An ABNF grammar (family) of C for use by tools.
Since the conrete syntax varies slightly based on the C version, we actually define a family of grammars,
parameterized over the C version.
The grammar family is defined using the files grammar/*.abnf,
which contain various components which are parsed into ACL2 representations
and combined into full grammars parameterized by the versions.
This parameterization is actually work in progress:
currently there is a single grammar file,
but we plan to split and differentiate it soon.
the ABNF notation can capture well
the notation described in [C23:6.1].
Our ABNF grammar rules are as similar as possible to
the grammar rules in [C17] and [C23], for the standard constructs.
The GCC constructs are captured based on [GCCM] and [GCCL],
but these documents do not use a grammar notation,
so the relationship is less direct than for the standard constructs.
However, we depart from the official syntax
when needed to fulfill the purpose of our C syntax for tools;
see syntax-for-tools.
[C23] presents a lexical grammar] [C23:A.2]
and a phrase structure grammar [C23:A.3].
This is a typical two-level grammar structure for programming languages:
the first grammar describes how a sequence of characters
is organized into lexical units (identifiers, constants, etc.),
and the second grammar describes how the sequence of those lexical units
is organized into higher-level constructs (expressions, statements, etc.).
In C, the lexical organization is a more complicated than other languages,
because of preprocessing [C23:A.4] and other features.
In fact, the complete syntactic (and semantic) processing of code
is described as consisting of 8 translation phases [C23:5.2.1.2].
Since our grammar formulation aims at capturing at the same time
the phrase structure of the code and some preprocessing constructs,
we regard our grammar rules as defining just two phases:
one for the lexical organization
(which therefore includes both tokens and some preprocessing tokens),
and one for a phrase structure
that may also include preprocessing constructs
(which therefore is an extension of the phrase structure grammar in [C23]).
Our ABNF grammar rules doe not consider
the trigraph sequences handled in the first phase in [C23:5.2.1.2]
and the splicing of lines in the second phase in [C23:5.2.1.2].
These are simple transformations that can be performed
prior to the processing described by our ABNF grammar rules,
along with UTF-8 decoding of bytes into Unicode scalar values.
Our ABNF grammar rules do not capture the requirement that
a non-empty file ends with a new-line character
(see phase 3 in [C23:5.2.1.2]);
this can be easily enforced outside the grammar as well.
Phase 6 in [C23:5.2.1.2] requires that
adjacent string literals are concatenated.
This does not affect the lexing of the code,
since string literals are tokens,
but the parser needs to accept adjacent string literals.
In our (phrase structure) grammar, we accommodate this
by allowing one or more string literals
where the grammar in [C23] allows one
(the phrase grammar in [C23] corresponds to translation phase 7,
which comes after adjacent string literal concatenation in phase 6).
See the documentation comments in the files grammar/*.abnf
for more specific details about the grammar rules.
Subtopics
- Cst-basic-character-not-single-quote-or-backslash-conc?
- Cst-basic-character-not-double-quote-or-backslash-conc?
- Cst-preprocessing-token-conc?
- Cst-statement-conc?
- Cst-basic-character-not-star-or-slash-conc?
- Cst-basic-character-not-greater-than-conc?
- Cst-basic-character-not-double-quote-conc?
- Cst-basic-character-not-star-conc?
- Cst-basic-character-conc?
- Cst-white-space-conc?
- Cst-character-not-single-quote-or-backslash-or-new-line-conc?
- Cst-character-not-double-quote-or-backslash-or-new-line-conc?
- Cst-escape-sequence-conc?
- Cst-token-conc?
- Cst-character-not-greater-than-or-new-line-conc?
- Cst-character-not-double-quote-or-new-line-conc?
- Cst-type-qualifier-or-attribute-specifier-conc?
- Cst-lexeme-conc?
- Cst-constant-conc?
- Cst-control-character-conc?
- Cst-character-not-star-or-slash-conc?
- Cst-character-not-single-quote-or-backslash-or-new-line-conc2-rep-elem
- Cst-character-not-single-quote-or-backslash-or-new-line-conc1-rep-elem
- Cst-character-not-double-quote-or-backslash-or-new-line-conc2-rep-elem
- Cst-character-not-double-quote-or-backslash-or-new-line-conc1-rep-elem
- Cst-character-not-single-quote-or-backslash-or-new-line-conc2-rep
- Cst-character-not-single-quote-or-backslash-or-new-line-conc1-rep
- Cst-character-not-double-quote-or-backslash-or-new-line-conc2-rep
- Cst-character-not-double-quote-or-backslash-or-new-line-conc1-rep
- Cst-character-not-single-quote-or-backslash-or-new-line-conc2
- Cst-character-not-single-quote-or-backslash-or-new-line-conc1
- Cst-character-not-new-line-conc?
- Cst-character-not-double-quote-or-backslash-or-new-line-conc2
- Cst-character-not-double-quote-or-backslash-or-new-line-conc1
- Cst-basic-character-not-single-quote-or-backslash-conc5-rep-elem
- Cst-basic-character-not-single-quote-or-backslash-conc5-rep
- Cst-basic-character-not-single-quote-or-backslash-conc4-rep-elem
- Cst-basic-character-not-single-quote-or-backslash-conc4-rep
- Cst-basic-character-not-single-quote-or-backslash-conc3-rep-elem
- Cst-basic-character-not-single-quote-or-backslash-conc3-rep
- Cst-basic-character-not-single-quote-or-backslash-conc2-rep-elem
- Cst-basic-character-not-single-quote-or-backslash-conc2-rep
- Cst-basic-character-not-single-quote-or-backslash-conc1-rep-elem
- Cst-basic-character-not-single-quote-or-backslash-conc1-rep
- Cst-basic-character-not-double-quote-or-backslash-conc5-rep-elem
- Cst-basic-character-not-double-quote-or-backslash-conc5-rep
- Cst-basic-character-not-double-quote-or-backslash-conc4-rep-elem
- Cst-basic-character-not-double-quote-or-backslash-conc4-rep
- Cst-basic-character-not-double-quote-or-backslash-conc3-rep-elem
- Cst-basic-character-not-double-quote-or-backslash-conc3-rep
- Cst-basic-character-not-double-quote-or-backslash-conc2-rep-elem
- Cst-basic-character-not-double-quote-or-backslash-conc2-rep
- Cst-basic-character-not-double-quote-or-backslash-conc1-rep-elem
- Cst-basic-character-not-double-quote-or-backslash-conc1-rep
- Cst-list-list-conc-matchp$
- Cst-floating-constant-conc?
- Cst-character-not-star-conc?
- Cst-character-not-greater-than-or-new-line-conc2-rep-elem
- Cst-character-not-greater-than-or-new-line-conc1-rep-elem
- Cst-character-not-double-quote-or-new-line-conc2-rep-elem
- Cst-character-not-double-quote-or-new-line-conc1-rep-elem
- Cst-basic-character-not-single-quote-or-backslash-conc5
- Cst-basic-character-not-single-quote-or-backslash-conc4
- Cst-basic-character-not-single-quote-or-backslash-conc3
- Cst-basic-character-not-single-quote-or-backslash-conc2
- Cst-basic-character-not-single-quote-or-backslash-conc1
- Cst-basic-character-not-double-quote-or-backslash-conc5
- Cst-basic-character-not-double-quote-or-backslash-conc4
- Cst-basic-character-not-double-quote-or-backslash-conc3
- Cst-basic-character-not-double-quote-or-backslash-conc2
- Cst-basic-character-not-double-quote-or-backslash-conc1
- Cst-type-qualifier-or-attribute-specifier-conc2-rep-elem
- Cst-type-qualifier-or-attribute-specifier-conc1-rep-elem
- Cst-list-list-alt-matchp$
- Cst-attribute-name-conc?
- Cst-type-qualifier-or-attribute-specifier-conc2-rep
- Cst-type-qualifier-or-attribute-specifier-conc1-rep
- Cst-character-not-greater-than-or-new-line-conc2-rep
- Cst-character-not-greater-than-or-new-line-conc1-rep
- Cst-character-not-double-quote-or-new-line-conc2-rep
- Cst-character-not-double-quote-or-new-line-conc1-rep
- Cst-block-item-conc?
- Cst-basic-character-not-star-or-slash-conc5-rep-elem
- Cst-basic-character-not-star-or-slash-conc4-rep-elem
- Cst-basic-character-not-star-or-slash-conc3-rep-elem
- Cst-basic-character-not-star-or-slash-conc2-rep-elem
- Cst-basic-character-not-star-or-slash-conc1-rep-elem
- Cst-basic-character-not-greater-than-conc5-rep-elem
- Cst-basic-character-not-greater-than-conc4-rep-elem
- Cst-basic-character-not-greater-than-conc3-rep-elem
- Cst-basic-character-not-greater-than-conc2-rep-elem
- Cst-basic-character-not-greater-than-conc1-rep-elem
- Cst-basic-character-not-double-quote-conc5-rep-elem
- Cst-basic-character-not-double-quote-conc4-rep-elem
- Cst-basic-character-not-double-quote-conc3-rep-elem
- Cst-basic-character-not-double-quote-conc2-rep-elem
- Cst-basic-character-not-double-quote-conc1-rep-elem
- Cst-type-qualifier-or-attribute-specifier-conc2
- Cst-type-qualifier-or-attribute-specifier-conc1
- Cst-s-char-conc?
- Cst-list-rep-matchp$
- Cst-list-elem-matchp$
- Cst-letter-conc?
- Cst-comment-conc?
- Cst-character-not-greater-than-or-new-line-conc2
- Cst-character-not-greater-than-or-new-line-conc1
- Cst-character-not-double-quote-or-new-line-conc2
- Cst-character-not-double-quote-or-new-line-conc1
- Cst-character-conc?
- Cst-c-char-conc?
- Cst-basic-character-not-star-or-slash-conc5-rep
- Cst-basic-character-not-star-or-slash-conc4-rep
- Cst-basic-character-not-star-or-slash-conc3-rep
- Cst-basic-character-not-star-or-slash-conc2-rep
- Cst-basic-character-not-star-or-slash-conc1-rep
- Cst-basic-character-not-greater-than-conc5-rep
- Cst-basic-character-not-greater-than-conc4-rep
- Cst-basic-character-not-greater-than-conc3-rep
- Cst-basic-character-not-greater-than-conc2-rep
- Cst-basic-character-not-greater-than-conc1-rep
- Cst-basic-character-not-double-quote-conc5-rep
- Cst-basic-character-not-double-quote-conc4-rep
- Cst-basic-character-not-double-quote-conc3-rep
- Cst-basic-character-not-double-quote-conc2-rep
- Cst-basic-character-not-double-quote-conc1-rep
- Cst-character-not-star-or-slash-conc2-rep-elem
- Cst-character-not-star-or-slash-conc2-rep
- Cst-character-not-star-or-slash-conc1-rep-elem
- Cst-character-not-star-or-slash-conc1-rep
- Cst-basic-character-not-star-or-slash-conc5
- Cst-basic-character-not-star-or-slash-conc4
- Cst-basic-character-not-star-or-slash-conc3
- Cst-basic-character-not-star-or-slash-conc2
- Cst-basic-character-not-star-or-slash-conc1
- Cst-basic-character-not-star-conc3-rep-elem
- Cst-basic-character-not-greater-than-conc5
- Cst-basic-character-not-greater-than-conc4
- Cst-basic-character-not-greater-than-conc3
- Cst-basic-character-not-greater-than-conc2
- Cst-basic-character-not-greater-than-conc1
- Cst-basic-character-not-double-quote-conc5
- Cst-basic-character-not-double-quote-conc4
- Cst-basic-character-not-double-quote-conc3
- Cst-basic-character-not-double-quote-conc2
- Cst-basic-character-not-double-quote-conc1
- Cst-character-not-star-or-slash-conc2
- Cst-character-not-star-or-slash-conc1
- Cst-character-not-new-line-conc2-rep-elem
- Cst-character-not-new-line-conc2-rep
- Cst-character-not-new-line-conc1-rep-elem
- Cst-basic-character-not-star-conc5-rep-elem
- Cst-basic-character-not-star-conc5-rep
- Cst-basic-character-not-star-conc4-rep-elem
- Cst-basic-character-not-star-conc4-rep
- Cst-basic-character-not-star-conc3-rep
- Cst-basic-character-not-star-conc2-rep-elem
- Cst-basic-character-not-star-conc2-rep
- Cst-basic-character-not-star-conc1-rep-elem
- Cst-basic-character-not-star-conc1-rep
- Cst-preprocessing-token-conc7-rep-elem
- Cst-preprocessing-token-conc7-rep
- Cst-preprocessing-token-conc6-rep-elem
- Cst-preprocessing-token-conc6-rep
- Cst-preprocessing-token-conc5-rep-elem
- Cst-preprocessing-token-conc5-rep
- Cst-preprocessing-token-conc4-rep-elem
- Cst-preprocessing-token-conc4-rep
- Cst-preprocessing-token-conc3-rep-elem
- Cst-preprocessing-token-conc3-rep
- Cst-preprocessing-token-conc2-rep-elem
- Cst-preprocessing-token-conc2-rep
- Cst-preprocessing-token-conc1-rep-elem
- Cst-preprocessing-token-conc1-rep
- Cst-matchp$
- Cst-floating-constant-conc2-rep-elem
- Cst-floating-constant-conc2-rep
- Cst-floating-constant-conc1-rep-elem
- Cst-floating-constant-conc1-rep
- Cst-escape-sequence-conc4-rep-elem
- Cst-escape-sequence-conc3-rep-elem
- Cst-escape-sequence-conc2-rep-elem
- Cst-escape-sequence-conc1-rep-elem
- Cst-control-character-conc3-rep-elem
- Cst-control-character-conc2-rep-elem
- Cst-control-character-conc1-rep-elem
- Cst-character-not-star-conc2-rep-elem
- Cst-character-not-star-conc2-rep
- Cst-character-not-star-conc1-rep-elem
- Cst-character-not-star-conc1-rep
- Cst-character-not-new-line-conc2
- Cst-character-not-new-line-conc1-rep
- Cst-character-not-new-line-conc1
- Cst-basic-character-not-star-conc5
- Cst-basic-character-not-star-conc4
- Cst-basic-character-not-star-conc3
- Cst-basic-character-not-star-conc2
- Cst-basic-character-not-star-conc1
- Cst-white-space-conc5-rep-elem
- Cst-white-space-conc4-rep-elem
- Cst-white-space-conc3-rep-elem
- Cst-white-space-conc2-rep-elem
- Cst-white-space-conc1-rep-elem
- Cst-static-assert-declaration-conc
- Cst-preprocessing-token-conc7
- Cst-preprocessing-token-conc6
- Cst-preprocessing-token-conc5
- Cst-preprocessing-token-conc4
- Cst-preprocessing-token-conc3
- Cst-preprocessing-token-conc2
- Cst-preprocessing-token-conc1
- Cst-preprocessing-file-conc-rep-elem
- Cst-identifier-nondigit-conc-rep-elem
- Cst-hexadecimal-prefix-conc-rep-elem
- Cst-floating-constant-conc2
- Cst-floating-constant-conc1
- Cst-escape-sequence-conc4-rep
- Cst-escape-sequence-conc4
- Cst-escape-sequence-conc3-rep
- Cst-escape-sequence-conc3
- Cst-escape-sequence-conc2-rep
- Cst-escape-sequence-conc1-rep
- Cst-escape-sequence-conc1
- Cst-enumeration-constant-conc-rep-elem
- Cst-enumeration-constant-conc-rep
- Cst-control-character-conc3-rep
- Cst-control-character-conc3
- Cst-control-character-conc2-rep
- Cst-control-character-conc2
- Cst-control-character-conc1-rep
- Cst-control-character-conc1
- Cst-constant-expression-conc-rep-elem
- Cst-constant-expression-conc-rep
- Cst-character-not-star-conc2
- Cst-character-not-star-conc1
- Cst-block-item-conc2-rep-elem
- Cst-block-item-conc1-rep-elem
- Cst-basic-character-conc5-rep-elem
- Cst-basic-character-conc5-rep
- Cst-basic-character-conc4-rep-elem
- Cst-basic-character-conc4-rep
- Cst-basic-character-conc3-rep-elem
- Cst-basic-character-conc3-rep
- Cst-basic-character-conc2-rep-elem
- Cst-basic-character-conc2-rep
- Cst-basic-character-conc1-rep-elem
- Cst-basic-character-conc1-rep
- Cst-attribute-name-conc2-rep-elem
- Cst-attribute-name-conc2-rep
- Cst-attribute-name-conc1-rep-elem
- Cst-attribute-name-conc1-rep
- Cst-asm-output-operands-conc-rep-elem
- Cst-asm-output-operands-conc-rep
- Cst-asm-input-operands-conc-rep-elem
- Cst-asm-input-operands-conc-rep
- *grammar*
- The ABNF grammar represented in ACL2.
- Cst-white-space-conc5-rep
- Cst-white-space-conc5
- Cst-white-space-conc4-rep
- Cst-white-space-conc4
- Cst-white-space-conc3-rep
- Cst-white-space-conc3
- Cst-white-space-conc2-rep
- Cst-white-space-conc2
- Cst-white-space-conc1-rep
- Cst-white-space-conc1
- Cst-vertical-tab-conc-rep-elem
- Cst-uppercase-letter-conc-rep-elem
- Cst-uppercase-letter-conc-rep
- Cst-unsigned-suffix-conc-rep-elem
- Cst-unsigned-suffix-conc-rep
- Cst-types-compatible-call-conc
- Cst-typedef-name-conc-rep-elem
- Cst-statement-conc7-rep-elem
- Cst-statement-conc7-rep
- Cst-statement-conc6-rep-elem
- Cst-statement-conc6-rep
- Cst-statement-conc5-rep-elem
- Cst-statement-conc5-rep
- Cst-statement-conc4-rep-elem
- Cst-statement-conc4-rep
- Cst-statement-conc3-rep-elem
- Cst-statement-conc3-rep
- Cst-statement-conc2-rep-elem
- Cst-statement-conc2-rep
- Cst-statement-conc1-rep-elem
- Cst-statement-conc1-rep
- Cst-s-char-conc2-rep-elem
- Cst-s-char-conc1-rep-elem
- Cst-replacement-list-conc-rep-elem
- Cst-replacement-list-conc-rep
- Cst-preprocessing-file-conc-rep
- Cst-preprocessing-file-conc
- Cst-nonzero-digit-conc-rep-elem
- Cst-lowercase-letter-conc-rep-elem
- Cst-lowercase-letter-conc-rep
- Cst-lexeme-conc4-rep-elem
- Cst-lexeme-conc3-rep-elem
- Cst-lexeme-conc2-rep-elem
- Cst-lexeme-conc1-rep-elem
- Cst-letter-conc2-rep-elem
- Cst-letter-conc1-rep-elem
- Cst-label-declaration-conc
- Cst-identifier-nondigit-conc-rep
- Cst-identifier-nondigit-conc
- Cst-horizontal-tab-conc-rep-elem
- Cst-hexadecimal-prefix-conc-rep
- Cst-hexadecimal-prefix-conc
- Cst-generic-selection-conc
- Cst-function-definition-conc
- Cst-expression-statement-conc
- Cst-escape-sequence-conc2
- Cst-enumeration-constant-conc
- Cst-double-quote-conc-rep-elem
- Cst-constant-expression-conc
- Cst-constant-conc4-rep-elem
- Cst-constant-conc3-rep-elem
- Cst-constant-conc2-rep-elem
- Cst-constant-conc1-rep-elem
- Cst-compound-statement-conc
- Cst-comment-conc2-rep-elem
- Cst-comment-conc1-rep-elem
- Cst-character-conc2-rep-elem
- Cst-character-conc2-rep
- Cst-character-conc1-rep-elem
- Cst-character-conc1-rep
- Cst-carriage-return-conc-rep-elem
- Cst-carriage-return-conc-rep
- Cst-c-char-conc2-rep-elem
- Cst-c-char-conc1-rep-elem
- Cst-block-item-conc2-rep
- Cst-block-item-conc1-rep
- Cst-binary-exponent-part-conc
- Cst-basic-character-conc5
- Cst-basic-character-conc4
- Cst-basic-character-conc3
- Cst-basic-character-conc2
- Cst-basic-character-conc1
- Cst-attribute-specifier-conc
- Cst-attribute-parameters-conc
- Cst-attribute-name-conc2
- Cst-attribute-name-conc1
- Cst-atomic-type-specifier-conc
- Cst-asm-output-operands-conc
- Cst-asm-output-operand-conc
- Cst-asm-name-specifier-conc
- Cst-asm-input-operands-conc
- Cst-asm-input-operand-conc
- Cst-asm-goto-labels-conc-rep-elem
- Cst-asm-goto-labels-conc-rep
- Cst-asm-clobbers-conc-rep-elem
- Cst-vertical-tab-conc-rep
- Cst-uppercase-letter-conc
- Cst-unsigned-suffix-conc
- Cst-typedef-name-conc-rep
- Cst-translation-unit-conc
- Cst-token-conc5-rep-elem
- Cst-token-conc4-rep-elem
- Cst-token-conc3-rep-elem
- Cst-token-conc2-rep-elem
- Cst-token-conc1-rep-elem
- Cst-string-literal-conc
- Cst-statement-conc7
- Cst-statement-conc6
- Cst-statement-conc5
- Cst-statement-conc4
- Cst-statement-conc3
- Cst-statement-conc2
- Cst-statement-conc1
- Cst-s-char-conc2-rep
- Cst-s-char-conc1-rep
- Cst-s-char-conc1
- Cst-replacement-list-conc
- Cst-offsetof-call-conc
- Cst-octal-digit-conc-rep-elem
- Cst-octal-digit-conc-rep
- Cst-nonzero-digit-conc-rep
- Cst-nonzero-digit-conc
- Cst-non-directive-conc
- Cst-lowercase-letter-conc
- Cst-long-suffix-conc-rep-elem
- Cst-long-suffix-conc-rep
- Cst-line-feed-conc-rep-elem
- Cst-line-comment-conc
- Cst-lexeme-conc4-rep
- Cst-lexeme-conc3-rep
- Cst-lexeme-conc2-rep
- Cst-lexeme-conc1-rep
- Cst-letter-conc2-rep
- Cst-letter-conc1-rep
- Cst-horizontal-tab-conc-rep
- Cst-horizontal-tab-conc
- Cst-form-feed-conc-rep-elem
- Cst-exponent-part-conc
- Cst-double-quote-conc-rep
- Cst-constant-conc4-rep
- Cst-constant-conc4
- Cst-constant-conc3-rep
- Cst-constant-conc3
- Cst-constant-conc2-rep
- Cst-constant-conc2
- Cst-constant-conc1-rep
- Cst-constant-conc1
- Cst-comment-conc2-rep
- Cst-comment-conc2
- Cst-comment-conc1-rep
- Cst-comment-conc1
- Cst-character-conc2
- Cst-character-conc1
- Cst-carriage-return-conc
- Cst-c-char-conc2-rep
- Cst-c-char-conc1-rep
- Cst-c-char-conc1
- Cst-block-item-conc2
- Cst-block-item-conc1
- Cst-block-comment-conc
- Cst-attribute-list-conc
- Cst-asm-statement-conc
- Cst-asm-goto-labels-conc
- Cst-asm-clobbers-conc-rep
- Cst-asm-clobbers-conc
- Cst-vertical-tab-conc
- Cst-va-arg-call-conc
- Cst-typedef-name-conc
- Cst-type-name-conc
- Cst-token-conc5-rep
- Cst-token-conc5
- Cst-token-conc4-rep
- Cst-token-conc4
- Cst-token-conc3-rep
- Cst-token-conc3
- Cst-token-conc2-rep
- Cst-token-conc2
- Cst-token-conc1-rep
- Cst-token-conc1
- Cst-text-line-conc
- Cst-space-conc-rep-elem
- Cst-s-char-conc2
- Cst-q-char-conc-rep-elem
- Cst-q-char-conc-rep
- Cst-q-char-conc
- Cst-octal-digit-conc
- Cst-lparen-conc-rep-elem
- Cst-lparen-conc-rep
- Cst-long-suffix-conc
- Cst-line-feed-conc-rep
- Cst-line-feed-conc
- Cst-lexeme-conc4
- Cst-lexeme-conc3
- Cst-lexeme-conc2
- Cst-lexeme-conc1
- Cst-letter-conc2
- Cst-letter-conc1
- Cst-if-section-conc
- Cst-hex-quad-conc
- Cst-h-char-conc-rep-elem
- Cst-h-char-conc-rep
- Cst-h-char-conc
- Cst-form-feed-conc-rep
- Cst-form-feed-conc
- Cst-endif-line-conc
- Cst-else-group-conc
- Cst-elif-group-conc
- Cst-double-quote-conc
- Cst-digit-conc-rep-elem
- Cst-designation-conc
- Cst-declarator-conc
- Cst-c-char-conc2
- Cst-attribute-conc
- Cst-asm-clobber-conc
- Cst-space-conc-rep
- Cst-space-conc
- Cst-lparen-conc
- Cst-digit-conc-rep
- Cst-digit-conc
- Cst-%xe000-10ffff-nat
- Cst-%x206a-d7ff-nat
- Cst-%x202f-2065-nat
- Cst-%x80-2029-nat
- Cst-%x7b-7e-nat
- Cst-%x61-7a-nat
- Cst-%x61-66-nat
- Cst-%x5d-5f-nat
- Cst-%x5b-5f-nat
- Cst-%x41-5a-nat
- Cst-%x41-46-nat
- Cst-%x3a-3f-nat
- Cst-%x3a-3d-nat
- Cst-%x31-39-nat
- Cst-%x30-39-nat
- Cst-%x30-37-nat
- Cst-%x2b-2f-nat
- Cst-%x2b-2e-nat
- Cst-%x28-2f-nat
- Cst-%x25-2f-nat
- Cst-%x25-29-nat
- Cst-%x25-26-nat
- Cst-%x21-23-nat