DSL EXPRESSION:
subr s(a) {print "HELLO, ".a."!"} call s("WORLD")


AST:
"block" [tt:block] [nt:StatementBlock]
    "s" [tt:non_sigil_name] [nt:SubroutineDefinition]
        "params" [tt:params] [nt:ParameterList]
            "params" [tt:params] [nt:ParameterList]
                "a" [tt:non_sigil_name] [nt:Parameter]
                    "a" [tt:non_sigil_name] [nt:LocalVariable]
        "block" [tt:block] [nt:StatementBlockInBraces]
            "block" [tt:block] [nt:StatementBlock]
                "print" [tt:kw_print] [nt:PrintStatement]
                    "." [tt:op_dot] [nt:DotOperator]
                        "." [tt:op_dot] [nt:DotOperator]
                            ""HELLO, "" [tt:string_literal] [nt:string_literal]
                            "a" [tt:non_sigil_name] [nt:LocalVariable]
                        ""!"" [tt:string_literal] [nt:string_literal]
    "s" [tt:non_sigil_name] [nt:SubroutineCallsite]
        ""WORLD"" [tt:string_literal] [nt:string_literal]

