2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




На страницу Пред.  1, 2
 
 Re: Литература по созданию языков программирования
Сообщение03.10.2015, 23:22 
Pavia в сообщении #1058901 писал(а):
Делайте проще. Отсеивайте комментарии на стадии разбора лексем.
Это был наводящий вопрос. Очевидно, rockclimber тоже знал, что в таком случае поступают так.

Pavia в сообщении #1058901 писал(а):
Модуль
Может, всё-таки, Модула? :wink:

 
 
 
 Re: Литература по созданию языков программирования
Сообщение03.10.2015, 23:24 
arseniiv в сообщении #1058932 писал(а):
Это был наводящий вопрос. Очевидно, rockclimber тоже знал, что в таком случае поступают так.
Я тут вообще ни при чем, Pavia просто неправильно процитировал.

 
 
 
 Re: Литература по созданию языков программирования
Сообщение04.10.2015, 00:13 
Оу, простите, не проверил.

 
 
 
 Re: Литература по созданию языков программирования
Сообщение04.10.2015, 03:38 
Pavia в сообщении #1058901 писал(а):
А что-бы работало быстро надо переводить в ДКА
Ну, таки в ДКА переводят отнюдь не скорости для. Для скорости используют компиляцию в ДКА вместо интерпретации.
Pavia в сообщении #1058901 писал(а):
забыть про все вопросы КЗ и составить грамматику так что-бы в нём не было таких зависимостей. Что сделал Вирт создавая свои языки
Странная фраза. Язык с обязательным описанием переменных не может задаваться КС-грамматикой. Собственно, язык без обязательного описания — тоже. Можно вынести контекстные зависимости в отдельную тему, как, собственно, все и делают.

-- 04.10.2015, 10:45 --

И на всякий случай добавлю: вся эта теория, LL, LR, Bison, Yacc, восстановление ошибок (вот уж жуть жуткая) — очень интересна и захватывающа сама по себе; но если не стоит цель реализовать серьёзный язык (посерьёзнее Паскаля), таки быстрее не заморачиваться ею, а сесть да написать. Ну вот просто рекурсивным спуском.

 
 
 
 Re: Литература по созданию языков программирования
Сообщение04.10.2015, 08:23 
Аватара пользователя
iifat
Видимо это сложно и надо пояснить мысль.
iifat в сообщении #1058971 писал(а):
Ну, таки в ДКА переводят отнюдь не скорости для. Для скорости используют компиляцию в ДКА вместо интерпретации.

Алгоритм разбор строки классический НКА является многопроходным, в отличии от ДКА. Поэтому и переводят НКА в ДКА. Отсюда и прирост в скорости.
Пусть есть правило
Используется синтаксис Text
животное:=
  | 'кот'
  | 'пёc';

И входная строка которую надо разобрать 'котопёс'.

Суть в том что при разборе строки. У нас есть каретка которая перемещается вдоль строки до тех пор пока автомат не встанет на развилке.
В нашем примере грамматика сразу начинается с развилки.
Алгоритм А)
Если одна ветка правила не срабатывает, то корректора возвращается в исходное состояние и проверяется следующая ветка.
Алгоритм Б)
Порождаются две или более кареток, каждая из которых идёт своим путем по грамматике.

код: [ скачать ] [ спрятать ]
Используется синтаксис Text
котопёс
^0--------- исходное состояние

котопёс
  ^1------- сработало
кот

//Возвращаем каретку проверяем вторую ветку.
котопёс
^2--------- не сработало
пёс

//далее смещается исходное состояние
котопёс
 ^0--------- исходное состояние

//и далее алгоритм идёт по кругу
 


Отличия ДКА от НКА в том что все возможные состояния(положения кареток) автомата НКА перечисляются в программе-автомата ДКА. При этом состояния, которые относятся к одной позиции в строке и к одной общей букве объединяются в одно общее состояние автомата. Теперь каретке не нужно бегать взад и вперёд по строке, достаточно идти от элемента к элементу.

код: [ скачать ] [ спрятать ]
Используется синтаксис Text
котопёс
^----------- s1 - работа

котопёс
 ^----------- s2 - работа

котопёс
  ^----------- s4 - вывод от -3 позиции

котопёс
   ^----------- s5 - работа
..
котопёс
     ^----------- s100 - работа

котопёс
      ^----------- s101 - вывод от -3 позиции
 


iifat в сообщении #1058971 писал(а):
Странная фраза. Язык с обязательным описанием переменных не может задаваться КС-грамматикой.
А где говорилось о задании? Задание подразумевает полное описание языка. Здесь речь шла только о формальное описание языка. Разумеется в нормальном языке программирования помимо этого присутствует семантическая часть. Если хотите детально это обсудить давайте заведём отдельную тему.

 
 
 
 Re: Литература по созданию языков программирования
Сообщение04.10.2015, 11:29 
Pavia в сообщении #1058994 писал(а):
Алгоритм разбор строки классический НКА является многопроходным
Отсюда и далее — обсуждение реализации. К собственно НКА отношение имеет достаточно опосредованное. Поскольку одним из вариантов реализации НКА как раз и является перевод в ДКА.

-- 04.10.2015, 18:31 --

Pavia в сообщении #1058994 писал(а):
А где говорилось о задании?
А это, по-вашему, что?
rockclimber в сообщении #934909 писал(а):
на данный момент мне предстоит создать некий простенький DSL

 
 
 [ Сообщений: 21 ]  На страницу Пред.  1, 2


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group