<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://pascalabc.net/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ksanderer</id>
	<title>Вики проекта PascalABC.NET - Вклад [ru]</title>
	<link rel="self" type="application/atom+xml" href="https://pascalabc.net/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ksanderer"/>
	<link rel="alternate" type="text/html" href="https://pascalabc.net/wiki/index.php/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/Ksanderer"/>
	<updated>2026-04-18T12:33:50Z</updated>
	<subtitle>Вклад</subtitle>
	<generator>MediaWiki 1.39.1</generator>
	<entry>
		<id>https://pascalabc.net/wiki/index.php?title=%D0%9C%D0%9F%D0%9E%D0%9A_2011&amp;diff=2265</id>
		<title>МПОК 2011</title>
		<link rel="alternate" type="text/html" href="https://pascalabc.net/wiki/index.php?title=%D0%9C%D0%9F%D0%9E%D0%9A_2011&amp;diff=2265"/>
		<updated>2012-01-17T20:39:49Z</updated>

		<summary type="html">&lt;p&gt;Ksanderer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Роли в проекте и задания разработчикам 2011]]&amp;lt;br\&amp;gt;&lt;br /&gt;
[[Грамматика языка Pascal]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Грамматика языка С]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Диаграмма классов синтаксического дерева]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Грамматика Pascal + Код]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Грамматика C + Код]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Собранный проект с последними изменениями - всем скачать]]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://files.mail.ru/KA9Z5M Изменения с пары 27.10.2011]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://webfile.ru/5697190 Компилятор, который строит синтаксическое дерево программы (язык Pascal) 10.11.2011]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://dl.dropbox.com/u/18182279/MSS/dvel.zip Удаление мертвых переменных внутри базового блока (новая) 08.12.2011]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Разбиение списка квадрик на базовые блоки]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Интерфейс анализа потока данных]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Итерационный алгоритм 22.12.2011]]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://files.mail.ru/ECHTEG Передаточная функция 15.12.2011 (исправленна)]&amp;lt;br&amp;gt;&lt;br /&gt;
[https://docs.google.com/open?id=0B8UsDAZfZqedODNlYWVlN2YtMjVjNi00NjNmLTkzOGItODYxOTVhYzhkZDIz Отчет]&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ksanderer</name></author>
	</entry>
	<entry>
		<id>https://pascalabc.net/wiki/index.php?title=%D0%9C%D0%9F%D0%9E%D0%9A_2011&amp;diff=2264</id>
		<title>МПОК 2011</title>
		<link rel="alternate" type="text/html" href="https://pascalabc.net/wiki/index.php?title=%D0%9C%D0%9F%D0%9E%D0%9A_2011&amp;diff=2264"/>
		<updated>2012-01-17T20:33:34Z</updated>

		<summary type="html">&lt;p&gt;Ksanderer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Роли в проекте и задания разработчикам 2011]]&amp;lt;br\&amp;gt;&lt;br /&gt;
[[Грамматика языка Pascal]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Грамматика языка С]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Диаграмма классов синтаксического дерева]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Грамматика Pascal + Код]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Грамматика C + Код]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Собранный проект с последними изменениями - всем скачать]]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://files.mail.ru/KA9Z5M Изменения с пары 27.10.2011]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://webfile.ru/5697190 Компилятор, который строит синтаксическое дерево программы (язык Pascal) 10.11.2011]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://dl.dropbox.com/u/18182279/MSS/dvel.zip Удаление мертвых переменных внутри базового блока (новая) 08.12.2011]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Разбиение списка квадрик на базовые блоки]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Интерфейс анализа потока данных]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Итерационный алгоритм 22.12.2011]]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://files.mail.ru/ECHTEG Передаточная функция 15.12.2011 (исправленна)]&amp;lt;br&amp;gt;&lt;br /&gt;
[https://docs.google.com/open?id=0B8UsDAZfZqedMDA1MGZlNTAtZjI2Ny00NmZhLTgzYzgtODMxYjg5YzgzMTNl Отчет]&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ksanderer</name></author>
	</entry>
	<entry>
		<id>https://pascalabc.net/wiki/index.php?title=%D0%9C%D0%9F%D0%9E%D0%9A_2011&amp;diff=2255</id>
		<title>МПОК 2011</title>
		<link rel="alternate" type="text/html" href="https://pascalabc.net/wiki/index.php?title=%D0%9C%D0%9F%D0%9E%D0%9A_2011&amp;diff=2255"/>
		<updated>2011-12-29T08:43:12Z</updated>

		<summary type="html">&lt;p&gt;Ksanderer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Роли в проекте и задания разработчикам 2011]]&amp;lt;br\&amp;gt;&lt;br /&gt;
[[Грамматика языка Pascal]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Грамматика языка С]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Диаграмма классов синтаксического дерева]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Грамматика Pascal + Код]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Грамматика C + Код]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Собранный проект с последними изменениями - всем скачать]]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://files.mail.ru/KA9Z5M Изменения с пары 27.10.2011]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://webfile.ru/5697190 Компилятор, который строит синтаксическое дерево программы (язык Pascal) 10.11.2011]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://dl.dropbox.com/u/18182279/MSS/dvel.zip Удаление мертвых переменных внутри базового блока (новая) 08.12.2011]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Разбиение списка квадрик на базовые блоки]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Интерфейс анализа потока данных]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Итерационный алгоритм 22.12.2011]]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://files.mail.ru/ECHTEG Передаточная функция 15.12.2011 (исправленна)]&amp;lt;br&amp;gt;&lt;br /&gt;
[https://docs.google.com/open?id=0B8UsDAZfZqedNzM1YjBhODItY2Q2OC00MGE4LWI1OGEtMDA0M2IxYWM5YzI1 Отчет]&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ksanderer</name></author>
	</entry>
	<entry>
		<id>https://pascalabc.net/wiki/index.php?title=%D0%A0%D0%BE%D0%BB%D0%B8_%D0%B2_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B5_%D0%B8_%D0%B7%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D1%8F_%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%87%D0%B8%D0%BA%D0%B0%D0%BC_2011&amp;diff=2233</id>
		<title>Роли в проекте и задания разработчикам 2011</title>
		<link rel="alternate" type="text/html" href="https://pascalabc.net/wiki/index.php?title=%D0%A0%D0%BE%D0%BB%D0%B8_%D0%B2_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B5_%D0%B8_%D0%B7%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D1%8F_%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%87%D0%B8%D0%BA%D0%B0%D0%BC_2011&amp;diff=2233"/>
		<updated>2011-11-17T11:15:53Z</updated>

		<summary type="html">&lt;p&gt;Ksanderer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Темченко А. А. Соловьев Л. В.&lt;br /&gt;
&lt;br /&gt;
1) парсер С&lt;br /&gt;
&lt;br /&gt;
2) Передаточная функция в общем виде (композиция передаточных функций/оператор умножения для передаточных функций/).&lt;br /&gt;
&lt;br /&gt;
3) Функция создания множеств Gen, Kill по квадрике или  базовому блоку.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Венцко А.З. &lt;br /&gt;
&lt;br /&gt;
1) парсер языка Pascal&lt;br /&gt;
&lt;br /&gt;
2) множества IN[B], OUT[B], gen B, kill B, конструктор классов для достижимых определений (совместно) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Владыкин К.В. &lt;br /&gt;
&lt;br /&gt;
1) алгоритм удаления мертвых переменных&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Баштанова Д.С., Найденов С.Г.&lt;br /&gt;
&lt;br /&gt;
1) первичное описание классов синтаксического дерева&lt;br /&gt;
&lt;br /&gt;
2) Инфраструктура visitor'ов&lt;br /&gt;
&lt;br /&gt;
3) абстрактный класс, передаточная функция, класс для достигающих определений&lt;br /&gt;
&lt;br /&gt;
4) алгоритм вычисления композиции передаточной функции&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Науменко А.Е., Пак К.Р.&lt;br /&gt;
&lt;br /&gt;
1) Обработчики грамматики &lt;br /&gt;
&lt;br /&gt;
2) Разбиение на блоки&lt;br /&gt;
&lt;br /&gt;
3) реализация итерационного алгоритма&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Пронин А., Бувайло О.&lt;br /&gt;
&lt;br /&gt;
1) Visitor для генерации трехадресного кода. Структура для трехадрессного кода.&lt;br /&gt;
&lt;br /&gt;
2) Квадрики - http://file.qip.ru/file/lbbaZEsQ/GenerateQuadruple.html&lt;/div&gt;</summary>
		<author><name>Ksanderer</name></author>
	</entry>
	<entry>
		<id>https://pascalabc.net/wiki/index.php?title=%D0%A0%D0%BE%D0%BB%D0%B8_%D0%B2_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B5_%D0%B8_%D0%B7%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D1%8F_%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%87%D0%B8%D0%BA%D0%B0%D0%BC_2011&amp;diff=2232</id>
		<title>Роли в проекте и задания разработчикам 2011</title>
		<link rel="alternate" type="text/html" href="https://pascalabc.net/wiki/index.php?title=%D0%A0%D0%BE%D0%BB%D0%B8_%D0%B2_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B5_%D0%B8_%D0%B7%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D1%8F_%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%87%D0%B8%D0%BA%D0%B0%D0%BC_2011&amp;diff=2232"/>
		<updated>2011-11-17T11:15:43Z</updated>

		<summary type="html">&lt;p&gt;Ksanderer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Темченко А. А. Соловьев Л. В.&lt;br /&gt;
