public static Either <ParseException, Pair <List <IToken>, PrimitiveTypeNode> > Parse(List <IToken> tokens) { Console.WriteLine("PrimitiveTypeNode"); return (IntegerTypeNode.Parse(tokens) .Map(p => new Pair <List <IToken>, PrimitiveTypeNode>(p.First, p.Second)) || RealTypeNode.Parse(tokens) .Map(p => new Pair <List <IToken>, PrimitiveTypeNode>(p.First, p.Second)) || BooleanTypeNode.Parse(tokens) .Map(p => new Pair <List <IToken>, PrimitiveTypeNode>(p.First, p.Second)) ); }