4. Identifiers

Identifiers are names used to reference values in Jam. Any identifier must uniquely map to a single value inside the current scope, or any parent scopes. Identifiers with a leading "." do not check the current scope for matching values.

Identifiers may contain more than one name, separated by a ".". Any names after the first are used to access attributes on the referenced value.

4.1. Syntax

Identifier ::=  [a-zA-Z_][a-zA-Z_0-9]*
Attribute  ::=  Value "." Identifier

4.2. Examples

Note

These are non-working examples, purely meant to display the syntax of identifiers

# Valid Identifiers
fooBar
foo_bar
_foo_bar_
foo9
foo.bar
.foo
._foo_._bar_

# Invalid Identifiers
9foo
bar.
foo-bar
foo::bar