start -> END start -> entities END entities -> entity entities -> entities entity entity -> metadata entity -> block entity -> KW_DECLARE LBRACE declarations RBRACE entity -> KW_IMPORT LBRACE declarations RBRACE entity -> KW_EXPORT LBRACE declarations RBRACE entity -> KW_GLOBAL LBRACE variabledeclarations RBRACE metadata -> META_AUTHOR string metadata -> META_TITLE string metadata -> META_VERSION string metadata -> META_COPYRIGHT string metadata -> META_ID string metadata -> META_COMMENT string metadata -> META__CUSTOM string ASSIGN string string -> stringlit string -> stringlit string stringlit -> STRINGLIT stringlit -> PREDEF_FILE stringlit -> PREDEF_LINE stringlit -> PREDEF_DATE stringlit -> PREDEF_TIME stringlit -> PREDEF_DATETIME block -> KW_MAIN throptions exceptioncompound block -> KW_CTOR exceptioncompound block -> KW_DTOR exceptioncompound block -> functionsignature precond postcond exceptioncompound precond -> {empty} precond -> KW_PRE LBRACE expression RBRACE postcond -> {empty} postcond -> KW_POST LPAR identlist_opt RPAR LBRACE identlist_opt SEMICOLON expression RBRACE identlist -> IDENTIFIER identlist -> identlist COMMA IDENTIFIER identlist_opt -> {empty} identlist_opt -> identlist declarations -> {empty} declarations -> declarations declaration declaration -> functionsignature SEMICOLON declaration -> KW_TYPE functionsignature SEMICOLON declaration -> KW_RECORD IDENTIFIER LBRACE recordfields RBRACE declaration -> KW_PRIVATE KW_RECORD IDENTIFIER LBRACE recordfields RBRACE declaration -> KW_PRIVATE KW_RECORD IDENTIFIER SEMICOLON declaration -> KW_LIMITED KW_RECORD IDENTIFIER LBRACE recordfields RBRACE declaration -> KW_LIMITED KW_RECORD IDENTIFIER SEMICOLON declaration -> KW_EXCEPTION IDENTIFIER SEMICOLON declaration -> KW_OPERATOR UNBOUNDOPERATOR IDENTIFIER integer32 SEMICOLON declaration -> KW_OPERATOR IDENTIFIER IDENTIFIER integer32 SEMICOLON declaration -> KW_OPERATOR string IDENTIFIER integer32 SEMICOLON declaration -> KW_ALIAS IDENTIFIER type SEMICOLON declaration -> KW_DATATYPE IDENTIFIER LBRACE datatypeconses RBRACE declaration -> KW_ENUM IDENTIFIER LBRACE enumerators RBRACE recordfields -> {empty} recordfields -> recordfields recordfield recordfield -> type IDENTIFIER SEMICOLON enumerators -> enumerator enumerators -> enumerators COMMA enumerator enumerator -> IDENTIFIER enumerator -> SPECIALIDENT datatypeconses -> datatypecons datatypeconses -> datatypeconses datatypecons datatypeconsname -> IDENTIFIER datatypeconsname -> SPECIALIDENT datatypecons -> datatypeconsname SEMICOLON datatypecons -> KW_DEFAULT datatypeconsname SEMICOLON datatypecons -> datatypecons_builder SEMICOLON datatypecons_builder -> IDENTIFIER type datatypecons_builder -> datatypecons_builder COMMA type exceptioncompound -> LBRACE statements ehandlers finally RBRACE throptions -> {empty} throptions -> LBRACKET throptionlist RBRACKET throptionlist -> OPT_DSS integer32 throptionlist -> OPT_CSS integer32 throptionlist -> throptionlist OPT_DSS integer32 throptionlist -> throptionlist OPT_CSS integer32 integer8 -> I8BIN integer8 -> I8OCT integer8 -> I8DEC integer8 -> I8HEX unsigned8 -> U8BIN unsigned8 -> U8OCT unsigned8 -> U8DEC unsigned8 -> U8HEX integer16 -> I16BIN integer16 -> I16OCT integer16 -> I16DEC integer16 -> I16HEX unsigned16 -> U16BIN unsigned16 -> U16OCT unsigned16 -> U16DEC unsigned16 -> U16HEX integer32 -> I32BIN integer32 -> I32OCT integer32 -> I32DEC integer32 -> I32HEX unsigned32 -> U32BIN unsigned32 -> U32OCT unsigned32 -> U32DEC unsigned32 -> U32HEX integer64 -> I64BIN integer64 -> I64OCT integer64 -> I64DEC integer64 -> I64HEX unsigned64 -> U64BIN unsigned64 -> U64OCT unsigned64 -> U64DEC unsigned64 -> U64HEX ehandlers -> {empty} ehandlers -> ehandlerlist ehandlerlist -> KW_EXCEPTION LPAR DOTDOTDOT RPAR compound ehandlerlist -> KW_EXCEPTION LPAR IDENTIFIER RPAR compound ehandlerlist -> KW_EXCEPTION LPAR IDENTIFIER RPAR compound ehandlerlist finally -> {empty} finally -> KW_FINALLY compound functionargument -> type IDENTIFIER functionargument -> KW_MUTABLE type IDENTIFIER functionsignature -> funcsig_start RPAR functionsignature -> funcsig_args RPAR functionsignature -> funcsig_rets funcsig_start -> FW_FUNCTION IDENTIFIER LPAR funcsig_start -> FW_FUNCTION string LPAR funcsig_start -> KW_PURE FW_FUNCTION IDENTIFIER LPAR funcsig_start -> KW_PURE FW_FUNCTION string LPAR funcsig_start -> KW_IMPURE FW_FUNCTION IDENTIFIER LPAR funcsig_start -> KW_IMPURE FW_FUNCTION string LPAR funcsig_args -> funcsig_start functionargument funcsig_args -> funcsig_args COMMA functionargument funcsig_rets -> funcsig_start RPAR COLON type funcsig_rets -> funcsig_args RPAR COLON type funcsig_rets -> funcsig_rets COMMA type compound -> LBRACE statements RBRACE compound -> IDENTIFIER LBRACE statements RBRACE statements -> {empty} statements -> statement statements -> statements statement statement -> variabledeclaration statement -> compound statement -> assignment statement -> funccallexpr SEMICOLON statement -> KW_RETURN SEMICOLON statement -> KW_RETURN expression SEMICOLON statement -> KW_RAISE LPAR IDENTIFIER RPAR SEMICOLON statement -> KW_RAISENEAR LPAR IDENTIFIER RPAR SEMICOLON statement -> KW_WHILE LPAR expression RPAR compound statement -> KW_DO compound KW_WHILE LPAR expression RPAR SEMICOLON statement -> KW_FOR LPAR assignment_opt SEMICOLON expression_opt SEMICOLON assignment_opt RPAR compound statement -> KW_FOREACH LPAR IDENTIFIER KW_IN expression DOTDOT expression inclusive_opt reverse_opt foreach_while foreach_which RPAR compound statement -> KW_FOREACH LPAR IDENTIFIER KW_IN expression reverse_opt foreach_while foreach_which RPAR compound statement -> KW_IF LPAR expression RPAR compound elsestatement statement -> KW_ASSERT LPAR expression RPAR SEMICOLON statement -> KW_SWITCH LPAR expression RPAR LBRACE switchcases default_opt RBRACE elsestatement -> {empty} elsestatement -> KW_ELSE compound elsestatement -> KW_ELIF LPAR expression RPAR compound elsestatement foreach_while -> {empty} foreach_while -> KW_WHILE expression foreach_which -> {empty} foreach_which -> KW_WHICH expression inclusive_opt -> {empty} inclusive_opt -> KW_INCLUSIVE inclusive_opt -> KW_EXCLUSIVE reverse_opt -> {empty} reverse_opt -> KW_REVERSE switchcases -> switchcase switchcases -> switchcases switchcase switchcase -> KW_CASE SPECIALIDENT identlist COLON compound switchcase -> KW_CASE TYPENAME COLONCOLON SPECIALIDENT identlist COLON compound switchcase -> KW_CASE SPECIALIDENT COLON compound switchcase -> KW_CASE TYPENAME COLONCOLON SPECIALIDENT COLON compound default_opt -> {empty} default_opt -> KW_DEFAULT COLON compound variabledeclaration -> type IDENTIFIER variabledeclaration -> variabledeclaration COMMA IDENTIFIER variabledeclaration -> variabledeclaration SEMICOLON variabledeclaration -> variabledeclaration ASSIGN expression SEMICOLON variabledeclarations -> variabledeclaration variabledeclarations -> variabledeclarations variabledeclaration type -> TYPE_CHAR type -> TYPE_BOOL type -> TYPE_HANDLE type -> TYPE_STRING type -> TYPE_FILE type -> TYPE_DIR type -> TYPE_I8 type -> TYPE_U8 type -> TYPE_I16 type -> TYPE_U16 type -> TYPE_I32 type -> TYPE_U32 type -> TYPE_I64 type -> TYPE_U64 type -> TYPE_F32 type -> TYPE_F64 type -> TYPENAME type -> KW_SEQ LANGLEBRACKET type RANGLEBRACKET expression_opt -> {empty} expression_opt -> expression expression -> COLONCOLON IDENTIFIER expression -> COLONCOLON STRINGLIT expression -> expression COMMA expression expression -> LPAR expression RPAR expression -> funccallexpr expression -> string expression -> KW_TRUE expression -> KW_FALSE expression -> CHARLIT expression -> FLOATNUMBER expression -> DOUBLENUMBER expression -> integer8 expression -> unsigned8 expression -> integer16 expression -> unsigned16 expression -> integer32 expression -> unsigned32 expression -> integer64 expression -> unsigned64 expression -> lvalue expression -> KW_SEQ LANGLEBRACKET type RANGLEBRACKET LBRACE RBRACE expression -> KW_SEQ LANGLEBRACKET type RANGLEBRACKET LBRACE expression RBRACE expression -> KW_SEQ LBRACE expression RBRACE expression -> TYPENAME LBRACE RBRACE expression -> TYPENAME LBRACE expression RBRACE expression -> TYPENAME LBRACE fieldassigns RBRACE expression -> LPAR expression RPAR LBRACE fieldassigns RBRACE expression -> SPECIALIDENT expression -> SPECIALIDENT LBRACE expression RBRACE expression -> TYPENAME COLONCOLON SPECIALIDENT expression -> TYPENAME COLONCOLON SPECIALIDENT LBRACE expression RBRACE expression -> TYPENAME LPAR IDENTIFIER RPAR expression -> TYPENAME LPAR STRINGLIT RPAR funccallexpr -> expression LPAR RPAR funccallexpr -> expression LPAR expression RPAR funccallexpr -> expression OP_LORELSE expression funccallexpr -> expression OP_LANDTHEN expression funccallexpr -> expression OP_LEFT03 expression funccallexpr -> expression OP_RIGHT03 expression funccallexpr -> expression OP_LEFT04 expression funccallexpr -> expression OP_RIGHT04 expression funccallexpr -> expression OP_LEFT05 expression funccallexpr -> expression OP_RIGHT05 expression funccallexpr -> expression OP_LEFT06 expression funccallexpr -> expression OP_RIGHT06 expression funccallexpr -> expression OP_LEFT07 expression funccallexpr -> expression OP_RIGHT07 expression funccallexpr -> expression OP_LEFT08 expression funccallexpr -> expression OP_RIGHT08 expression funccallexpr -> expression OP_LEFT09 expression funccallexpr -> expression OP_RIGHT09 expression funccallexpr -> expression OP_LEFT10 expression funccallexpr -> expression OP_RIGHT10 expression funccallexpr -> expression OP_LEFT11 expression funccallexpr -> expression LANGLEBRACKET expression funccallexpr -> expression RANGLEBRACKET expression funccallexpr -> expression OP_RIGHT11 expression funccallexpr -> expression OP_LEFT12 expression funccallexpr -> expression OP_RIGHT12 expression funccallexpr -> expression OP_LEFT13 expression funccallexpr -> expression OP_RIGHT13 expression funccallexpr -> expression OP_LEFT14 expression funccallexpr -> expression OP_RIGHT14 expression funccallexpr -> expression OP_LEFT15 expression funccallexpr -> expression OP_RIGHT15 expression funccallexpr -> expression OP_RIGHT03 funccallexpr -> OP_LEFT03 expression funccallexpr -> expression OP_RIGHT04 funccallexpr -> OP_LEFT04 expression funccallexpr -> expression OP_RIGHT05 funccallexpr -> OP_LEFT05 expression funccallexpr -> expression OP_RIGHT06 funccallexpr -> OP_LEFT06 expression funccallexpr -> expression OP_RIGHT07 funccallexpr -> OP_LEFT07 expression funccallexpr -> expression OP_RIGHT08 funccallexpr -> OP_LEFT08 expression funccallexpr -> expression OP_RIGHT09 funccallexpr -> OP_LEFT09 expression funccallexpr -> expression OP_RIGHT10 funccallexpr -> OP_LEFT10 expression funccallexpr -> expression OP_RIGHT11 funccallexpr -> OP_LEFT11 expression funccallexpr -> LANGLEBRACKET expression funccallexpr -> RANGLEBRACKET expression funccallexpr -> expression OP_RIGHT12 funccallexpr -> OP_LEFT12 expression funccallexpr -> expression OP_RIGHT13 funccallexpr -> OP_LEFT13 expression funccallexpr -> expression OP_RIGHT14 funccallexpr -> OP_LEFT14 expression funccallexpr -> expression OP_RIGHT15 funccallexpr -> OP_LEFT15 expression lvalue -> IDENTIFIER lvalue -> IDENTIFIER COLONCOLON IDENTIFIER lvalue -> KW_GLOBAL COLONCOLON IDENTIFIER lvalue -> KW_MAIN COLONCOLON IDENTIFIER lvalue -> KW_CTOR COLONCOLON IDENTIFIER lvalue -> KW_DTOR COLONCOLON IDENTIFIER lvalue -> lvalue LBRACKET expression RBRACKET lvalue -> lvalue DOT IDENTIFIER lvalue -> KW_OLD IDENTIFIER assignment_opt -> {empty} assignment_opt -> assignment assignment -> assignment_builder assignment_builder -> lvalue ASSIGN expression assignment_builder -> lvalue COMMA assignment_builder fieldassigns -> fieldassign fieldassigns -> fieldassigns fieldassign fieldassign -> DOT IDENTIFIER ASSIGN expression SEMICOLON fieldassign -> DOT IDENTIFIER COMMA fieldassign