&lt;br /&gt;
1) парсер С&lt;br /&gt;
&lt;br /&gt;
2) Передаточная функция в общем виде (композиция передаточных функций/оператор умножения для передаточных функций/).&lt;br /&gt;
&lt;br /&gt;
3) Функция создания множеств Gen, Kill по квадрике или  базовому блоку.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Венцко А.З. &lt;br /&gt;
[[Изображение:Example.jpg]]&lt;br /&gt;
1) парсер языка Pascal&lt;br /&gt;
&lt;br /&gt;
2) множества IN[B], OUT[B], gen B, kill B, конструктор классов для достижимых определений (совместно) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Владыкин К.В. &lt;br /&gt;
&lt;br /&gt;
1) алгоритм удаления мертвых переменных&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Баштанова Д.С., Найденов С.Г.&lt;br /&gt;
&lt;br /&gt;
1) первичное описание классов синтаксического дерева&lt;br /&gt;
&lt;br /&gt;
2) Инфраструктура visitor'ов&lt;br /&gt;
&lt;br /&gt;
3) абстрактный класс, передаточная функция, класс для достигающих определений&lt;br /&gt;
&lt;br /&gt;
4) алгоритм вычисления композиции передаточной функции&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Науменко А.Е., Пак К.Р.&lt;br /&gt;
&lt;br /&gt;
1) Обработчики грамматики &lt;br /&gt;
&lt;br /&gt;
2) Разбиение на блоки&lt;br /&gt;
&lt;br /&gt;
3) реализация итерационного алгоритма&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Пронин А., Бувайло О.&lt;br /&gt;
&lt;br /&gt;
1) Visitor для генерации трехадресного кода. Структура для трехадрессного кода.&lt;br /&gt;
2) Квадрики - http://file.qip.ru/file/lbbaZEsQ/GenerateQuadruple.html&lt;/div&gt;</summary>
		<author><name>Ksanderer</name></author>
	</entry>
	<entry>
		<id>https://pascalabc.net/wiki/index.php?title=%D0%A0%D0%BE%D0%BB%D0%B8_%D0%B2_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B5_%D0%B8_%D0%B7%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D1%8F_%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%87%D0%B8%D0%BA%D0%B0%D0%BC_2011&amp;diff=2229</id>
		<title>Роли в проекте и задания разработчикам 2011</title>
		<link rel="alternate" type="text/html" href="https://pascalabc.net/wiki/index.php?title=%D0%A0%D0%BE%D0%BB%D0%B8_%D0%B2_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B5_%D0%B8_%D0%B7%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D1%8F_%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%87%D0%B8%D0%BA%D0%B0%D0%BC_2011&amp;diff=2229"/>
		<updated>2011-11-17T10:24:03Z</updated>

		<summary type="html">&lt;p&gt;Ksanderer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Темченко А. А. Соловьев Л. В.&lt;br /&gt;
&lt;br /&gt;
1) парсер С&lt;br /&gt;
&lt;br /&gt;
2) Передаточная функция в общем виде (композиция передаточных функций/оператор умножения для передаточных функций/).&lt;br /&gt;
&lt;br /&gt;
3) Функция создания множеств Gen, Kill по квадрике или  базовому блоку.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Венцко А.З. &lt;br /&gt;
&lt;br /&gt;
1) парсер языка Pascal&lt;br /&gt;
&lt;br /&gt;
2) множества IN[B], OUT[B], gen B, kill B, конструктор классов для достижимых определений (совместно) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Владыкин К.В. &lt;br /&gt;
&lt;br /&gt;
1) алгоритм удаления мертвых переменных&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Баштанова Д.С., Найденов С.Г.&lt;br /&gt;
&lt;br /&gt;
1) первичное описание классов синтаксического дерева&lt;br /&gt;
&lt;br /&gt;
2) Инфраструктура visitor'ов&lt;br /&gt;
&lt;br /&gt;
3) абстрактный класс, передаточная функция, класс для достигающих определений&lt;br /&gt;
&lt;br /&gt;
4) алгоритм вычисления композиции передаточной функции&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Науменко А.Е., Пак К.Р.&lt;br /&gt;
&lt;br /&gt;
1) Обработчики грамматики &lt;br /&gt;
&lt;br /&gt;
2) Разбиение на блоки&lt;br /&gt;
&lt;br /&gt;
3) реализация итерационного алгоритма&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Пронин А., Бувайло О.&lt;br /&gt;
&lt;br /&gt;
1) Visitor для генерации трехадресного кода. Структура для трехадрессного кода.&lt;/div&gt;</summary>
		<author><name>Ksanderer</name></author>
	</entry>
	<entry>
		<id>https://pascalabc.net/wiki/index.php?title=%D0%A0%D0%BE%D0%BB%D0%B8_%D0%B2_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B5_%D0%B8_%D0%B7%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D1%8F_%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%87%D0%B8%D0%BA%D0%B0%D0%BC_2011&amp;diff=2228</id>
		<title>Роли в проекте и задания разработчикам 2011</title>
		<link rel="alternate" type="text/html" href="https://pascalabc.net/wiki/index.php?title=%D0%A0%D0%BE%D0%BB%D0%B8_%D0%B2_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B5_%D0%B8_%D0%B7%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D1%8F_%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%87%D0%B8%D0%BA%D0%B0%D0%BC_2011&amp;diff=2228"/>
		<updated>2011-11-17T10:23:45Z</updated>

		<summary type="html">&lt;p&gt;Ksanderer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Темченко А. А. Соловьев Л. В.&lt;br /&gt;
&lt;br /&gt;
1) парсер С&lt;br /&gt;
2) Передаточная функция в общем виде (композиция передаточных функций/оператор умножения для передаточных функций/).&lt;br /&gt;
3) Функция создания множеств Gen, Kill по квадрике или  базовому блоку.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Венцко А.З. &lt;br /&gt;
&lt;br /&gt;
1) парсер языка Pascal&lt;br /&gt;
&lt;br /&gt;
2) множества IN[B], OUT[B], gen B, kill B, конструктор классов для достижимых определений (совместно) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Владыкин К.В. &lt;br /&gt;
&lt;br /&gt;
1) алгоритм удаления мертвых переменных&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Баштанова Д.С., Найденов С.Г.&lt;br /&gt;
&lt;br /&gt;
1) первичное описание классов синтаксического дерева&lt;br /&gt;
&lt;br /&gt;
2) Инфраструктура visitor'ов&lt;br /&gt;
&lt;br /&gt;
3) абстрактный класс, передаточная функция, класс для достигающих определений&lt;br /&gt;
&lt;br /&gt;
4) алгоритм вычисления композиции передаточной функции&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Науменко А.Е., Пак К.Р.&lt;br /&gt;
&lt;br /&gt;
1) Обработчики грамматики &lt;br /&gt;
&lt;br /&gt;
2) Разбиение на блоки&lt;br /&gt;
&lt;br /&gt;
3) реализация итерационного алгоритма&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Пронин А., Бувайло О.&lt;br /&gt;
&lt;br /&gt;
1) Visitor для генерации трехадресного кода. Структура для трехадрессного кода.&lt;/div&gt;</summary>
		<author><name>Ksanderer</name></author>
	</entry>
	<entry>
		<id>https://pascalabc.net/wiki/index.php?title=%D0%93%D1%80%D0%B0%D0%BC%D0%BC%D0%B0%D1%82%D0%B8%D0%BA%D0%B0_C_%2B_%D0%9A%D0%BE%D0%B4&amp;diff=2205</id>
		<title>Грамматика C + Код</title>
		<link rel="alternate" type="text/html" href="https://pascalabc.net/wiki/index.php?title=%D0%93%D1%80%D0%B0%D0%BC%D0%BC%D0%B0%D1%82%D0%B8%D0%BA%D0%B0_C_%2B_%D0%9A%D0%BE%D0%B4&amp;diff=2205"/>
		<updated>2011-10-06T11:12:12Z</updated>

		<summary type="html">&lt;p&gt;Ksanderer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;C.Y&lt;br /&gt;
&amp;lt;source lang=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
%{&lt;br /&gt;
    Dictionary&amp;lt;string,double&amp;gt; vars = new Dictionary&amp;lt;string,double&amp;gt;();&lt;br /&gt;
%}&lt;br /&gt;
&lt;br /&gt;
%output=Yacc.cs &lt;br /&gt;
&lt;br /&gt;
%union { &lt;br /&gt;
	 public int iVal; &lt;br /&gt;
	 public double dVal; &lt;br /&gt;
         public string sVal; &lt;br /&gt;
         public ExprNode eVal;&lt;br /&gt;
         public TreeNode tVal;&lt;br /&gt;
         public BlockNode lVal;&lt;br /&gt;
         public List&amp;lt;string&amp;gt; lsVal;&lt;br /&gt;
	 public GreatType dtVal;&lt;br /&gt;
       }&lt;br /&gt;
&lt;br /&gt;
%using System.IO&lt;br /&gt;
%using Syntax_node_tree&lt;br /&gt;
%namespace LexScanner&lt;br /&gt;
&lt;br /&gt;
%start progr&lt;br /&gt;
&lt;br /&gt;
%token kBEGIN kEND kIF kTHEN kELSE kWHILE kWRITE&lt;br /&gt;
%token ASSIGN SEMICOLUMN LPAREN RPAREN COLUMN&lt;br /&gt;
%token PLUS MINUS MULT DIVIDE &lt;br /&gt;
%token AND OR NOT LT GT EQ NE LE GE DIV MOD&lt;br /&gt;
%token &amp;lt;iVal&amp;gt; INTNUM &lt;br /&gt;
%token &amp;lt;dVal&amp;gt; REALNUM &lt;br /&gt;
%token &amp;lt;sVal&amp;gt; STRINGLITERAL&lt;br /&gt;
%token &amp;lt;sVal&amp;gt; ID&lt;br /&gt;
%token &amp;lt;dtVal&amp;gt; kREAL kINTEGER kBOOLEAN&lt;br /&gt;
&lt;br /&gt;
%type &amp;lt;eVal&amp;gt; expr&lt;br /&gt;
%type &amp;lt;tVal&amp;gt; operator elsepart&lt;br /&gt;
%type &amp;lt;lVal&amp;gt; listoperator progr &lt;br /&gt;
%type &amp;lt;lsVal&amp;gt; ident &lt;br /&gt;
%type &amp;lt;dtVal&amp;gt; ktype kSimpleType&lt;br /&gt;
&lt;br /&gt;
%left LT GT LE GE EQ NE&lt;br /&gt;
%left MINUS PLUS OR&lt;br /&gt;
%left MULT DIVIDE AND DIV MOD&lt;br /&gt;
%left UMINUS NOT&lt;br /&gt;
&lt;br /&gt;
%%&lt;br /&gt;
&lt;br /&gt;
progr   :&lt;br /&gt;
	{&lt;br /&gt;
		$$ = new Program(@$);&lt;br /&gt;
	}&lt;br /&gt;
	| defss kBEGIN listoperator kEND &lt;br /&gt;
	{&lt;br /&gt;
		$$ = $1;&lt;br /&gt;
		foreach (Operator oper in $3.list)&lt;br /&gt;
			$$.list.Add(oper);&lt;br /&gt;
	}&lt;br /&gt;
	| error &lt;br /&gt;
	{ &lt;br /&gt;
		System.Console.WriteLine(&amp;quot;BAD TEXT!!!&amp;quot;);&lt;br /&gt;
		break;&lt;br /&gt;
	} &lt;br /&gt;
	;&lt;br /&gt;
