Итак, я реализую контекстно-зависимый синтаксический анализатор. Это своего рода экспериментальная вещь, и одна из вещей, в которой я нуждаюсь, - это удобные и практичные синтаксические решения, чтобы проверить ее.Примеры практических контекстно-зависимых структур программирования
Например, следующий пример невозможно проанализировать с использованием стандартной CFG (контекстной свободной грамматики). В основном это позволяет объявлять несколько переменных не связанных между собой типов данных и одновременно инициализировать их.
int bool string number flag str = 1 true "Hello";
Если я опускаю несколько деталей, то можно формально описать следующим образом:
L = {anbncn | n >= 1}
Итак, я был бы признателен, как много подобных примеров, как вы можете думать, однако, они действительно должно быть практичным. Что-то, что оценят фактические программисты.
Я думаю, что ваш пример уже не практичен. Требуется довольно много усилий, чтобы визуально «разобрать» эту строку, и я не знаю, почему «int bool string number flag str = 1 true« Hello »;' будет более удобным, чем более классический порядок, такой как 'int number 1, bool flag true, строка str "hello" '. – GolezTrol
Как просто нужно объявить переменную перед использованием этой переменной? Это поражает меня как канонический пример общей черты языков программирования, которая не является свободной от контекста. – Patrick87
@GolezTrol вы, вероятно, правы, что описанный вами синтаксис более читабельен, хотя, с другой стороны, это абсолютно бесполезная информация. Это не похоже на то, что я просто остановлюсь на имплантации ... Какой-то реальный контекстно-зависимый пример будет намного лучше. Или вы считаете, что контекстно-зависимые парсеры неэффективны? –