я не получил слишком далеко в обработку в Рагеля ошибки просто, но я бы ожидать, что если вы используете действие ошибки операторов вложения, как указано в разделе 3.2.3 Руководства Ragel 6.9 , который будет отменять сообщение по умолчанию.
Вы можете получить номер строки приращения счетчика на каждую строке, и получить столбец, взяв текущую позицию и вычитание позиции предыдущей строки, что-то вроде этого:
newline = '\n' %{ ++lineCounter; linePosition = p; }
action ErrorHandler {
column = p - linePosition + 1;
// Print error message here using lineCounter and column
}
main := (allsortsofstuff | newline)* <>err(ErrorHandler);
Конечно, вышеизложенное может потребовать некоторой настройки, основанной на том, что вы делаете, но, по крайней мере, это отправная точка.