DSL EXPRESSION:
begin{true{@x=1}}; true{@x=2}; end{true{@x=3}}


AST:
"block" [tt:block] [nt:StatementBlock]
    "begin" [tt:kw_begin] [nt:BeginBlock]
        "block" [tt:block] [nt:StatementBlockInBraces]
            "block" [tt:block] [nt:StatementBlock]
                "true" [tt:literal_true] [nt:CondBlock]
                    "true" [tt:literal_true] [nt:bool_literal]
                    "block" [tt:block] [nt:StatementBlockInBraces]
                        "block" [tt:block] [nt:StatementBlock]
                            "=" [tt:equals] [nt:Assignment]
                                "@x" [tt:oosvar_name] [nt:DirectOosvarValue]
                                "1" [tt:int_literal] [nt:int_literal]
    "true" [tt:literal_true] [nt:CondBlock]
        "true" [tt:literal_true] [nt:bool_literal]
        "block" [tt:block] [nt:StatementBlockInBraces]
            "block" [tt:block] [nt:StatementBlock]
                "=" [tt:equals] [nt:Assignment]
                    "@x" [tt:oosvar_name] [nt:DirectOosvarValue]
                    "2" [tt:int_literal] [nt:int_literal]
    "end" [tt:kw_end] [nt:EndBlock]
        "block" [tt:block] [nt:StatementBlockInBraces]
            "block" [tt:block] [nt:StatementBlock]
                "true" [tt:literal_true] [nt:CondBlock]
                    "true" [tt:literal_true] [nt:bool_literal]
                    "block" [tt:block] [nt:StatementBlockInBraces]
                        "block" [tt:block] [nt:StatementBlock]
                            "=" [tt:equals] [nt:Assignment]
                                "@x" [tt:oosvar_name] [nt:DirectOosvarValue]
                                "3" [tt:int_literal] [nt:int_literal]