&lt;br /&gt;
defss : defs &lt;br /&gt;
	{&lt;br /&gt;
		$$ = new BlockOperator(@$);&lt;br /&gt;
		$$.list.Add($1);&lt;br /&gt;
	}&lt;br /&gt;
	|defss defs {&lt;br /&gt;
		$1.list.Add($2);&lt;br /&gt;
		$$ = $1;&lt;br /&gt;
	}&lt;br /&gt;
	|&lt;br /&gt;
	;&lt;br /&gt;
    &lt;br /&gt;
defs : ktype ident SEMICOLUMN &lt;br /&gt;
	{&lt;br /&gt;
		TipType type;&lt;br /&gt;
		if ($1 == &amp;quot;int&amp;quot;)&lt;br /&gt;
			type = TipType.IntType;&lt;br /&gt;
		else if ($1 == &amp;quot;double&amp;quot;)&lt;br /&gt;
			type = TipType.DoubleType;&lt;br /&gt;
		else if ($1 == &amp;quot;bool&amp;quot;)&lt;br /&gt;
			type = TipType.BoolType;&lt;br /&gt;
		else&lt;br /&gt;
		{&lt;br /&gt;
			 // Error: unknown type&lt;br /&gt;
		}&lt;br /&gt;
		$$ = new VarDef(@$, $2, type);&lt;br /&gt;
	}&lt;br /&gt;
	;   &lt;br /&gt;
&lt;br /&gt;
ident: ID &lt;br /&gt;
	{&lt;br /&gt;
		if (GlobalStructures.isNameExists($1))&lt;br /&gt;
		{&lt;br /&gt;
			// Error: this name is already used&lt;br /&gt;
		}&lt;br /&gt;
		Ident Id = new Ident($1, @1);&lt;br /&gt;
		listVars.Add(Id);&lt;br /&gt;
		$$ = new List&amp;lt;Ident&amp;gt;();&lt;br /&gt;
		$$.Add(Id);&lt;br /&gt;
	}   &lt;br /&gt;
	|ident COLUMN ID &lt;br /&gt;
	{&lt;br /&gt;
		if (GlobalStructures.isNameExists($3))&lt;br /&gt;
		{&lt;br /&gt;
		// Error: this name is already used&lt;br /&gt;
		}&lt;br /&gt;
		Ident Id = new Ident($3, @3);&lt;br /&gt;
		listVars.Add(Id);&lt;br /&gt;
		$1.Add(Id);&lt;br /&gt;
		$$ = $1;&lt;br /&gt;
	}&lt;br /&gt;
	;&lt;br /&gt;
    &lt;br /&gt;
listoperator : operator &lt;br /&gt;
	{&lt;br /&gt;
		$$ = new BlockOperator(@$);&lt;br /&gt;
		$$.list.Add($1);&lt;br /&gt;
	}&lt;br /&gt;
	| listoperator SEMICOLUMN operator {&lt;br /&gt;
		$1.list.Add($2);&lt;br /&gt;
		$$ = $1;&lt;br /&gt;
	}&lt;br /&gt;
	;&lt;br /&gt;
&lt;br /&gt;
ktype : kSimpleType&lt;br /&gt;
	| error &lt;br /&gt;
	{ &lt;br /&gt;
		System.Console.WriteLine(&amp;quot;BAD GREATE TYPE&amp;quot;);&lt;br /&gt;
		break;&lt;br /&gt;
	}&lt;br /&gt;
	;&lt;br /&gt;
