public Parser literal() {
        if (literalParser == null) {
           FutureParser future = scoped("literal");
           literalParser = future;
           future.setParser(
               choice(
                   sequence(
                       literalValue(),
                       star(
                           concatenatedLiteral()
                       )
                   ),
                   sequence(
                       constant(),
                       plus(
                           concatenatedLiteral()
                       )
                   )
               )
           );
        }

        return literalParser;
    }