Note

The contents of this page are informational.

A. Glossary

A.1. attribute

A.1:1 An attribute is a general, free-form metadatum that is interpreted based on its name, convention, language, and tool.

A.2. algebraic data type

A.2:1 An algebraic data type is a collection of other types.

A.3. access expression

A.3:1 An access expression is an expression which specifies accessing either a item within a namespace, or a field of a value.

A.3:2 The alignment of a value specifies which addresses are valid for storing the value.

A.4. argument operand

A.4:1 An argument operand is an operand which is used as an argument in a call expression

A.5. binary literal

A.5:1 A binary literal is a integer literal that is in base 2.

A.41:1 See BinaryLiteral.

A.6. block comment

A.6:1 A block comment is a comment that spans one or more lines.

A.7. bool

A.7:1 bool is a type whose values denote the truth values of logic and Boolean algebra.

A.8. boolean literal

A.8:1 A boolean literal is a literal that denotes the truth values of logic and Boolean algebra.

A.8:2 See BooleanLiteral.

A.9. built-in attribute

A.9:1 A built-in attribute is a language-defined attribute.

A.10. byte literal

A.10:1 A byte literal is a literal that denotes a fixed byte value.

A.11. call expression

A.11:1 A call expression is an expression that invokes a function or constructs a struct value or enum variant value.

A.12. char

A.12:1 char is a type whose values denote a single Unicode character.

A.13. character literal

A.13:1 A character literal is a literal that denotes a fixed Unicode character.

A.13:2 See CharacterContent.

A.14. comment

A.14:1 A comment is a lexical element that acts as an annotation to the program source, and is ignored by the compiler.

A.14:2 See Comment.

A.15. construct

A.15:1 A construct is a piece of program text that is an instance of a syntactic category.

A.16. decimal literal

A.16:1 A decimal literal is a integer literal that is in base 10.

A.17. discriminant

A.17:1 A discriminant is an opaque integer that identifies an enum variant.

A.18. discriminant initialiser

A.18:1 A discriminant initialiser shall be specified via the discriminant attribute.

A.19. entity

A.19:1 An entity is a construct that can be referred to within the program text, usually via a access expression.

A.20. escaped character

A.20:1 An escaped character is the textual representation for a character with special meaning. An escaped character consists of character 0x5C (\) followed by the single character encoding of the special meaning character. For example, \n is the escaped character for the newline character.

A.20:2 An enum is an item that declares an enum type.

A.21. enum type

A.21:1 A enum type is an abstract data type that contains enum variants.

A.22. enum variant

A.22:1 An enum variant is a construct that declares one of the possible variations of an enum.

A.23. expression

A.23:1 An expression is a construct that produces a value, and may have side effects at run-time.

A.24. exported function

A.24:1 An exported function is an export of a function.

A.25. f32

A.25:1 f32 is a floating point type equivalent to the IEEE 754-2008 binary32 type.

A.26. f64

A.26:1 f64 is a floating point type equivalent to the IEEE 754-2008 binary64 type.

A.27. field

A.27:1 A field is an element of an algebraic data type.

A.28. float literal

A.28:1 A float literal is a numeric literal that denotes a fractional number.

A.29. float suffix

A.29:1 A float suffix is a component of a float literal that specifies the explicit floating point type.

A.30. floating point type

A.30:1 A floating point type is a numeric type that can represent values denote fractional numbers.

A.31. function

A.31:1 A function is a value of a function type that models a behaviour.

A.32. function type

A.32:1 A function type is a unique type that identifies a function.

A.33. hexadecimal literal

A.33:1 A hexadecimal literal is a integer literal that is in base 16.

A.34. i8

A.34:1 i8 is a signed integer type whose values range from - (27) to 27 - 1, all inclusive.

A.35. i16

A.35:1 i16 is a signed integer type whose values range from - (215) to 215 - 1, all inclusive.

A.36. i32

A.36:1 i32 is a signed integer type whose values range from - (232) to 232 - 1, all inclusive.

A.37. i64

A.37:1 i64 is a signed integer type whose values range from - (263) to 263 - 1, all inclusive.

A.38. i128

A.38:1 i128 is a signed integer type whose values range from - (2127) to 2127 - 1, all inclusive.

A.39. ibig

A.39:1 An ibig is a signed integer type which can represent an unbounded range of whole numbers.

A.40. identifier

A.40:1 An identifier is a lexical element that refers to a name.

A.41. integer literal

A.41:1 An integer literal is a numeric literal that denotes a whole number.

A.42. inferred type

A.42:1 An inferred type is a type that is deduced from type inference.

A.43. integer type

A.43:1 A integer type is a numeric type whose values denote whole numbers.

A.44. integer suffix

A.44:1 An integer suffix is a component of an integer literal that specifies the explicit integer type.

A.44:2 See IntegerSuffix.

A.45. isize

