# Copyright 2019 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# Error definitions.
#
# Each error definition consists of an error message section, followed by one or
# more examples of that error.  The examples are used to train the parser to
# recognize the error.
#
# Each error example should contain the token '$ERR' immediately before the
# token on which the error is triggered.
#
# An example may optionally contain the token '$ANY'.  If so, the corresponding
# error message will be used as a default message for parser errors which occur
# in the corresponding parser state.  This is roughly equivalent to repeating
# the example with every erroneous token in place of the '$ANY'.

================================================================================
A name is required for a struct field.
--------------------------------------------------------------------------------
# First example.
struct Foo:
  0 [+1]   UInt  $ERR  # Missing name (end of struct).
---
# Second example -- error on newline token, not comment token.
struct Foo:
  0 [+1]   UInt  $ERR


================================================================================
Module attributes must appear before type definitions.
--------------------------------------------------------------------------------
struct Foo:
  0 [+1]   UInt   field

$ERR [attrib: VALUE]  # Attribute after types.


================================================================================
A type name must be CamelCase.
--------------------------------------------------------------------------------
struct $ERR foo: # snake_case
---
struct $ERR FOO: # SHOUTY
---
struct $ERR Foo_: # Not a valid identifier
---
bits $ERR foo:
---
bits $ERR FOO:
---
bits $ERR Foo_:
---
enum $ERR foo:
---
enum $ERR FOO:
---
enum $ERR Foo_:
---
external $ERR foo:
---
external $ERR FOO:
---
external $ERR Foo_:
---
bits Type:
  bits $ERR foo:
---
bits Type:
  bits $ERR FOO:
---
bits Type:
  bits $ERR Foo_:
---
bits Type:
  struct $ERR foo:
---
bits Type:
  struct $ERR FOO:
---
bits Type:
  struct $ERR Foo_:
---
bits Type:
  enum $ERR foo:
---
bits Type:
  enum $ERR FOO:
---
bits Type:
  enum $ERR Foo_:
---
bits Type:
  external $ERR foo:
---
bits Type:
  external $ERR FOO:
---
bits Type:
  external $ERR Foo_:


================================================================================
Expected type name.
--------------------------------------------------------------------------------
struct $ERR $ANY
---
bits $ERR $ANY
---
enum $ERR $ANY
---
external $ERR $ANY
---
bits Type:
  bits $ERR $ANY
---
bits Type:
  struct $ERR $ANY
---
bits Type:
  enum $ERR $ANY
---
bits Type:
  external $ERR $ANY


================================================================================
Expected ':' after type name.
--------------------------------------------------------------------------------
struct Type $ERR $ANY
---
bits Type $ERR $ANY
---
enum Type $ERR $ANY
---
external Type $ERR $ANY


================================================================================
Expected end of line.
--------------------------------------------------------------------------------
struct Type: $ERR $ANY
---
bits Type: $ERR $ANY
---
enum Type: $ERR $ANY
---
external Type: $ERR $ANY
---
bits Type:
  enum Type: $ERR $ANY
---
bits Type:
  struct Type: $ERR $ANY
---
bits Type:
  external Type: $ERR $ANY
---
struct Type:
  enum Type: $ERR $ANY
---
struct Type:
  external Type: $ERR $ANY
---
struct Type:
  bits Type: $ERR $ANY
---
bits Type:
  if false: $ERR $ANY
---
struct Type:
  if false: $ERR $ANY
---
struct Type:
  0 [+0] bits: $ERR $ANY
---
struct Type:
  if false:
    0 [+0] bits: $ERR $ANY
---
struct Type:
  0 [+0] enum name: $ERR $ANY
---
struct Type:
  if false:
    0 [+0] enum name: $ERR $ANY


================================================================================
Expected documentation, an import, a module attribute, or a type at top level.
--------------------------------------------------------------------------------
$ERR $ANY


