public Parser atomicExpression() {
        if (atomicExpressionParser == null) {
           FutureParser future = scoped("atomicExpression");
           atomicExpressionParser = future;
           future.setParser(
               choice(
                   zero(),
                   identifier(),
                   numeric(),
                   sequence(
                       token("("),
                       arithmeticExpression(),
                       token(")")
                   )
               )
           );
        }

        return atomicExpressionParser;
    }