A.45:1 isize is a signed integer type with the same number of bits as the platform’s pointer type, and is at least 16 types.

A.46. item

A.46:1 An item is a top level statement in a source file.

A.47. keyword

A.47:1 A keyword is a word in program text that has special meaning.

A.48. layout

A.48:1 Layout specifies the alignment, size and the relative offset of fields in a type.

A.49. line

A.49:1 A line is a sequence of zero or more characters followed by an end of line.

A.50. line comment

A.50:1 A line comment is a comment that spans over one line.

A.51. literal

A.51:1 A literal is a fixed value in a program source.

A.52. main function

A.52:1 A main function is a function that acts as an entry point into a program.

A.53. module

A.53:1 A module is a construct that contains zero or more items.

A.54. module attribute

A.54:1 A module attribute is an attribute which can be specified at the module level.

A.55. name

A.55:1 A name is an identifier that refers to an entity.

A.56. namespace

A.56:1 A namespace is a logical grouping of names such that the occurrence of a name in one namespace does not conflict with an occurrence of the same name in another namespace.

A.57. numeric literal

A.57:1 A numeric literal is a literal that denotes a number.

A.58. numeric type

A.58:1 A numeric type is a type whose values denote numbers.

A.59. octal literal

A.59:1 An octal literal is a integer literal that is in base 8.

A.60. operand

A.60:1 An operand is an expression nested within an expression.

A.61. panic

A.61:1 A panic is an abnormal program state caused by invoking the prelude defined function.

A.62. pointer type

A.62:1 A pointer type is a type that represents memory locations.

A.63. prelude

A.63:1 The prelude is a module which is loaded into every Hash program before the main text body of a module. It defines core language items which are required for the language and accompanying tools.

A.64. primitive representation

A.64:1 Primitive representation is the type representation of integer types.

A.65. punctuator

A.65:1 A punctuator is a character or a sequence of characters in the Punctuation category.

A.66. separator

A.66:1 A separator is a character or a string that separates adjacent lexical elements.

A.67. sequence type

A.67:1 A sequence type represents a sequence of elements.

A.68. signed integer type

A.68:1 A signed integer type is an integer type that can represent values denote negative whole numbers, zero, and positive whole numbers.

A.69. size

A.69:1 The size of a value is the size in bytes of a value.

A.70. slice

A.70:1 A slice is a value of a slice type.

A.71. slice type

A.71:1 A slice type is a sequence type that provides a view into a sequence of elements.

A.72. source file

A.72:1 A source file contains the program text of module attributes, and items.

A.73. str

A.73:1 A str is a sequence type that represents a slice of 8-bit unsigned bytes.

A.74. string literal

A.74:1 A string literal is a sequence of Unicode characters enclosed in double quotes ".

A.74:2 See StringContent .

A.75. suffixed float

A.75:1 A suffixed float is a float literal with a float suffix.

A.76. suffixed integer

A.76:1 A suffixed integer is an integer literal with an integer suffix.

A.77. syntactic category

A.77:1 A syntactic category is a nonterminal in the Backus-Naur Form grammar definition of the Hash programming language.

A.78. type

A.78:1 A type defines a set of values and a set of operations that act on those values.

A.79. type inference

A.79:1 Type inference is the deduction of an expected type of an arbitrary value.

A.80. type representation

A.80:1 Type representation specifies the layout of fields of abstract data types.

A.81. u8

A.81:1 u8 is an unsigned integer type whose values range from 0 to 28 - 1, all inclusive.

A.82. u16

A.82:1 u16 is an unsigned integer type whose values range from 0 to 216 - 1, all inclusive.

A.83. u32

A.83:1 u32 is an unsigned integer type whose values range from 0 to 232 - 1, all inclusive.

A.84. u64

A.84:1 u64 is an unsigned integer type whose values range from 0 to 264 - 1, all inclusive.

A.85. u128

A.85:1 u128 is an unsigned integer type whose values range from 0 to 2128 - 1, all inclusive.

A.86. ubig

A.86:1 An ubig is a unsigned integer type which can represent zero, and unbounded positive whole numbers.

A.87. unicode

A.87:1 Unicode is the colloquial name for the ISO/IEC 10646:2017 Universal Coded Character Set standard.

A.88. unsigned integer type

A.88:1 A unsigned integer type is an integer type that can represent values denote zero and positive whole numbers.

A.89. unsuffixed float

A.89:1 A unsuffixed float is a float literal without a float suffix.

A.90. unsuffixed integer

A.90:1 A unsuffixed integer is an integer literal without an integer suffix.

A.91. usize

A.91:1 usize is a unsigned integer type with the same number of bits as the platform’s pointer type, and is at least 16 types.

A.92. value

A.92:1 A value is either a literal or the result of a computation, that may be stored in a memory location, and interpreted based on a type.

A.93. zero-variant enum type

A.93:1 A zero-variant enum type has no values.