@Algorithm(lr, 1)

// This grammar is provided in Denny and Malloy's article. It has the interesting 
// property that, if one tries to build LALR(1) tables with conflict resolution, the 
// resulting parser does not have the same behaviour as the one generated by canonical
// LR(1) with conflict resolution. The IELR algorithm should be correct in this regard.

Start: A Node1 A
	|  A Node2 B
	|  A Node3 C
	|  B Node1 B
	|  B Node2 A
	|  B Node3 A
Node1: A A
Node2: A A
Node3: A A

@conflict(reduce(Node2, 0) > reduce(Node3, 0))

// This fails under LALR(1), but succeeds here !
@example(A A A B)