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 Functions Structs Events Enumeration Type Aliases Contracts Statements pragma Statement Assignment Statement Augmenting Assignment Statement const Statement let Statement revert Statement return Statement emit Statement if Statement for Statement while Statement break Statement continue Statement assert Statement pass 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 Enumerated Types Address Type Map Type String Type Event Types Data Layout Stack Storage Constant size values in storage Maps in storage to_mem() function Memory Sequence types in memory clone() function Function calls