(Письменные) Языки — это не что иное, как структурированные последовательности символов, которые содержат информацию. Это ничем не отличается от того, что у вас есть. Файлы данных, файлы настроек конфигурации — все это последовательности символов, которые содержат информацию. Порядок и последовательность символов необходимо распознать, чтобы обнаружить (или сопоставить) содержащуюся в них информацию.
Однако существуют различные способы структурирования символов для представления информации. Некоторые способы организации символов распознать легче, чем другие. Под проще я подразумеваю меньше кода, меньше времени и более простые алгоритмы. Некоторые сложнее.
То, что вы спрашиваете, на самом деле означает: «Требуется ли для распознавания этого примерного расположения символов алгоритм такой сложности?»
Ответ прост: информатика. Я бы просто использовал иерархию Хомского, чтобы оценить тип алгоритма, необходимого для синтаксического анализа (сопоставления) последовательности символов в файле.
Без дальнейших подробных объяснений достаточно сказать, что язык относится либо к типу 2, либо к типу 3 и, безусловно, может быть проанализирован LALR-парсером. Осталось решить только один вопрос: не слишком ли сложен LALR-парсер для этого языка.
Можем ли мы использовать обычную грамматику (и, следовательно, регулярные выражения) для этой задачи? Вашего примера файловой структуры на самом деле недостаточно для ответа на этот вопрос. Вам нужно знать, могут ли структуры быть вложенными или нет. Может ли BLOCK содержать BLOCK или нет?
Если нет вложенности, регулярные выражения достаточно мощны, и есть множество инструментов, которые выполняют эту работу (например, egrep, perl, awk, sed, findstr).
person
Brian Tompsett - 汤莱恩
schedule
13.01.2017