2016-11-22 9 views
0

Я разбираю поток с фрагментами записи, которые всегда являются последовательными, но не всегда последовательными, например, в примере ниже строки 1 и 3 являются частью одной и той же записи, и хотя строка 1 всегда будет перед строкой 3, возможно чтобы получить совершенно не связанную линию между ними, в этом случае линии 2, которая мимоходом должна быть согласована с линией 4.Может ли ANTLR разыгрывать нескончаемые фрагменты записи?

1: [[aaaa 
2: [[bbbb 
3: aaaa]] 
4: bbbb]] 

Если есть детерминированный способ соответствовать фрагментов записи, может Antlr справиться с такого рода фрагментация? Если да, то какова будет грамматика?

+2

Если существует детерминированная * лексическая процедура для перестановки ввода, вы можете использовать ее для создания фильтра переднего конца, который подает исправленный ввод в ваш синтаксический анализатор. Если вы думаете о построении * грамматики *, которая принимает смешанный вход, тогда ответ, вероятно, «нет», но было бы полезно увидеть более точное описание проблемы. – rici

+0

Спасибо @rici: Что вы подразумеваете под процедурой _lexical_? – rbinnun

ответ

1

Нет, это невозможно (и мне интересно, даже если это желательно, учитывая, что вы не можете совместить начало и конец частей перемешанного ввода в произвольно глубоком вложенном источнике). Вход всегда обрабатывается, поскольку он поступает из входного потока. Вы можете, конечно, подделывать входные данные путем подачи в разные части источника на определенных условиях. Но для этого потребуется предварительная обработка ввода до уровня, который почти такой же, как на следующем этапе синтаксического анализа.

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

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