diff options
| author | Robert Griesemer <gri@golang.org> | 2024-12-12 11:28:09 -0800 |
|---|---|---|
| committer | Gopher Robot <gobot@golang.org> | 2024-12-12 15:39:44 -0800 |
| commit | 80a2982a801eaedc416d59801ac8fefcf1e4acf5 (patch) | |
| tree | acd792010d2dd6ca8ccc5b5c1412a08abe2b2baa /doc/go_spec.html | |
| parent | 38e9a671d7648227f4f5b133e2e6452491cccebf (diff) | |
| download | go-80a2982a801eaedc416d59801ac8fefcf1e4acf5.tar.xz | |
spec: align EBNF rules consistently (cosmetic change)
Change-Id: Ib1b14b8880c6de5606f7f425a5fc1c8749d8a4b7
Reviewed-on: https://go-review.googlesource.com/c/go/+/635799
TryBot-Bypass: Robert Griesemer <gri@google.com>
Reviewed-by: Ian Lance Taylor <iant@google.com>
Reviewed-by: Robert Griesemer <gri@google.com>
Auto-Submit: Robert Griesemer <gri@google.com>
Diffstat (limited to 'doc/go_spec.html')
| -rw-r--r-- | doc/go_spec.html | 126 |
1 files changed, 62 insertions, 64 deletions
diff --git a/doc/go_spec.html b/doc/go_spec.html index 31bea3713a..282f6cde0c 100644 --- a/doc/go_spec.html +++ b/doc/go_spec.html @@ -1,6 +1,6 @@ <!--{ "Title": "The Go Programming Language Specification", - "Subtitle": "Language version go1.24 (Nov 20, 2024)", + "Subtitle": "Language version go1.24 (Dec 12, 2024)", "Path": "/ref/spec" }--> @@ -810,12 +810,12 @@ from existing types. </p> <pre class="ebnf"> -Type = TypeName [ TypeArgs ] | TypeLit | "(" Type ")" . -TypeName = identifier | QualifiedIdent . -TypeArgs = "[" TypeList [ "," ] "]" . -TypeList = Type { "," Type } . -TypeLit = ArrayType | StructType | PointerType | FunctionType | InterfaceType | - SliceType | MapType | ChannelType . +Type = TypeName [ TypeArgs ] | TypeLit | "(" Type ")" . +TypeName = identifier | QualifiedIdent . +TypeArgs = "[" TypeList [ "," ] "]" . +TypeList = Type { "," Type } . +TypeLit = ArrayType | StructType | PointerType | FunctionType | InterfaceType | + SliceType | MapType | ChannelType . </pre> <p> @@ -1222,12 +1222,12 @@ is <code>nil</code>. </p> <pre class="ebnf"> -FunctionType = "func" Signature . -Signature = Parameters [ Result ] . -Result = Parameters | Type . -Parameters = "(" [ ParameterList [ "," ] ] ")" . -ParameterList = ParameterDecl { "," ParameterDecl } . -ParameterDecl = [ IdentifierList ] [ "..." ] Type . +FunctionType = "func" Signature . +Signature = Parameters [ Result ] . +Result = Parameters | Type . +Parameters = "(" [ ParameterList [ "," ] ] ")" . +ParameterList = ParameterDecl { "," ParameterDecl } . +ParameterDecl = [ IdentifierList ] [ "..." ] Type . </pre> <p> @@ -1634,8 +1634,8 @@ The value of an uninitialized map is <code>nil</code>. </p> <pre class="ebnf"> -MapType = "map" "[" KeyType "]" ElementType . -KeyType = Type . +MapType = "map" "[" KeyType "]" ElementType . +KeyType = Type . </pre> <p> @@ -2176,7 +2176,7 @@ within matching brace brackets. </p> <pre class="ebnf"> -Block = "{" StatementList "}" . +Block = "{" StatementList "}" . StatementList = { Statement ";" } . </pre> @@ -2233,8 +2233,8 @@ and like the blank identifier it does not introduce a new binding. </p> <pre class="ebnf"> -Declaration = ConstDecl | TypeDecl | VarDecl . -TopLevelDecl = Declaration | FunctionDecl | MethodDecl . +Declaration = ConstDecl | TypeDecl | VarDecl . +TopLevelDecl = Declaration | FunctionDecl | MethodDecl . </pre> <p> @@ -2679,9 +2679,9 @@ in square brackets rather than parentheses </p> <pre class="ebnf"> -TypeParameters = "[" TypeParamList [ "," ] "]" . -TypeParamList = TypeParamDecl { "," TypeParamDecl } . -TypeParamDecl = IdentifierList TypeConstraint . +TypeParameters = "[" TypeParamList [ "," ] "]" . +TypeParamList = TypeParamDecl { "," TypeParamDecl } . +TypeParamDecl = IdentifierList TypeConstraint . </pre> <p> @@ -2869,8 +2869,8 @@ binds corresponding identifiers to them, and gives each a type and an initial va </p> <pre class="ebnf"> -VarDecl = "var" ( VarSpec | "(" { VarSpec ";" } ")" ) . -VarSpec = IdentifierList ( Type [ "=" ExpressionList ] | "=" ExpressionList ) . +VarDecl = "var" ( VarSpec | "(" { VarSpec ";" } ")" ) . +VarSpec = IdentifierList ( Type [ "=" ExpressionList ] | "=" ExpressionList ) . </pre> <pre> @@ -3210,15 +3210,15 @@ Each element may optionally be preceded by a corresponding key. </p> <pre class="ebnf"> -CompositeLit = LiteralType LiteralValue . -LiteralType = StructType | ArrayType | "[" "..." "]" ElementType | - SliceType | MapType | TypeName [ TypeArgs ] . -LiteralValue = "{" [ ElementList [ "," ] ] "}" . -ElementList = KeyedElement { "," KeyedElement } . -KeyedElement = [ Key ":" ] Element . -Key = FieldName | Expression | LiteralValue . -FieldName = identifier . -Element = Expression | LiteralValue . +CompositeLit = LiteralType LiteralValue . +LiteralType = StructType | ArrayType | "[" "..." "]" ElementType | + SliceType | MapType | TypeName [ TypeArgs ] . +LiteralValue = "{" [ ElementList [ "," ] ] "}" . +ElementList = KeyedElement { "," KeyedElement } . +KeyedElement = [ Key ":" ] Element . +Key = FieldName | Expression | LiteralValue . +FieldName = identifier . +Element = Expression | LiteralValue . </pre> <p> @@ -3450,22 +3450,21 @@ Primary expressions are the operands for unary and binary expressions. </p> <pre class="ebnf"> -PrimaryExpr = - Operand | - Conversion | - MethodExpr | - PrimaryExpr Selector | - PrimaryExpr Index | - PrimaryExpr Slice | - PrimaryExpr TypeAssertion | - PrimaryExpr Arguments . +PrimaryExpr = Operand | + Conversion | + MethodExpr | + PrimaryExpr Selector | + PrimaryExpr Index | + PrimaryExpr Slice | + PrimaryExpr TypeAssertion | + PrimaryExpr Arguments . -Selector = "." identifier . -Index = "[" Expression [ "," ] "]" . -Slice = "[" [ Expression ] ":" [ Expression ] "]" | - "[" [ Expression ] ":" Expression ":" Expression "]" . -TypeAssertion = "." "(" Type ")" . -Arguments = "(" [ ( ExpressionList | Type [ "," ExpressionList ] ) [ "..." ] [ "," ] ] ")" . +Selector = "." identifier . +Index = "[" Expression [ "," ] "]" . +Slice = "[" [ Expression ] ":" [ Expression ] "]" | + "[" [ Expression ] ":" Expression ":" Expression "]" . +TypeAssertion = "." "(" Type ")" . +Arguments = "(" [ ( ExpressionList | Type [ "," ExpressionList ] ) [ "..." ] [ "," ] ] ")" . </pre> @@ -3638,8 +3637,8 @@ argument that is the receiver of the method. </p> <pre class="ebnf"> -MethodExpr = ReceiverType "." MethodName . -ReceiverType = Type . +MethodExpr = ReceiverType "." MethodName . +ReceiverType = Type . </pre> <p> @@ -5916,11 +5915,10 @@ Statements control execution. </p> <pre class="ebnf"> -Statement = - Declaration | LabeledStmt | SimpleStmt | - GoStmt | ReturnStmt | BreakStmt | ContinueStmt | GotoStmt | - FallthroughStmt | Block | IfStmt | SwitchStmt | SelectStmt | ForStmt | - DeferStmt . +Statement = Declaration | LabeledStmt | SimpleStmt | + GoStmt | ReturnStmt | BreakStmt | ContinueStmt | GotoStmt | + FallthroughStmt | Block | IfStmt | SwitchStmt | SelectStmt | ForStmt | + DeferStmt . SimpleStmt = EmptyStmt | ExpressionStmt | SendStmt | IncDecStmt | Assignment | ShortVarDecl . </pre> @@ -6132,7 +6130,7 @@ matching number of variables. <pre class="ebnf"> Assignment = ExpressionList assign_op ExpressionList . -assign_op = [ add_op | mul_op ] "=" . +assign_op = [ add_op | mul_op ] "=" . </pre> <p> @@ -6548,7 +6546,7 @@ The iteration may be controlled by a single condition, a "for" clause, or a "ran </p> <pre class="ebnf"> -ForStmt = "for" [ Condition | ForClause | RangeClause ] Block . +ForStmt = "for" [ Condition | ForClause | RangeClause ] Block . Condition = Expression . </pre> @@ -6580,8 +6578,8 @@ an increment or decrement statement. The init statement may be a <pre class="ebnf"> ForClause = [ InitStmt ] ";" [ Condition ] ";" [ PostStmt ] . -InitStmt = SimpleStmt . -PostStmt = SimpleStmt . +InitStmt = SimpleStmt . +PostStmt = SimpleStmt . </pre> <pre> @@ -7909,7 +7907,7 @@ types, variables, and constants. </p> <pre class="ebnf"> -SourceFile = PackageClause ";" { ImportDecl ";" } { TopLevelDecl ";" } . +SourceFile = PackageClause ";" { ImportDecl ";" } { TopLevelDecl ";" } . </pre> <h3 id="Package_clause">Package clause</h3> @@ -7920,8 +7918,8 @@ to which the file belongs. </p> <pre class="ebnf"> -PackageClause = "package" PackageName . -PackageName = identifier . +PackageClause = "package" PackageName . +PackageName = identifier . </pre> <p> @@ -7950,9 +7948,9 @@ that specifies the package to be imported. </p> <pre class="ebnf"> -ImportDecl = "import" ( ImportSpec | "(" { ImportSpec ";" } ")" ) . -ImportSpec = [ "." | PackageName ] ImportPath . -ImportPath = string_lit . +ImportDecl = "import" ( ImportSpec | "(" { ImportSpec ";" } ")" ) . +ImportSpec = [ "." | PackageName ] ImportPath . +ImportPath = string_lit . </pre> <p> |