&lt;br /&gt;
kSimpleType : kREAL &lt;br /&gt;
	{&lt;br /&gt;
		$$ = &amp;quot;double&amp;quot;;&lt;br /&gt;
	} &lt;br /&gt;
	| kINTEGER &lt;br /&gt;
	{&lt;br /&gt;
		$$ = &amp;quot;int&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	| kBOOLEAN&lt;br /&gt;
	{&lt;br /&gt;
		$$ = &amp;quot;bool&amp;quot; &lt;br /&gt;
	}&lt;br /&gt;
	;&lt;br /&gt;
&lt;br /&gt;
operator: {}&lt;br /&gt;
	| ID ASSIGN expr &lt;br /&gt;
	{&lt;br /&gt;
		if (!GlobalStructures.isNameExists($1))&lt;br /&gt;
		{&lt;br /&gt;
			// Error: Undeclarated identifier&lt;br /&gt;
		}&lt;br /&gt;
        Ident Id = GlobalStructures.getIdentByName($1);&lt;br /&gt;
        $$ = new Assign(Id, $3, @3);&lt;br /&gt;
	}&lt;br /&gt;
	| kWHILE LPAREN expr RPAREN operator &lt;br /&gt;
	{&lt;br /&gt;
		if ($2.getType()!=TypType.Boolean)&lt;br /&gt;
		{&lt;br /&gt;
			// Error: Oneiaea aie?ii eiaou eiae?aneee oei&lt;br /&gt;
		}&lt;br /&gt;
		$$ = new While($2, $4, @$);&lt;br /&gt;
	}&lt;br /&gt;
	| kIF LPAREN expr RPAREN operator elsepart &lt;br /&gt;
	{&lt;br /&gt;
		if ($2.getType()!=TypType.Boolean)&lt;br /&gt;
		{&lt;br /&gt;
			// Error: Oneiaea aie?ii eiaou eiae?aneee oei&lt;br /&gt;
		}&lt;br /&gt;
		$$=new If($2,$4,$5,@$);&lt;br /&gt;
	}&lt;br /&gt;
	| kBEGIN listoperator kEND &lt;br /&gt;
	{&lt;br /&gt;
		$$ = $2;&lt;br /&gt;
	}&lt;br /&gt;
	| kWRITE LPAREN expr RPAREN &lt;br /&gt;
	{&lt;br /&gt;
		System.Console.Write($3);&lt;br /&gt;
	}&lt;br /&gt;
	;&lt;br /&gt;
&lt;br /&gt;
elsepart: &lt;br /&gt;
	{&lt;br /&gt;
		$$ = null;&lt;br /&gt;
	}&lt;br /&gt;
	| kELSE operator {&lt;br /&gt;
		$$ = $2;&lt;br /&gt;
	}&lt;br /&gt;
	;&lt;br /&gt;
&lt;br /&gt;
expr: INTNUM &lt;br /&gt;
	{&lt;br /&gt;
		int i = int.Parse($1);&lt;br /&gt;
		$$ = new IntConst(i, @1);&lt;br /&gt;
	}&lt;br /&gt;
	| REALNUM &lt;br /&gt;
	{&lt;br /&gt;
		double d = double.Parse($1);&lt;br /&gt;
		$$ = new DoubleConst(d, @1);&lt;br /&gt;
	}&lt;br /&gt;
	| STRINGLITERAL &lt;br /&gt;
	{&lt;br /&gt;
		// Iao o ian oaeeo!!!&lt;br /&gt;
	}&lt;br /&gt;
	| ID &lt;br /&gt;
	{&lt;br /&gt;
		if (!GlobalStructures.isNameExists($1))&lt;br /&gt;
		{&lt;br /&gt;
			// Error: Undeclarated identifier&lt;br /&gt;
		}&lt;br /&gt;
		$$ = new Ident($1, @1);&lt;br /&gt;
	}&lt;br /&gt;
	| expr PLUS expr &lt;br /&gt;
	{&lt;br /&gt;
		$$ = new BinExpression($1, $3, Op.Plus, @$);&lt;br /&gt;
	}&lt;br /&gt;
	| expr MINUS expr &lt;br /&gt;
	{&lt;br /&gt;
		$$ = new BinExpression($1, $3, Op.Minus, @$);&lt;br /&gt;
	}&lt;br /&gt;
	| expr MULT expr &lt;br /&gt;
	{&lt;br /&gt;
		$$ = new BinExpression($1, $3, Op.Mult, @$);&lt;br /&gt;
	}&lt;br /&gt;
	| expr DIVIDE expr &lt;br /&gt;
	{&lt;br /&gt;
		$$ = new BinExpression($1, $3, Op.Divide, @$);&lt;br /&gt;
	}&lt;br /&gt;
	| expr DIV expr &lt;br /&gt;
	{&lt;br /&gt;
		// Ia iiaaa??eaaaony!&lt;br /&gt;
	}&lt;br /&gt;
	| expr MOD expr &lt;br /&gt;
	{&lt;br /&gt;
		// Ia iiaaa??eaaaony!&lt;br /&gt;
	}&lt;br /&gt;
	| expr AND expr &lt;br /&gt;
	{&lt;br /&gt;
		if ($1.getType() != TipType.BoolType || $2.getType() != TipType.BoolType)&lt;br /&gt;
		{&lt;br /&gt;
			// Error: only for bool types&lt;br /&gt;
		}&lt;br /&gt;
		$$ = new BinExpression($1, $3, Op.And, @$);&lt;br /&gt;
	}&lt;br /&gt;
	| expr OR expr &lt;br /&gt;
	{&lt;br /&gt;
		if ($1.getType() != TipType.BoolType || $2.getType() != TipType.BoolType)&lt;br /&gt;
		{&lt;br /&gt;
		    // Error: only for bool types&lt;br /&gt;
		}&lt;br /&gt;
		$$ = new BinExpression($1, $3, Op.Or, @$);&lt;br /&gt;
	}&lt;br /&gt;
	| expr LT expr &lt;br /&gt;
	{&lt;br /&gt;
		$$ = new BinExpression($1, $3, Op.Less, @$);&lt;br /&gt;
	}&lt;br /&gt;
	| expr GT expr &lt;br /&gt;
	{&lt;br /&gt;
		$$ = new BinExpression($1, $3, Op.More, @$);&lt;br /&gt;
	}&lt;br /&gt;
	| expr LE expr	&lt;br /&gt;
	{&lt;br /&gt;
		$$ = new BinExpression($1, $3, Op.LessEqual, @$);&lt;br /&gt;
	}&lt;br /&gt;
	| expr GE expr &lt;br /&gt;
	{&lt;br /&gt;
		$$ = new BinExpression($1, $3, Op.MoreEqual, @$);       &lt;br /&gt;
	}&lt;br /&gt;
	| expr EQ expr&lt;br /&gt;
	{&lt;br /&gt;
		$$ = new BinExpression($1, $3, Op.Equal, @$);       &lt;br /&gt;
	}&lt;br /&gt;
	| expr NE expr &lt;br /&gt;
	{&lt;br /&gt;
		$$ = new BinExpression($1, $3, Op.NotEqual, @$);        &lt;br /&gt;
	}&lt;br /&gt;
	| NOT expr &lt;br /&gt;
	{&lt;br /&gt;
		if ($2.getType() != TipType.BoolType)&lt;br /&gt;
		{&lt;br /&gt;
		// Error: type is wrong.&lt;br /&gt;
		}&lt;br /&gt;
		$$ = new UnarExpression($2, Op.Not, @2);&lt;br /&gt;
	}&lt;br /&gt;
	| MINUS expr %prec UMINUS &lt;br /&gt;
	{&lt;br /&gt;
		if ($2.getType() != TipType.IntType &amp;amp;&amp;amp; $2.getType() != TipType.DoubleType)&lt;br /&gt;
		{&lt;br /&gt;
		    // Error: type is wrong.&lt;br /&gt;
		}&lt;br /&gt;
		$$ = new UnarExpression($2, Op.Minus, @2);&lt;br /&gt;
	} &lt;br /&gt;
	| LPAREN expr RPAREN &lt;br /&gt;
	{&lt;br /&gt;
		$$ = $2;&lt;br /&gt;
	}&lt;br /&gt;
	;&lt;br /&gt;
&lt;br /&gt;
%%&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
C.LEX&lt;br /&gt;
&amp;lt;source lang=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
%namespace LexScanner&lt;br /&gt;
%using Syntax_node_tree;&lt;br /&gt;
&lt;br /&gt;
Alpha 	[a-zA-Z_]&lt;br /&gt;
INTNUM  [0-9]+&lt;br /&gt;
REALNUM {INTNUM}\.{INTNUM}&lt;br /&gt;
ID [a-zA-Z][a-zA-Z0-9_]* &lt;br /&gt;
&lt;br /&gt;
%x COMMENT&lt;br /&gt;
%x COMMENT1&lt;br /&gt;
&lt;br /&gt;
%%&lt;br /&gt;
&lt;br /&gt;
&amp;quot;/*&amp;quot; { BEGIN(COMMENT);}&lt;br /&gt;
&amp;lt;COMMENT&amp;gt; &amp;quot;*/&amp;quot; { BEGIN(INITIAL);}&lt;br /&gt;
&amp;lt;COMMENT&amp;gt; &amp;lt;&amp;lt;EOF&amp;gt;&amp;gt; { Console.WriteLine(&amp;quot;Комментарий не закрыт&amp;quot;);}&lt;br /&gt;
&lt;br /&gt;
&amp;quot;=&amp;quot; { return (int)Tokens.ASSIGN; }&lt;br /&gt;
&amp;quot;;&amp;quot; { return (int)Tokens.SEMICOLUMN; }&lt;br /&gt;
&amp;quot;-&amp;quot; { return (int)Tokens.MINUS; }&lt;br /&gt;
&amp;quot;+&amp;quot; { return (int)Tokens.PLUS; }&lt;br /&gt;
&amp;quot;*&amp;quot; { return (int)Tokens.MULT; }&lt;br /&gt;
&amp;quot;/&amp;quot; { return (int)Tokens.DIVIDE; }&lt;br /&gt;
&amp;quot;&amp;lt;&amp;quot; { return (int)Tokens.LT; }&lt;br /&gt;
&amp;quot;&amp;gt;&amp;quot; { return (int)Tokens.GT; }&lt;br /&gt;
&amp;quot;&amp;lt;=&amp;quot; { return (int)Tokens.LE; }&lt;br /&gt;
&amp;quot;&amp;gt;=&amp;quot; { return (int)Tokens.GE; }&lt;br /&gt;
&amp;quot;==&amp;quot; { return (int)Tokens.EQ; }&lt;br /&gt;
&amp;quot;&amp;lt;&amp;gt;&amp;quot; { return (int)Tokens.NE; }&lt;br /&gt;
&amp;quot;(&amp;quot; { return (int)Tokens.LPAREN; }&lt;br /&gt;
&amp;quot;)&amp;quot; { return (int)Tokens.RPAREN; }&lt;br /&gt;
&amp;quot;,&amp;quot; { return (int)Tokens.COLUMN; }&lt;br /&gt;
&lt;br /&gt;
&amp;quot;.&amp;quot; { return (int)Tokens.POINT;  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
\'[^']*\' {&lt;br /&gt;
  yylval.sVal = yytext.Substring(1,yytext.Length-2);&lt;br /&gt;
  return (int)Tokens.STRINGLITERAL;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
{ID}  { &lt;br /&gt;
  int res = ScannerHelper.GetIDToken(yytext);&lt;br /&gt;
  if (s==&amp;quot;int&amp;quot;)&lt;br /&gt;
    yylval.dtVal.DType=DataType.INTTYPE;&lt;br /&gt;
  if (s == &amp;quot;double&amp;quot;)&lt;br /&gt;
      yylval.dtVal.DType =DataType.DOUBLETYPE;&lt;br /&gt;
  if (res == (int)Tokens.ID)&lt;br /&gt;
	yylval.sVal = yytext;&lt;br /&gt;
  return res;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
{INTNUM} { &lt;br /&gt;
  yylval.iVal = int.Parse(yytext); &lt;br /&gt;
  return (int)Tokens.INTNUM; &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
{REALNUM} { &lt;br /&gt;
  yylval.dVal = double.Parse(yytext,new System.Globalization.CultureInfo(&amp;quot;en-US&amp;quot;)); &lt;br /&gt;
  return (int)Tokens.REALNUM; &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
%{&lt;br /&gt;
  yylloc = new LexLocation(tokLin, tokCol, tokELin, tokECol);&lt;br /&gt;
%}&lt;br /&gt;
&lt;br /&gt;
%%&lt;br /&gt;
&lt;br /&gt;
class ScannerHelper &lt;br /&gt;
{&lt;br /&gt;
  private static Dictionary&amp;lt;string,int&amp;gt; keywords;&lt;br /&gt;
&lt;br /&gt;
  static ScannerHelper() &lt;br /&gt;
  {&lt;br /&gt;
    keywords = new Dictionary&amp;lt;string,int&amp;gt;();&lt;br /&gt;
    keywords.Add(&amp;quot;var&amp;quot;,(int)Tokens.kVAR);&lt;br /&gt;
    keywords.Add(&amp;quot;double&amp;quot;,(int)Tokens.kREAL);&lt;br /&gt;
    keywords.Add(&amp;quot;int&amp;quot;,(int)Tokens.kINTEGER);&lt;br /&gt;
    keywords.Add(&amp;quot;bool&amp;quot;,(int)Tokens.kBOOLEAN);&lt;br /&gt;
    keywords.Add(&amp;quot;{&amp;quot;,(int)Tokens.kBEGIN);&lt;br /&gt;
    keywords.Add(&amp;quot;}&amp;quot;,(int)Tokens.kEND);&lt;br /&gt;
    keywords.Add(&amp;quot;if&amp;quot;,(int)Tokens.kIF);&lt;br /&gt;
    &lt;br /&gt;
    keywords.Add(&amp;quot;else&amp;quot;,(int)Tokens.kELSE);&lt;br /&gt;
    &lt;br /&gt;
    keywords.Add(&amp;quot;while&amp;quot;,(int)Tokens.kWHILE);&lt;br /&gt;
    keywords.Add(&amp;quot;cout&amp;quot;,(int)Tokens.kWRITE);&lt;br /&gt;
    &lt;br /&gt;
    keywords.Add(&amp;quot;div&amp;quot;,(int)Tokens.DIV);&lt;br /&gt;
    keywords.Add(&amp;quot;mod&amp;quot;,(int)Tokens.MOD);&lt;br /&gt;
    keywords.Add(&amp;quot;and&amp;quot;,(int)Tokens.AND);&lt;br /&gt;
    keywords.Add(&amp;quot;or&amp;quot;,(int)Tokens.OR);&lt;br /&gt;
    keywords.Add(&amp;quot;not&amp;quot;,(int)Tokens.NOT);				&lt;br /&gt;
  }&lt;br /&gt;
  public static int GetIDToken(string s)&lt;br /&gt;
  {&lt;br /&gt;
    if (keywords.ContainsKey(s))&lt;br /&gt;
	{ &lt;br /&gt;
	  return keywords[s];&lt;br /&gt;
	}  &lt;br /&gt;
	else&lt;br /&gt;
      return (int)Tokens.ID;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ksanderer</name></author>
	</entry>
	<entry>
		<id>https://pascalabc.net/wiki/index.php?title=%D0%93%D1%80%D0%B0%D0%BC%D0%BC%D0%B0%D1%82%D0%B8%D0%BA%D0%B0_C_%2B_%D0%9A%D0%BE%D0%B4&amp;diff=2204</id>
		<title>Грамматика C + Код</title>
		<link rel="alternate" type="text/html" href="https://pascalabc.net/wiki/index.php?title=%D0%93%D1%80%D0%B0%D0%BC%D0%BC%D0%B0%D1%82%D0%B8%D0%BA%D0%B0_C_%2B_%D0%9A%D0%BE%D0%B4&amp;diff=2204"/>
		<updated>2011-10-06T11:11:50Z</updated>

		<summary type="html">&lt;p&gt;Ksanderer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;C.Y&lt;br /&gt;
&amp;lt;source lang=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
%{&lt;br /&gt;
    Dictionary&amp;lt;string,double&amp;gt; vars = new Dictionary&amp;lt;string,double&amp;gt;();&lt;br /&gt;
%}&lt;br /&gt;
&lt;br /&gt;
%output=Yacc.cs &lt;br /&gt;
&lt;br /&gt;
%union { &lt;br /&gt;
	 public int iVal; &lt;br /&gt;
	 public double dVal; &lt;br /&gt;
         public string sVal; &lt;br /&gt;
         public ExprNode eVal;&lt;br /&gt;
         public TreeNode tVal;&lt;br /&gt;
         public BlockNode lVal;&lt;br /&gt;
         public List&amp;lt;string&amp;gt; lsVal;&lt;br /&gt;
	 public GreatType dtVal;&lt;br /&gt;
       }&lt;br /&gt;
&lt;br /&gt;
%using System.IO&lt;br /&gt;
%using Syntax_node_tree&lt;br /&gt;
%namespace LexScanner&lt;br /&gt;
&lt;br /&gt;
%start progr&lt;br /&gt;
&lt;br /&gt;
%token kBEGIN kEND kIF kTHEN kELSE kWHILE kWRITE&lt;br /&gt;
%token ASSIGN SEMICOLUMN LPAREN RPAREN COLUMN&lt;br /&gt;
%token PLUS MINUS MULT DIVIDE &lt;br /&gt;
%token AND OR NOT LT GT EQ NE LE GE DIV MOD&lt;br /&gt;
%token &amp;lt;iVal&amp;gt; INTNUM &lt;br /&gt;
%token &amp;lt;dVal&amp;gt; REALNUM &lt;br /&gt;
%token &amp;lt;sVal&amp;gt; STRINGLITERAL&lt;br /&gt;
%token &amp;lt;sVal&amp;gt; ID&lt;br /&gt;
%token &amp;lt;dtVal&amp;gt; kREAL kINTEGER kBOOLEAN&lt;br /&gt;
&lt;br /&gt;
%type &amp;lt;eVal&amp;gt; expr&lt;br /&gt;
%type &amp;lt;tVal&amp;gt; operator elsepart&lt;br /&gt;
%type &amp;lt;lVal&amp;gt; listoperator progr &lt;br /&gt;
%type &amp;lt;lsVal&amp;gt; ident &lt;br /&gt;
%type &amp;lt;dtVal&amp;gt; ktype kSimpleType&lt;br /&gt;
&lt;br /&gt;
%left LT GT LE GE EQ NE&lt;br /&gt;
%left MINUS PLUS OR&lt;br /&gt;
%left MULT DIVIDE AND DIV MOD&lt;br /&gt;
%left UMINUS NOT&lt;br /&gt;
&lt;br /&gt;
%%&lt;br /&gt;
&lt;br /&gt;
progr   :&lt;br /&gt;
	{&lt;br /&gt;
		$$ = new Program(@$);&lt;br /&gt;
	}&lt;br /&gt;
	| defss kBEGIN listoperator kEND &lt;br /&gt;
	{&lt;br /&gt;
		$$ = $1;&lt;br /&gt;
		foreach (Operator oper in $3.list)&lt;br /&gt;
			$$.list.Add(oper);&lt;br /&gt;
	}&lt;br /&gt;
	| error &lt;br /&gt;
	{ &lt;br /&gt;
		System.Console.WriteLine(&amp;quot;BAD TEXT!!!&amp;quot;);&lt;br /&gt;
		break;&lt;br /&gt;
	} &lt;br /&gt;
	;&lt;br /&gt;
&lt;br /&gt;
defss : defs &lt;br /&gt;
	{&lt;br /&gt;
		$$ = new BlockOperator(@$);&lt;br /&gt;
		$$.list.Add($1);&lt;br /&gt;
	}&lt;br /&gt;
	|defss defs {&lt;br /&gt;
		$1.list.Add($2);&lt;br /&gt;
		$$ = $1;&lt;br /&gt;
	}&lt;br /&gt;
	|&lt;br /&gt;
	;&lt;br /&gt;
    &lt;br /&gt;
defs : ktype ident SEMICOLUMN &lt;br /&gt;
	{&lt;br /&gt;
		TipType type;&lt;br /&gt;
		if ($1 == &amp;quot;int&amp;quot;)&lt;br /&gt;
			type = TipType.IntType;&lt;br /&gt;
		else if ($1 == &amp;quot;double&amp;quot;)&lt;br /&gt;
			type = TipType.DoubleType;&lt;br /&gt;
		else if ($1 == &amp;quot;bool&amp;quot;)&lt;br /&gt;
			type = TipType.BoolType;&lt;br /&gt;
		else&lt;br /&gt;
		{&lt;br /&gt;
			 // Error: unknown type&lt;br /&gt;
		}&lt;br /&gt;
		$$ = new VarDef(@$, $2, type);&lt;br /&gt;
	}&lt;br /&gt;
	;   &lt;br /&gt;
&lt;br /&gt;
ident: ID &lt;br /&gt;
	{&lt;br /&gt;
		if (GlobalStructures.isNameExists($1))&lt;br /&gt;
		{&lt;br /&gt;
			// Error: this name is already used&lt;br /&gt;
		}&lt;br /&gt;
		Ident Id = new Ident($1, @1);&lt;br /&gt;
		listVars.Add(Id);&lt;br /&gt;
		$$ = new List&amp;lt;Ident&amp;gt;();&lt;br /&gt;
		$$.Add(Id);&lt;br /&gt;
	}   &lt;br /&gt;
	|ident COLUMN ID &lt;br /&gt;
	{&lt;br /&gt;
		if (GlobalStructures.isNameExists($3))&lt;br /&gt;
		{&lt;br /&gt;
		// Error: this name is already used&lt;br /&gt;
		}&lt;br /&gt;
		Ident Id = new Ident($3, @3);&lt;br /&gt;
		listVars.Add(Id);&lt;br /&gt;
		$1.Add(Id);&lt;br /&gt;
		$$ = $1;&lt;br /&gt;
	}&lt;br /&gt;
	;&lt;br /&gt;
    &lt;br /&gt;
listoperator : operator &lt;br /&gt;
	{&lt;br /&gt;
		$$ = new BlockOperator(@$);&lt;br /&gt;
		$$.list.Add($1);&lt;br /&gt;
	}&lt;br /&gt;
	| listoperator SEMICOLUMN operator {&lt;br /&gt;
		$1.list.Add($2);&lt;br /&gt;
		$$ = $1;&lt;br /&gt;
	}&lt;br /&gt;
	;&lt;br /&gt;
&lt;br /&gt;
ktype : kSimpleType&lt;br /&gt;
	| error &lt;br /&gt;
	{ &lt;br /&gt;
		System.Console.WriteLine(&amp;quot;BAD GREATE TYPE&amp;quot;);&lt;br /&gt;
		break;&lt;br /&gt;
	}&lt;br /&gt;
	;&lt;br /&gt;
&lt;br /&gt;
kSimpleType : kREAL &lt;br /&gt;
	{&lt;br /&gt;
		$$ = &amp;quot;double&amp;quot;;&lt;br /&gt;
	} &lt;br /&gt;
	| kINTEGER &lt;br /&gt;
	{&lt;br /&gt;
		$$ = &amp;quot;int&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	| kBOOLEAN&lt;br /&gt;
	{&lt;br /&gt;
		$$ = &amp;quot;bool&amp;quot; &lt;br /&gt;
	}&lt;br /&gt;
	;&lt;br /&gt;
&lt;br /&gt;
operator: {}&lt;br /&gt;
	| ID ASSIGN expr &lt;br /&gt;
	{&lt;br /&gt;
		if (!GlobalStructures.isNameExists($1))&lt;br /&gt;
		{&lt;br /&gt;
			// Error: Undeclarated identifier&lt;br /&gt;
		}&lt;br /&gt;
        Ident Id = GlobalStructures.getIdentByName($1);&lt;br /&gt;
        $$ = new Assign(Id, $3, @3);&lt;br /&gt;
	}&lt;br /&gt;
	| kWHILE LPAREN expr RPAREN operator &lt;br /&gt;
	{&lt;br /&gt;
		if ($2.getType()!=TypType.Boolean)&lt;br /&gt;
		{&lt;br /&gt;
			// Error: Oneiaea aie?ii eiaou eiae?aneee oei&lt;br /&gt;
		}&lt;br /&gt;
		$$ = new While($2, $4, @$);&lt;br /&gt;
	}&lt;br /&gt;
	| kIF LPAREN expr RPAREN operator elsepart &lt;br /&gt;
	{&lt;br /&gt;
		if ($2.getType()!=TypType.Boolean)&lt;br /&gt;
		{&lt;br /&gt;
			// Error: Oneiaea aie?ii eiaou eiae?aneee oei&lt;br /&gt;
		}&lt;br /&gt;
		$$=new If($2,$4,$5,@$);&lt;br /&gt;
	}&lt;br /&gt;
	| kBEGIN listoperator kEND &lt;br /&gt;
	{&lt;br /&gt;
		$$ = $2;&lt;br /&gt;
	}&lt;br /&gt;
	| kWRITE LPAREN expr RPAREN &lt;br /&gt;
	{&lt;br /&gt;
		System.Console.Write($3);&lt;br /&gt;
	}&lt;br /&gt;
	;&lt;br /&gt;
&lt;br /&gt;
elsepart: &lt;br /&gt;
	{&lt;br /&gt;
		$$ = null;&lt;br /&gt;
	}&lt;br /&gt;
	| kELSE operator {&lt;br /&gt;
		$$ = $2;&lt;br /&gt;
	}&lt;br /&gt;
	;&lt;br /&gt;
&lt;br /&gt;
expr: INTNUM &lt;br /&gt;
	{&lt;br /&gt;
		int i = int.Parse($1);&lt;br /&gt;
		$$ = new IntConst(i, @1);&lt;br /&gt;
	}&lt;br /&gt;
	| REALNUM &lt;br /&gt;
	{&lt;br /&gt;
		double d = double.Parse($1);&lt;br /&gt;
		$$ = new DoubleConst(d, @1);&lt;br /&gt;
	}&lt;br /&gt;
	| STRINGLITERAL &lt;br /&gt;
	{&lt;br /&gt;
		// Iao o ian oaeeo!!!&lt;br /&gt;
	}&lt;br /&gt;
	| ID &lt;br /&gt;
	{&lt;br /&gt;
		if (!GlobalStructures.isNameExists($1))&lt;br /&gt;
		{&lt;br /&gt;
			// Error: Undeclarated identifier&lt;br /&gt;
		}&lt;br /&gt;
		$$ = new Ident($1, @1);&lt;br /&gt;
	}&lt;br /&gt;
	| expr PLUS expr &lt;br /&gt;
	{&lt;br /&gt;
		$$ = new BinExpression($1, $3, Op.Plus, @$);&lt;br /&gt;
	}&lt;br /&gt;
	| expr MINUS expr &lt;br /&gt;
	{&lt;br /&gt;
		$$ = new BinExpression($1, $3, Op.Minus, @$);&lt;br /&gt;
	}&lt;br /&gt;
	| expr MULT expr &lt;br /&gt;
	{&lt;br /&gt;
		$$ = new BinExpression($1, $3, Op.Mult, @$);&lt;br /&gt;
	}&lt;br /&gt;
	| expr DIVIDE expr &lt;br /&gt;
	{&lt;br /&gt;
		$$ = new BinExpression($1, $3, Op.Divide, @$);&lt;br /&gt;
	}&lt;br /&gt;
	| expr DIV expr &lt;br /&gt;
	{&lt;br /&gt;
		// Ia iiaaa??eaaaony!&lt;br /&gt;
	}&lt;br /&gt;
	| expr MOD expr &lt;br /&gt;
	{&lt;br /&gt;
		// Ia iiaaa??eaaaony!&lt;br /&gt;
	}&lt;br /&gt;
	| expr AND expr &lt;br /&gt;
	{&lt;br /&gt;
		if ($1.getType() != TipType.BoolType || $2.getType() != TipType.BoolType)&lt;br /&gt;
		{&lt;br /&gt;
			// Error: only for bool types&lt;br /&gt;
		}&lt;br /&gt;
		$$ = new BinExpression($1, $3, Op.And, @$);&lt;br /&gt;
	}&lt;br /&gt;
	| expr OR expr &lt;br /&gt;
	{&lt;br /&gt;
		if ($1.getType() != TipType.BoolType || $2.getType() != TipType.BoolType)&lt;br /&gt;
		{&lt;br /&gt;
		    // Error: only for bool types&lt;br /&gt;
		}&lt;br /&gt;
		$$ = new BinExpression($1, $3, Op.Or, @$);&lt;br /&gt;
	}&lt;br /&gt;
	| expr LT expr &lt;br /&gt;
	{&lt;br /&gt;
		$$ = new BinExpression($1, $3, Op.Less, @$);&lt;br /&gt;
	}&lt;br /&gt;
	| expr GT expr &lt;br /&gt;
	{&lt;br /&gt;
		$$ = new BinExpression($1, $3, Op.More, @$);&lt;br /&gt;
	}&lt;br /&gt;
	| expr LE expr	&lt;br /&gt;
	{&lt;br /&gt;
		$$ = new BinExpression($1, $3, Op.LessEqual, @$);&lt;br /&gt;
	}&lt;br /&gt;
	| expr GE expr &lt;br /&gt;
	{&lt;br /&gt;
		$$ = new BinExpression($1, $3, Op.MoreEqual, @$);       &lt;br /&gt;
	}&lt;br /&gt;
	| expr EQ expr&lt;br /&gt;
	{&lt;br /&gt;
		$$ = new BinExpression($1, $3, Op.Equal, @$);       &lt;br /&gt;
	}&lt;br /&gt;
	| expr NE expr &lt;br /&gt;
	{&lt;br /&gt;
		$$ = new BinExpression($1, $3, Op.NotEqual, @$);        &lt;br /&gt;
	}&lt;br /&gt;
	| NOT expr &lt;br /&gt;
	{&lt;br /&gt;
		if ($2.getType() != TipType.BoolType)&lt;br /&gt;
		{&lt;br /&gt;
		// Error: type is wrong.&lt;br /&gt;
		}&lt;br /&gt;
		$$ = new UnarExpression($2, Op.Not, @2);&lt;br /&gt;
	}&lt;br /&gt;
	| MINUS expr %prec UMINUS &lt;br /&gt;
	{&lt;br /&gt;
		if ($2.getType() != TipType.IntType &amp;amp;&amp;amp; $2.getType() != TipType.DoubleType)&lt;br /&gt;
		{&lt;br /&gt;
		    // Error: type is wrong.&lt;br /&gt;
		}&lt;br /&gt;
		$$ = new UnarExpression($2, Op.Minus, @2);&lt;br /&gt;
	} &lt;br /&gt;
	| LPAREN expr RPAREN &lt;br /&gt;
	{&lt;br /&gt;
		$$ = $2;&lt;br /&gt;
	}&lt;br /&gt;
	;&lt;br /&gt;
&lt;br /&gt;
%%&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
C.LEX&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
%namespace LexScanner&lt;br /&gt;
%using Syntax_node_tree;&lt;br /&gt;
&lt;br /&gt;
Alpha 	[a-zA-Z_]&lt;br /&gt;
INTNUM  [0-9]+&lt;br /&gt;
REALNUM {INTNUM}\.{INTNUM}&lt;br /&gt;
ID [a-zA-Z][a-zA-Z0-9_]* &lt;br /&gt;
&lt;br /&gt;
%x COMMENT&lt;br /&gt;
%x COMMENT1&lt;br /&gt;
&lt;br /&gt;
%%&lt;br /&gt;
&lt;br /&gt;
&amp;quot;/*&amp;quot; { BEGIN(COMMENT);}&lt;br /&gt;
&amp;lt;COMMENT&amp;gt; &amp;quot;*/&amp;quot; { BEGIN(INITIAL);}&lt;br /&gt;
&amp;lt;COMMENT&amp;gt; &amp;lt;&amp;lt;EOF&amp;gt;&amp;gt; { Console.WriteLine(&amp;quot;Комментарий не закрыт&amp;quot;);}&lt;br /&gt;
&lt;br /&gt;
&amp;quot;=&amp;quot; { return (int)Tokens.ASSIGN; }&lt;br /&gt;
&amp;quot;;&amp;quot; { return (int)Tokens.SEMICOLUMN; }&lt;br /&gt;
&amp;quot;-&amp;quot; { return (int)Tokens.MINUS; }&lt;br /&gt;
&amp;quot;+&amp;quot; { return (int)Tokens.PLUS; }&lt;br /&gt;
&amp;quot;*&amp;quot; { return (int)Tokens.MULT; }&lt;br /&gt;
&amp;quot;/&amp;quot; { return (int)Tokens.DIVIDE; }&lt;br /&gt;
&amp;quot;&amp;lt;&amp;quot; { return (int)Tokens.LT; }&lt;br /&gt;
&amp;quot;&amp;gt;&amp;quot; { return (int)Tokens.GT; }&lt;br /&gt;
&amp;quot;&amp;lt;=&amp;quot; { return (int)Tokens.LE; }&lt;br /&gt;
&amp;quot;&amp;gt;=&amp;quot; { return (int)Tokens.GE; }&lt;br /&gt;
&amp;quot;==&amp;quot; { return (int)Tokens.EQ; }&lt;br /&gt;
&amp;quot;&amp;lt;&amp;gt;&amp;quot; { return (int)Tokens.NE; }&lt;br /&gt;
&amp;quot;(&amp;quot; { return (int)Tokens.LPAREN; }&lt;br /&gt;
&amp;quot;)&amp;quot; { return (int)Tokens.RPAREN; }&lt;br /&gt;
&amp;quot;,&amp;quot; { return (int)Tokens.COLUMN; }&lt;br /&gt;
&lt;br /&gt;
&amp;quot;.&amp;quot; { return (int)Tokens.POINT;  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
\'[^']*\' {&lt;br /&gt;
  yylval.sVal = yytext.Substring(1,yytext.Length-2);&lt;br /&gt;
  return (int)Tokens.STRINGLITERAL;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
{ID}  { &lt;br /&gt;
  int res = ScannerHelper.GetIDToken(yytext);&lt;br /&gt;
  if (s==&amp;quot;int&amp;quot;)&lt;br /&gt;
    yylval.dtVal.DType=DataType.INTTYPE;&lt;br /&gt;
  if (s == &amp;quot;double&amp;quot;)&lt;br /&gt;
      yylval.dtVal.DType =DataType.DOUBLETYPE;&lt;br /&gt;
  if (res == (int)Tokens.ID)&lt;br /&gt;
	yylval.sVal = yytext;&lt;br /&gt;
  return res;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
{INTNUM} { &lt;br /&gt;
  yylval.iVal = int.Parse(yytext); &lt;br /&gt;
  return (int)Tokens.INTNUM; &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
{REALNUM} { &lt;br /&gt;
  yylval.dVal = double.Parse(yytext,new System.Globalization.CultureInfo(&amp;quot;en-US&amp;quot;)); &lt;br /&gt;
  return (int)Tokens.REALNUM; &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
%{&lt;br /&gt;
  yylloc = new LexLocation(tokLin, tokCol, tokELin, tokECol);&lt;br /&gt;
%}&lt;br /&gt;
&lt;br /&gt;
%%&lt;br /&gt;
&lt;br /&gt;
class ScannerHelper &lt;br /&gt;
{&lt;br /&gt;
  private static Dictionary&amp;lt;string,int&amp;gt; keywords;&lt;br /&gt;
&lt;br /&gt;
  static ScannerHelper() &lt;br /&gt;
  {&lt;br /&gt;
    keywords = new Dictionary&amp;lt;string,int&amp;gt;();&lt;br /&gt;
    keywords.Add(&amp;quot;var&amp;quot;,(int)Tokens.kVAR);&lt;br /&gt;
    keywords.Add(&amp;quot;double&amp;quot;,(int)Tokens.kREAL);&lt;br /&gt;
    keywords.Add(&amp;quot;int&amp;quot;,(int)Tokens.kINTEGER);&lt;br /&gt;
    keywords.Add(&amp;quot;bool&amp;quot;,(int)Tokens.kBOOLEAN);&lt;br /&gt;
    keywords.Add(&amp;quot;{&amp;quot;,(int)Tokens.kBEGIN);&lt;br /&gt;
    keywords.Add(&amp;quot;}&amp;quot;,(int)Tokens.kEND);&lt;br /&gt;
    keywords.Add(&amp;quot;if&amp;quot;,(int)Tokens.kIF);&lt;br /&gt;
    &lt;br /&gt;
    keywords.Add(&amp;quot;else&amp;quot;,(int)Tokens.kELSE);&lt;br /&gt;
    &lt;br /&gt;
    keywords.Add(&amp;quot;while&amp;quot;,(int)Tokens.kWHILE);&lt;br /&gt;
    keywords.Add(&amp;quot;cout&amp;quot;,(int)Tokens.kWRITE);&lt;br /&gt;
    &lt;br /&gt;
    keywords.Add(&amp;quot;div&amp;quot;,(int)Tokens.DIV);&lt;br /&gt;
    keywords.Add(&amp;quot;mod&amp;quot;,(int)Tokens.MOD);&lt;br /&gt;
    keywords.Add(&amp;quot;and&amp;quot;,(int)Tokens.AND);&lt;br /&gt;
    keywords.Add(&amp;quot;or&amp;quot;,(int)Tokens.OR);&lt;br /&gt;
    keywords.Add(&amp;quot;not&amp;quot;,(int)Tokens.NOT);				&lt;br /&gt;
  }&lt;br /&gt;
  public static int GetIDToken(string s)&lt;br /&gt;
  {&lt;br /&gt;
    if (keywords.ContainsKey(s))&lt;br /&gt;
	{ &lt;br /&gt;
	  return keywords[s];&lt;br /&gt;
	}  &lt;br /&gt;
	else&lt;br /&gt;
      return (int)Tokens.ID;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ksanderer</name></author>
	</entry>
	<entry>
		<id>https://pascalabc.net/wiki/index.php?title=%D0%A0%D0%BE%D0%BB%D0%B8_%D0%B2_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B5_%D0%B8_%D0%B7%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D1%8F_%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%87%D0%B8%D0%BA%D0%B0%D0%BC_2011&amp;diff=2182</id>
		<title>Роли в проекте и задания разработчикам 2011</title>
		<link rel="alternate" type="text/html" href="https://pascalabc.net/wiki/index.php?title=%D0%A0%D0%BE%D0%BB%D0%B8_%D0%B2_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B5_%D0%B8_%D0%B7%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D1%8F_%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%87%D0%B8%D0%BA%D0%B0%D0%BC_2011&amp;diff=2182"/>
		<updated>2011-09-22T11:00:56Z</updated>

		<summary type="html">&lt;p&gt;Ksanderer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Темченко А. А. Соловьев Л. В.&lt;br /&gt;
&lt;br /&gt;
1) парсер С&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Венцко А.З. Владыкин К.В. &lt;br /&gt;
&lt;br /&gt;
1) парсер языка Pascal&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Баштанова Д.С., Найденов С.Г.&lt;br /&gt;
&lt;br /&gt;
1) первичное описание классов синтаксического дерева&lt;br /&gt;
&lt;br /&gt;
2) Инфраструктура visitor'ов&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Науменко А., Ксения П.&lt;br /&gt;
&lt;br /&gt;
1) Обработчики грамматики &lt;br /&gt;
&lt;br /&gt;
2) Разбиение на блоки&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Пронин А.&lt;br /&gt;
&lt;br /&gt;
1) Visitor для генерации трехадресного кода. Структура для трехадрессного кода.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Бувайло О.&lt;br /&gt;
&lt;br /&gt;
1) Создание структуры для CFG&lt;/div&gt;</summary>
		<author><name>Ksanderer</name></author>
	</entry>
	<entry>
		<id>https://pascalabc.net/wiki/index.php?title=%D0%A0%D0%BE%D0%BB%D0%B8_%D0%B2_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B5_%D0%B8_%D0%B7%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D1%8F_%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%87%D0%B8%D0%BA%D0%B0%D0%BC_2011&amp;diff=2181</id>
		<title>Роли в проекте и задания разработчикам 2011</title>
		<link rel="alternate" type="text/html" href="https://pascalabc.net/wiki/index.php?title=%D0%A0%D0%BE%D0%BB%D0%B8_%D0%B2_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B5_%D0%B8_%D0%B7%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D1%8F_%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%87%D0%B8%D0%BA%D0%B0%D0%BC_2011&amp;diff=2181"/>
		<updated>2011-09-22T11:00:29Z</updated>

		<summary type="html">&lt;p&gt;Ksanderer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Темченко А. А. Соловьев Л. В.&lt;br /&gt;
&lt;br /&gt;
1) парсер С&lt;br /&gt;
&lt;br /&gt;
Венцко А.З. Владыкин К.В. &lt;br /&gt;
1) парсер языка Pascal&lt;br /&gt;
&lt;br /&gt;
Баштанова Д.С., Найденов С.Г.&lt;br /&gt;
1) первичное описание классов синтаксического дерева&lt;br /&gt;
2) Инфраструктура visitor'ов&lt;br /&gt;
&lt;br /&gt;
Науменко А., Ксения П.&lt;br /&gt;
1) Обработчики грамматики &lt;br /&gt;
2) Разбиение на блоки&lt;br /&gt;
&lt;br /&gt;
Пронин А.&lt;br /&gt;
1) Visitor для генерации трехадресного кода. Структура для трехадрессного кода.&lt;br /&gt;
&lt;br /&gt;
Бувайло О.&lt;br /&gt;
1) Создание структуры для CFG&lt;/div&gt;</summary>
		<author><name>Ksanderer</name></author>
	</entry>
	<entry>
		<id>https://pascalabc.net/wiki/index.php?title=%D0%A0%D0%BE%D0%BB%D0%B8_%D0%B2_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B5_%D0%B8_%D0%B7%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D1%8F_%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%87%D0%B8%D0%BA%D0%B0%D0%BC_2011&amp;diff=2180</id>
		<title>Роли в проекте и задания разработчикам 2011</title>
		<link rel="alternate" type="text/html" href="https://pascalabc.net/wiki/index.php?title=%D0%A0%D0%BE%D0%BB%D0%B8_%D0%B2_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B5_%D0%B8_%D0%B7%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D1%8F_%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%87%D0%B8%D0%BA%D0%B0%D0%BC_2011&amp;diff=2180"/>
		<updated>2011-09-22T11:00:17Z</updated>

		<summary type="html">&lt;p&gt;Ksanderer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Темченко А. А. Соловьев Л. В. &lt;br /&gt;
