-This document is a semi-formal specification of the Go systems
-programming language.
-<p>
-<font color=red>
-This document is not ready for external review, it is under active development.
-Any part may change substantially as design progresses.
-</font>
-
<!--
Biggest open issues:
[ ] General iterators
- Jan 1, 2009: enough support to write interesting programs
-->
-
-<h2>Contents</h2>
-<p>
-TODO: This should be autogenerated but that will take work to make h3s appear in this list
-</p>
-<ul>
-<li>Introduction
-
-<li>Notation
-
-<li>Source code representation
- <ul>
- <li>Characters
- <li>Letters and digits
- </ul>
-
-<li>Vocabulary
- <ul>
- <li>Identifiers
- <li>Numeric literals
- <li>Character and string literals
- <li>Operators and delimitors
- <li>Reserved words
- </ul>
-
-<li>Declarations and scope rules
- <ul>
- <li>Predeclared identifiers
- <li>Exported identifiers
- <li>Const declarations
- <ul>
- <li>Iota
- </ul>
- <li>Type declarations
- <li>Variable declarations
- </ul>
-
-<li>Types
- <ul>
- <li>Basic types
- <ul>
- <li>Arithmetic types
- <li>Booleans
- <li>Strings
- </ul>
- <li>Array types
- <li>Struct types
- <li>Pointer types
- <li>Function types
- <li>Interface types
- <li>Slice types
- <li>Map types
- <li>Channel types
- <li>Type equality
- </ul>
-
-<li>Expressions
- <ul>
- <li>Operands
- <ul>
- <li>Constants
- <li>Qualified identifiers
- <li>Composite literals
- <li>Function literals
- </ul>
-
- <li>Primary expressions
- <ul>
- <li>Selectors
- <li>Indexes
- <li>Slices
- <li>Type guards
- <li>Calls
- <ul>
- <li>Parameter passing
- </ul>
- </ul>
-
- <li>Operators
- <ul>
- <li>Arithmetic operators
- <ul>
- <li>Integer overflow
- </ul>
- <li>Comparison operators
- <li>Logical operators
- <li>Address operators
- <li>Communication operators
- </ul>
-
- <li>Constant expressions
- </ul>
-
-<li>Statements
- <ul>
- <li>Label declarations
- <li>Expression statements
- <li>IncDec statements
- <li>Assignments
- <li>If statements
- <li>Switch statements
- <li>For statements
- <li>Go statements
- <li>Select statements
- <li>Return statements
- <li>Break statements
- <li>Continue statements
- <li>Label declaration
- <li>Goto statements
- <li>Defer statements
- </ul>
-
-<li>Function declarations
- <ul>
- <li>Method declarations
- <li>Predeclared functions
- <ul>
- <li>Length and capacity
- <li>Conversions
- <li>Allocation
- <li>Making slices, maps, and channels
- </ul>
- </ul>
-
-<li>Packages
-
-<li>Program initialization and execution
-
-<li>Systems considerations
- <ul>
- <li>Package unsafe
- <li>Size and alignment guarantees
- </ul>
-</ul>
-
-<hr>
-
<h2>Introduction</h2>
<p>
The grammar is compact and regular, allowing for easy analysis by
automatic tools such as integrated development environments.
</p>
-
+<hr>
<h2>Notation</h2>
<p>
The syntax is specified using Extended Backus-Naur Form (EBNF):
Where possible, recursive productions are used to express evaluation order
and operator precedence syntactically.
</p>
+<hr>
<h2>Source code representation</h2>