Fe Language Specification Warning: This is a work in progress document. It is incomplete and specifications aren't stable yet. Notation Lexical Structure Keywords Identifiers Tokens Comments Items Visibility and Privacy Structs Traits Enums Type Aliases Contracts Functions Context Self Statements pragma Statement Assignment Statement Augmenting Assignment Statement const Statement let Statement revert Statement return Statement if Statement for Statement while Statement break Statement continue Statement assert Statement Expressions Call expressions Tuple expressions List expressions Index expressions Attribute expressions Name expressions Literal expressions Arithmetic Operators Comparison Operators Boolean Operators Unary Operators Type System Types Boolean Type Contract Type Numeric Types Tuple Types Array Types Struct Types Enum Types Address Type Map Type String Type Data Layout Stack Storage Constant size values in storage Maps in storage to_mem() function Memory Sequence types in memory