2015-05-22 1 views
0

Я хотел был бы иметь возможность напечатать это сообщение об ошибке используя Ragel => Ошибка анализа, найденная в строке позиции: col, вместо этого ожидается целое число.Печать Ожидаемый токен Тип XXX при возникновении ошибки синтаксического анализа

Возможно ли это с Ragel?

С наилучшими пожеланиями

ответ

1

я не получил слишком далеко в обработку в Рагеля ошибки просто, но я бы ожидать, что если вы используете действие ошибки операторов вложения, как указано в разделе 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); 

Конечно, вышеизложенное может потребовать некоторой настройки, основанной на том, что вы делаете, но, по крайней мере, это отправная точка.

 Смежные вопросы

  • Нет связанных вопросов^_^