================================================================================
Expected an import, a module attribute, or a type definition.
--------------------------------------------------------------------------------
-- doc
$ERR $ANY


================================================================================
Expected an import, a module attribute, or a type definition.
--------------------------------------------------------------------------------
import "string" as name
$ERR $ANY


================================================================================
Imports should follow the form 'import "file_name.emb" as name'.
--------------------------------------------------------------------------------
import $ERR $ANY
---
import "string" $ERR $ANY
---
import "string" as $ERR $ANY


================================================================================
An import statement must be on its own line.
--------------------------------------------------------------------------------
import "string" as name $ERR $ANY


================================================================================
Expected inline type definition or field definition.
--------------------------------------------------------------------------------
struct Type:
  external Type:
    --
  $ERR $ANY


================================================================================
Nested type definitions must come before fields.
--------------------------------------------------------------------------------
struct Type:
  VALUE [+0] Type name
  $ERR struct
---
struct Type:
  VALUE [+0] Type name
  $ERR enum
---
struct Type:
  VALUE [+0] Type name
  $ERR bits


================================================================================
Type documentation must come before fields.
--------------------------------------------------------------------------------
struct Type:
  VALUE [+0] Type name
  $ERR -- doc


================================================================================
Expected field definition.
--------------------------------------------------------------------------------
struct Type:
  VALUE [+0] Type name
  $ERR $ANY


================================================================================
Expected documentation, attribute, or enum value for inline enum.
--------------------------------------------------------------------------------
struct Type:
  VALUE [+0] enum name:
    $ERR $ANY


