Download - Язык программирования SocLang (VKLang)
1
Язык программирования SocLang
Голубева Надежда (ИВП-08)
2
План1. Постановка цели2. Ключевые особенности SocLang3. Этапы реализации проекта
1) Этапы работы транслятора2) Примеры таблиц типов и идентификаторов3) Расшифровка файлов транслятора
4. Пример программы написанной на SocLang5. Результат работы программы-примера6. Построение AST дерева7. Результаты8. Дальнейшие планы
3
Поставленные цели
Создать сайт доступа к API ВКонтакте
Сайт может быть использован: Программистами
(напр., хотят опробовать идею своего приложения для ВКонтакте (ВК)) Для сбора статистических
данных
(напр., маркетинговые исследования) Для автоматизации действий
(напр., поиск по группам, выгрузка всех фото)
Все фотографии
Друзья. Статистика
Программа
Код…
Результат
4
Ключевые особенности SocLang Существенно упрощает работу с API ВК и при этом имеет
готовую среду для исполнения программ (не требует использования каких-либо библиотек)
SocLang – императивный язык Ограниченная система типов (определена в первую очередь
категориями объектов API ВК) user message picture place group
Специальные команды login print
Типы – объектные (есть методы и состояния) Лексемы и синтаксис на основе Java (с некоторыми ограничениями и модификациями)
5
Этапы реализации проекта
SocLangТранслятор
JavaRuby
2 этап – написание программы на SocLang
ANTLRВК
http(s)
1 этап – разработка транслятора
3 этап – исполнениепрограммы
*
6
Этапы работы транслятора
Lexer
Грамматика
Parser
Грамматика
String Template
Шаблоны
TreeParser
Грамматика
SocLang RubyТаблица типов
Таблица id
lexem(id, keywords,spec-symbols)
AST
soclang.g soclangTree.g RubyOutputTemplate.stgФайлы:
7
Формальные описания транслятора1. Лексические свойства языка (лексемы)2. Синтаксис языка3. Правила построения AST дерева по
выделенным на этапе 2 синтаксическим конструкциям
4. Правила генерации объектного кода на языке Ruby по определенным шаблонам, найденным в AST дереве
8
Примеры таблиц типов и идентификаторов
ID Type
Katya user
Таблица типов
ID IDVK
Katya 71224
Таблица идентификаторов
Mypic picturePetya 82234
9
Расшифровка файлов транслятора1. Были определены две грамматики на языке
ANTLR (стандартный подход) и шаблоны ST1) soclang.g: грамматика, определяющая лексемы
и синтаксис2) soclangTreeParser.g: грамматика, разбирающая
AST дерево3) rubyOutputTemplate.stg: набор шаблонов для
генерации Ruby кода
По этим трем файлам ANTLR сгенерировал на языке Java файлы реализации лексера, синтаксического анализатора и анализатора AST дерева с генератором кода на Ruby.
10
Пример программы на SocLang
{res=1;
if(res==1){
user Nadya(18114446);for(i=0;i<3;i=i+1){
if(i==0) Nadya.send("Hello23!"); else {}if(i==1) Nadya.send("Hello24!"); else {}if(i==2) Nadya.send("Hello25!"); else {}
}
//user Nadya(18114446);//Nadya.send("Test");
//print(Nadya.friends());}else{}
}
http://api.vk.com/oauth/authorize?client_id=3274804&redirect_uri=https://oauth.vk.com/blank.html&scope=4096&display=page&response_type=token
https://api.vkontakte.ru/method/messages.send?uid=18114446&message=ANTLR%is%cool!&title=Hello%23!&access_token=1358a84a439c9f1c1306d4d5f813684646113591359ae72439a719c0a0eea3a971897fd&type=1
https://api.vkontakte.ru/method/messages.send?uid=18114446&message=ANTLR%is%cool!&title=Hello%24!&access_token=1358a84a439c9f1c1306d4d5f813684646113591359ae72439a719c0a0eea3a971897fd&type=1
https://api.vkontakte.ru/method/messages.send?uid=18114446&message=ANTLR%is%cool!&title=Hello%25!&access_token=1358a84a439c9f1c1306d4d5f813684646113591359ae72439a719c0a0eea3a971897fd&type=1
Используя стандартные средства API VK Программа на SocLang
11
Результат работы программы
12
Графическое построение AST дерева
13
Результаты Разработан прототип транслятора языка
SocLang в язык Ruby определены описания:
лексем синтаксиса AST дерева шаблонов генерации кода
Изучен API ВКонтакте Работают простые программы на языке
SocLang
14
Дальнейшие планы Реализация остальных типов Реализация специальных команд (нпр.,
генерация HTML страницы) Введение декларативного синтаксиса для
запроса данных Использование библиотек Ruby для
доступа к ВК при генерации итоговой программы