The following is a summary of the definition of the SBML identifier type `SId`, which defines the permitted syntax of identifiers. We express the syntax using an extended form of BNF notation:

`letter ::= 'a'..'z','A'..'Z'`
`digit ::= '0'..'9'`
`idChar ::= letter | digit | '_'`
`SId ::= ( letter | '_' ) idChar*`

The characters `(` and `)` are used for grouping, the character `*` "zero or more times", and the character `|` indicates logical "or". The equality of SBML identifiers is determined by an exact character sequence match; i.e., comparisons must be performed in a case-sensitive manner. In addition, there are a few conditions for the uniqueness of identifiers in an SBML model. Please consult the SBML specifications for the exact formulations.