1) парсер С&lt;br /&gt;
&lt;br /&gt;
Венцко А.З. Владыкин К.В. &lt;br /&gt;
1) парсер языка Pascal&lt;br /&gt;
&lt;br /&gt;
Баштанова Д.С., Найденов С.Г.&lt;br /&gt;
1) первичное описание классов синтаксического дерева&lt;br /&gt;
2) Инфраструктура visitor'ов&lt;br /&gt;
&lt;br /&gt;
Науменко А., Ксения П.&lt;br /&gt;
1) Обработчики грамматики &lt;br /&gt;
2) Разбиение на блоки&lt;br /&gt;
&lt;br /&gt;
Пронин А.&lt;br /&gt;
1) Visitor для генерации трехадресного кода. Структура для трехадрессного кода.&lt;br /&gt;
&lt;br /&gt;
Бувайло О.&lt;br /&gt;
1) Создание структуры для CFG&lt;/div&gt;</summary>
		<author><name>Ksanderer</name></author>
	</entry>
	<entry>
		<id>https://pascalabc.net/wiki/index.php?title=%D0%93%D1%80%D0%B0%D0%BC%D0%BC%D0%B0%D1%82%D0%B8%D0%BA%D0%B0_%D1%8F%D0%B7%D1%8B%D0%BA%D0%B0_%D0%A1&amp;diff=2156</id>
		<title>Грамматика языка С</title>
		<link rel="alternate" type="text/html" href="https://pascalabc.net/wiki/index.php?title=%D0%93%D1%80%D0%B0%D0%BC%D0%BC%D0%B0%D1%82%D0%B8%D0%BA%D0%B0_%D1%8F%D0%B7%D1%8B%D0%BA%D0%B0_%D0%A1&amp;diff=2156"/>
		<updated>2011-09-15T11:23:39Z</updated>

		<summary type="html">&lt;p&gt;Ksanderer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang=&amp;quot;&amp;quot;&amp;gt;progr:&lt;br /&gt;
	| progr OperatorSequence&lt;br /&gt;
	;&lt;br /&gt;
