I think the following grammar will produce a right-leaning syntax tree.
EXPR = START, END
START = GROUP | LIT
END = "-", EXPR | NOTHING
e.g., in your example in Main, 1-1-1-1 is parsed into Success (Sub (Lit 1) (Sub (Lit 1) (Sub (Lit 1) (Lit 1)))), but it should be Success (Sub (Sub (Sub (Lit 1) (Lit 1)) (Lit 1)) (Lit 1))
I think the following grammar will produce a right-leaning syntax tree.
e.g., in your example in
Main,1-1-1-1is parsed intoSuccess (Sub (Lit 1) (Sub (Lit 1) (Sub (Lit 1) (Lit 1)))), but it should beSuccess (Sub (Sub (Sub (Lit 1) (Lit 1)) (Lit 1)) (Lit 1))