program := [ ( stmt | stmt program ) ] stmt := ( import | assignment | expr ) ";" import := "import" IDENTIFIER assignment := "let" IDENTIFIER "=" expr call := ref args_list ref := [ qname "." ] object qname := ( IDENTIFIER | IDENTIFIER "::" qname ) object := ( IDENTIFIER | IDENTIFIER "." object ) args_list := "(" args ")" ; arg := ( IDENTIFIER ":" expr ) | expr args := [ ( arg | arg "," args ) ] term := literal | ref | call expr := ( expr "/" term ) | term literal := BOOL | INTEGER | STRING | IPV4 | v4socket v4socket := IPV4 ":" INTEGER