&lt;br /&gt;
Operator: def&lt;br /&gt;
	| assign&lt;br /&gt;
	| if&lt;br /&gt;
	| while&lt;br /&gt;
	| OutPut&lt;br /&gt;
	| BOperator&lt;br /&gt;
	;&lt;br /&gt;
&lt;br /&gt;
BOperator: BEGIN OperatorSequense END&lt;br /&gt;
	;&lt;br /&gt;
&lt;br /&gt;
OperatorSequense: &lt;br /&gt;
	| Operatorsequense operator&lt;br /&gt;
	;&lt;br /&gt;
&lt;br /&gt;
def: ident varlist SEMICOLUMN&lt;br /&gt;
	;&lt;br /&gt;
&lt;br /&gt;
varlist: ident&lt;br /&gt;
	| varlist COMMA ident&lt;br /&gt;
	;&lt;br /&gt;
&lt;br /&gt;
assgin: ident ASS expr SEMICOLUMN&lt;br /&gt;
	;&lt;br /&gt;
&lt;br /&gt;
expr 	&lt;br /&gt;
	: ident &lt;br /&gt;
	| INTNUM &lt;br /&gt;
	| REALNUM&lt;br /&gt;
	| TRUE &lt;br /&gt;
	| FALSE&lt;br /&gt;
	| MINUS expr %prec UMINUS &lt;br /&gt;
	| LB expr RB&lt;br /&gt;
	| expr PLUS expr &lt;br /&gt;
	| expr MINUS expr&lt;br /&gt;
	| expr MULT expr&lt;br /&gt;
	| expr DIVIDE expr &lt;br /&gt;
	| expr EQ expr&lt;br /&gt;
	| expr NE expr&lt;br /&gt;
	| expr LT expr&lt;br /&gt;
	| expr LE expr&lt;br /&gt;
	| expr GT expr&lt;br /&gt;
	| expr GE expr&lt;br /&gt;
	;&lt;br /&gt;