================================================================================
Attributes must be of the form '[name: value]', '[(domain) name: value]', or '[$default name: value]'
--------------------------------------------------------------------------------
[ $ERR $ANY
---
struct Type:
  VALUE [+0] Type name [name: $ERR $ANY
---
[( $ERR $ANY
---
[(name $ERR $ANY
---
[(name) $ERR $ANY
---
[$default $ERR $ANY
---
[name $ERR $ANY
---
[name: $ERR $ANY
---
[name: VALUE $ERR $ANY
---
[name: false $ERR $ANY
---
[name: name $ERR $ANY
---
[name: "string" $ERR $ANY
---
[name: Type $ERR $ANY
---
[name: 0 $ERR $ANY


================================================================================
Expected a variable, constant, or expression.
--------------------------------------------------------------------------------
# The top-of-stack parser states here are common to expression parsing; the
# module-attribute prefix is just the shortest prefix that gets to an
# expression.
[name: ( $ERR $ANY
---
# Yes, '((' puts the parser in a slightly different state than '('.
# Fortunately, '(((' and on are equivalent to '(('.
[name: (( $ERR $ANY
---
[name: + $ERR $ANY
---
[name: - $ERR $ANY
---
[name: 0 != ( $ERR $ANY
---
struct Type:
  ( $ERR $ANY


================================================================================
Documentation must come before any enumeration values.
--------------------------------------------------------------------------------
enum Type:
  VALUE = VALUE
    --
  $ERR -- doc

================================================================================
Attributes must come before any enumeration values.
--------------------------------------------------------------------------------
enum Type:
  VALUE = VALUE
    --
  $ERR [attribute: value]


================================================================================
Expected 'NAME = value' pair.
--------------------------------------------------------------------------------
enum Type:
  VALUE = VALUE
    --
  $ERR $ANY


================================================================================
Documentation must come before attributes.
--------------------------------------------------------------------------------
[name: VALUE]
$ERR -- doc
---
enum Type:
  [name: "string"]
  $ERR -- doc
---
external Type:
  [name: "string"]
  $ERR -- doc
---
struct Type:
  [name: "string"]
  $ERR -- doc
---
bits Type:
  [name: "string"]
  $ERR -- doc


================================================================================
Imports must come before module attributes.
--------------------------------------------------------------------------------
[name: VALUE]
$ERR import


================================================================================
Expected an attribute or a type definition.
--------------------------------------------------------------------------------
[name: VALUE]
$ERR $ANY


================================================================================
Expected documentation or attribute for field.  (Wrong indent?)
--------------------------------------------------------------------------------
struct Type :
  VALUE [+0] Type name
    $ERR $ANY


================================================================================
Documentation must come before nested types.
--------------------------------------------------------------------------------
struct Type:
  enum Type:
    VALUE = VALUE
  $ERR -- doc


================================================================================
Attributes must come before nested types.
--------------------------------------------------------------------------------
struct Type:
  enum Type:
    VALUE = VALUE
  $ERR [


================================================================================
Expected nested type or field definition.
--------------------------------------------------------------------------------
struct Type:
  enum Type:
    VALUE = VALUE
  $ERR $ANY


================================================================================
Documentation must come before field definitions.
--------------------------------------------------------------------------------
struct Type:
  VALUE [+0] Type name
    --
  $ERR -- doc


================================================================================
Attributes must come before field definitions.
--------------------------------------------------------------------------------
struct Type:
  VALUE [+0] Type name
    --
  $ERR [


================================================================================
Nested types must come before field definitions.
--------------------------------------------------------------------------------
struct Type :
  VALUE [+0] Type name
    --
  $ERR enum
---
struct Type :
  VALUE [+0] Type name
    --
  $ERR struct
---
struct Type :
  VALUE [+0] Type name
    --
  $ERR bits
---
struct Type :
  VALUE [+0] Type name
    --
  $ERR external


================================================================================
Expected field definition.
--------------------------------------------------------------------------------
struct Type :
  VALUE [+0] Type name
    --
  $ERR $ANY


================================================================================
Expected attribute or end of line.
--------------------------------------------------------------------------------
struct Type:
  VALUE [+0] Type name [name: VALUE] $ERR $ANY


================================================================================
Module documentation must come before imports.
--------------------------------------------------------------------------------
import "string" as name
$ERR -- doc


================================================================================
Body of a type definition must be non-empty and indented.
--------------------------------------------------------------------------------
bits Type:
$ERR $ANY
---
external Type:
$ERR $ANY
---
struct Type:
$ERR $ANY
---
enum Type:
$ERR $ANY


================================================================================
Expected documentation, attribute, nested type, or field definition.
--------------------------------------------------------------------------------
bits Type:
  $ERR $ANY
---
struct Type:
  $ERR $ANY


================================================================================
Expected documentation or attribute.
--------------------------------------------------------------------------------
external Type:
  $ERR $ANY


================================================================================
Expected documentation, attribute, or enumeration value.
--------------------------------------------------------------------------------
enum Type:
  $ERR $ANY


================================================================================
Enumerations may not contain subtypes.
--------------------------------------------------------------------------------
enum Type:
  $ERR bits
---
enum Type:
  $ERR struct
---
enum Type:
  $ERR external
---
enum Type:
  $ERR enum


================================================================================
Expected operator or closing parenthesis.
--------------------------------------------------------------------------------
[name: (name $ERR $ANY
---
[name: (VALUE $ERR $ANY
---
[name: (false $ERR $ANY
---
[name: (0 $ERR $ANY
---
[name: ((false) $ERR $ANY


================================================================================
Expected arithmetic operator or closing parenthesis.
--------------------------------------------------------------------------------
[name: (0 != 0 $ERR $ANY
---
[name: (0 != VALUE $ERR $ANY
---
[name: (0 != false $ERR $ANY


================================================================================
Expected arithmetic operator or end of attribute.
--------------------------------------------------------------------------------
[name: 0 != VALUE $ERR $ANY
---
[name: 0 != 0 $ERR $ANY
---
[name: 0 != false $ERR $ANY


================================================================================
Expected operator or '.'.
--------------------------------------------------------------------------------
[name: 0 != name $ERR $ANY


================================================================================
Expected operator or closing parenthesis; enumerated values do not have subfields.
--------------------------------------------------------------------------------
[name: (VALUE $ERR .


================================================================================
Expected name.
--------------------------------------------------------------------------------
[name: Type. $ERR $ANY


================================================================================
Field locations must be of the form 'start [+length]'.  Missing '+'?
--------------------------------------------------------------------------------
struct Foo:
  0 [ $ERR 0
---
struct Foo:
  0 [ $ERR name
---
struct Foo:
  0 [ $ERR VALUE
---
struct Foo:
  0 [ $ERR Type
---
struct Foo:
  0 [ $ERR 0
---
struct Foo:
  0 [ $ERR name
---
struct Foo:
  0 [ $ERR VALUE
---
struct Foo:
  0 [ $ERR Type


================================================================================
Right operand must be an expression.
--------------------------------------------------------------------------------
[name: 0 * $ERR $ANY
---
[name: 0 + $ERR $ANY
---
[name: 0 - $ERR $ANY
---
[name: 0 == $ERR $ANY
---
[name: 0 != $ERR $ANY
---
[name: VALUE * $ERR $ANY
---
[name: VALUE + $ERR $ANY
---
[name: VALUE - $ERR $ANY
---
[name: VALUE == $ERR $ANY
---
[name: VALUE != $ERR $ANY


================================================================================
Attribute must appear on its own line.
--------------------------------------------------------------------------------
[name: false] $ERR $ANY


================================================================================
Expected subtype or enumeration name.
--------------------------------------------------------------------------------
[name: (Type. $ERR $ANY


================================================================================
Attribute missing closing ']'.
--------------------------------------------------------------------------------
[name: (0) $ERR


================================================================================
Expected operator or end of attribute.
--------------------------------------------------------------------------------
[name: (0) $ERR $ANY


================================================================================
Expected subfield name.
--------------------------------------------------------------------------------
[name: (name. $ERR $ANY
---
[name: name. $ERR $ANY
---
[name: 0 == name. $ERR $ANY


================================================================================
Expected expression for size of field.
--------------------------------------------------------------------------------
struct Foo:
  0 [+ $ERR $ANY


================================================================================
Unexpected enum name; possibly incorrect indentation.
--------------------------------------------------------------------------------
enum Type:
  VALUE = VALUE
    --
    $ERR VALUE = VALUE


================================================================================
Space is required after '--'.
--------------------------------------------------------------------------------
enum Type:
  VALUE = VALUE
    --
    $ERR --No space


================================================================================
Expected documentation or next value.
--------------------------------------------------------------------------------
enum Type:
  VALUE = VALUE
    --
    $ERR $ANY


================================================================================
Expected '=' after enumerated name.
--------------------------------------------------------------------------------
enum Type:
  VALUE $ERR $ANY


================================================================================
Parentheses are required to mix '&&' and '||'.
--------------------------------------------------------------------------------
struct Foo:
  if a && b && c $ERR ||
---
struct Foo:
  if a || b || c $ERR &&


================================================================================
Greater-than comparisons may only be chained with equality and greater-than.
--------------------------------------------------------------------------------
struct Foo:
  if a > b $ERR <
---
struct Foo:
  if a > b $ERR <=


================================================================================
Less-than comparisons may only be chained with equality and less-than.
--------------------------------------------------------------------------------
struct Foo:
  if a < b $ERR >
---
struct Foo:
  if a < b $ERR >=


================================================================================
Chained or nested choice operations ('?:') require explicit parentheses.
--------------------------------------------------------------------------------
struct Foo:
  if a ? b : c $ERR ?
---
struct Foo:
  if a ? b $ERR ?


================================================================================
Virtual fields are not allowed in anonymous 'bits' constructs; place them in the enclosing type.
--------------------------------------------------------------------------------
struct Foo:
  0 [+1]  bits:
    $ERR let x = 0
