Robert Griesemer, Rob Pike, Ken Thompson
----
-(July 1, 2008)
+(July 3, 2008)
This document is a semi-formal specification/proposal for a new
systems programming language. The document is under active
A constant declaration gives a name to the value of a constant expression.
ConstDecl = "const" ( ConstSpec | "(" ConstSpecList [ ";" ] ")" ).
- ConstSpec = identifier [ Type ] "=" Expression .
+ ConstSpec = identifier [ Type ] [ "=" Expression ] .
ConstSpecList = ConstSpec { ";" ConstSpec }.
const pi float = 3.14159265
two = 3
)
+The constant expression may be omitted, in which case the expression is
+the last expression used after the "const" keyword. If no such expression
+exists, the constant expression cannot be omitted.
+
+Together with the 'iota' constant generator this permits light-weight
+declaration of ``enum'' values.
+
+ const (
+ illegal = iota;
+ eof;
+ ident;
+ string;
+ number;
+ )
+
+TODO move/re-arrange section on iota.
+
Type declarations
----
to acccess this conversion in low-level code but it will not be available
in general.
+
The constant generator 'iota'
----