&lt;br /&gt;
operand: ident&lt;br /&gt;
	| const&lt;br /&gt;
	;&lt;br /&gt;
&lt;br /&gt;
const : intConst&lt;br /&gt;
	| realConst&lt;br /&gt;
&lt;br /&gt;
if: IF LB expr RB operator elsepart&lt;br /&gt;
	;&lt;br /&gt;
&lt;br /&gt;
elsepart:&lt;br /&gt;
	| operator&lt;br /&gt;
&lt;br /&gt;
while: WHILE LB expr RB operator&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ksanderer</name></author>
	</entry>
	<entry>
		<id>https://pascalabc.net/wiki/index.php?title=%D0%93%D1%80%D0%B0%D0%BC%D0%BC%D0%B0%D1%82%D0%B8%D0%BA%D0%B0_%D1%8F%D0%B7%D1%8B%D0%BA%D0%B0_%D0%A1&amp;diff=2155</id>
		<title>Грамматика языка С</title>
		<link rel="alternate" type="text/html" href="https://pascalabc.net/wiki/index.php?title=%D0%93%D1%80%D0%B0%D0%BC%D0%BC%D0%B0%D1%82%D0%B8%D0%BA%D0%B0_%D1%8F%D0%B7%D1%8B%D0%BA%D0%B0_%D0%A1&amp;diff=2155"/>
		<updated>2011-09-15T11:22:45Z</updated>

		<summary type="html">&lt;p&gt;Ksanderer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang=&amp;quot;&amp;quot;&amp;gt;progr:&lt;br /&gt;
	| progr OperatorSequence&lt;br /&gt;
	;&lt;br /&gt;
&lt;br /&gt;
Operator: def&lt;br /&gt;
	| assign&lt;br /&gt;
	| if&lt;br /&gt;
	| while&lt;br /&gt;
	| OutPut&lt;br /&gt;
	| BOperator&lt;br /&gt;
	;&lt;br /&gt;
&lt;br /&gt;
BOperator: BEGIN OperatorSequense END&lt;br /&gt;
	;&lt;br /&gt;
&lt;br /&gt;
OperatorSequense: &lt;br /&gt;
	| Operatorsequense operator&lt;br /&gt;
	;&lt;br /&gt;
&lt;br /&gt;
def: ident varlist SEMICOLUMN&lt;br /&gt;
	;&lt;br /&gt;
&lt;br /&gt;
varlist: ident&lt;br /&gt;
	| varlist COMMA ident&lt;br /&gt;
	;&lt;br /&gt;
&lt;br /&gt;
assgin: ident ASS expr SEMICOLUMN&lt;br /&gt;
	;&lt;br /&gt;
&lt;br /&gt;
expr 	&lt;br /&gt;
	: ident &lt;br /&gt;
	| INTNUM &lt;br /&gt;
	| REALNUM&lt;br /&gt;
	| TRUE &lt;br /&gt;
	| FALSE&lt;br /&gt;
	| MINUS expr %prec UMINUS &lt;br /&gt;
	| LB expr RB&lt;br /&gt;
	| expr PLUS expr &lt;br /&gt;
	| expr MINUS expr&lt;br /&gt;
	| expr MULT expr&lt;br /&gt;
	| expr DIVIDE expr &lt;br /&gt;
	| expr EQ expr&lt;br /&gt;
	| expr NE expr&lt;br /&gt;
	| expr LT expr&lt;br /&gt;
	| expr LE expr&lt;br /&gt;
	| expr GT expr&lt;br /&gt;
	| expr GE expr&lt;br /&gt;
	;&lt;br /&gt;
&lt;br /&gt;
operand: ident&lt;br /&gt;
	| const&lt;br /&gt;
	;&lt;br /&gt;
&lt;br /&gt;
const : intConst&lt;br /&gt;
	| realCOnst&lt;br /&gt;
&lt;br /&gt;
if: IF LB expr RB operator elsepart&lt;br /&gt;
	;&lt;br /&gt;
&lt;br /&gt;
elsepart:&lt;br /&gt;
	| operator&lt;br /&gt;
&lt;br /&gt;
while: WHILE LB expr RB operator&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ksanderer</name></author>
	</entry>
	<entry>
		<id>https://pascalabc.net/wiki/index.php?title=%D0%93%D1%80%D0%B0%D0%BC%D0%BC%D0%B0%D1%82%D0%B8%D0%BA%D0%B0_%D1%8F%D0%B7%D1%8B%D0%BA%D0%B0_%D0%A1&amp;diff=2154</id>
		<title>Грамматика языка С</title>
		<link rel="alternate" type="text/html" href="https://pascalabc.net/wiki/index.php?title=%D0%93%D1%80%D0%B0%D0%BC%D0%BC%D0%B0%D1%82%D0%B8%D0%BA%D0%B0_%D1%8F%D0%B7%D1%8B%D0%BA%D0%B0_%D0%A1&amp;diff=2154"/>
		<updated>2011-09-15T11:21:29Z</updated>

		<summary type="html">&lt;p&gt;Ksanderer: Новая: progr: 	| progr OperatorSequence 	;  Operator: def 	| assign 	| if 	| while 	| OutPut 	| BOperator 	;  BOperator: BEGIN OperatorSequense END 	;  OperatorSequense:  	| Operatorsequense op...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;progr:&lt;br /&gt;
	| progr OperatorSequence&lt;br /&gt;
	;&lt;br /&gt;
&lt;br /&gt;
Operator: def&lt;br /&gt;
	| assign&lt;br /&gt;
	| if&lt;br /&gt;
	| while&lt;br /&gt;
	| OutPut&lt;br /&gt;
	| BOperator&lt;br /&gt;
	;&lt;br /&gt;
&lt;br /&gt;
BOperator: BEGIN OperatorSequense END&lt;br /&gt;
	;&lt;br /&gt;
&lt;br /&gt;
OperatorSequense: &lt;br /&gt;
	| Operatorsequense operator&lt;br /&gt;
	;&lt;br /&gt;
&lt;br /&gt;
def: ident varlist SEMICOLUMN&lt;br /&gt;
	;&lt;br /&gt;
&lt;br /&gt;
varlist: ident&lt;br /&gt;
	| varlist COMMA ident&lt;br /&gt;
	;&lt;br /&gt;
&lt;br /&gt;
assgin: ident ASS expr SEMICOLUMN&lt;br /&gt;
	;&lt;br /&gt;
&lt;br /&gt;
expr 	&lt;br /&gt;
	: ident &lt;br /&gt;
	| INTNUM &lt;br /&gt;
	| REALNUM&lt;br /&gt;
	| TRUE &lt;br /&gt;
	| FALSE&lt;br /&gt;
	| MINUS expr %prec UMINUS &lt;br /&gt;
	| LB expr RB&lt;br /&gt;
	| expr PLUS expr &lt;br /&gt;
	| expr MINUS expr&lt;br /&gt;
	| expr MULT expr&lt;br /&gt;
	| expr DIVIDE expr &lt;br /&gt;
	| expr EQ expr&lt;br /&gt;
	| expr NE expr&lt;br /&gt;
	| expr LT expr&lt;br /&gt;
	| expr LE expr&lt;br /&gt;
	| expr GT expr&lt;br /&gt;
	| expr GE expr&lt;br /&gt;
	;&lt;br /&gt;
&lt;br /&gt;
operand: ident&lt;br /&gt;
	| const&lt;br /&gt;
	;&lt;br /&gt;
&lt;br /&gt;
const : intConst&lt;br /&gt;
	| realCOnst&lt;br /&gt;
&lt;br /&gt;
if: IF LB expr RB operator elsepart&lt;br /&gt;
	;&lt;br /&gt;
&lt;br /&gt;
elsepart:&lt;br /&gt;
	| operator&lt;br /&gt;
&lt;br /&gt;
while: WHILE LB expr RB operator&lt;/div&gt;</summary>
		<author><name>Ksanderer</name></author>
	</entry>
	<entry>
		<id>https://pascalabc.net/wiki/index.php?title=%D0%9C%D0%9F%D0%9E%D0%9A_2011&amp;diff=2153</id>
		<title>МПОК 2011</title>
		<link rel="alternate" type="text/html" href="https://pascalabc.net/wiki/index.php?title=%D0%9C%D0%9F%D0%9E%D0%9A_2011&amp;diff=2153"/>
		<updated>2011-09-15T11:21:16Z</updated>

		<summary type="html">&lt;p&gt;Ksanderer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Роли в проекте и задания разработчикам 2011]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Грамматика языка Pascal]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Грамматика языка С]]&lt;/div&gt;</summary>
		<author><name>Ksanderer</name></author>
	</entry>
</feed>