Язык программирования SocLang (VKLang)
-
Upload
alexander-petrov -
Category
Internet
-
view
109 -
download
0
Transcript of Язык программирования SocLang (VKLang)
![Page 1: Язык программирования SocLang (VKLang)](https://reader036.fdocuments.net/reader036/viewer/2022081419/55b66502bb61ebc1678b459b/html5/thumbnails/1.jpg)
1
Язык программирования SocLang
Голубева Надежда (ИВП-08)
![Page 2: Язык программирования SocLang (VKLang)](https://reader036.fdocuments.net/reader036/viewer/2022081419/55b66502bb61ebc1678b459b/html5/thumbnails/2.jpg)
2
План1. Постановка цели2. Ключевые особенности SocLang3. Этапы реализации проекта
1) Этапы работы транслятора2) Примеры таблиц типов и идентификаторов3) Расшифровка файлов транслятора
4. Пример программы написанной на SocLang5. Результат работы программы-примера6. Построение AST дерева7. Результаты8. Дальнейшие планы
![Page 3: Язык программирования SocLang (VKLang)](https://reader036.fdocuments.net/reader036/viewer/2022081419/55b66502bb61ebc1678b459b/html5/thumbnails/3.jpg)
3
Поставленные цели
Создать сайт доступа к API ВКонтакте
Сайт может быть использован: Программистами
(напр., хотят опробовать идею своего приложения для ВКонтакте (ВК)) Для сбора статистических
данных
(напр., маркетинговые исследования) Для автоматизации действий
(напр., поиск по группам, выгрузка всех фото)
Все фотографии
Друзья. Статистика
Программа
Код…
Результат
![Page 4: Язык программирования SocLang (VKLang)](https://reader036.fdocuments.net/reader036/viewer/2022081419/55b66502bb61ebc1678b459b/html5/thumbnails/4.jpg)
4
Ключевые особенности SocLang Существенно упрощает работу с API ВК и при этом имеет
готовую среду для исполнения программ (не требует использования каких-либо библиотек)
SocLang – императивный язык Ограниченная система типов (определена в первую очередь
категориями объектов API ВК) user message picture place group
Специальные команды login print
Типы – объектные (есть методы и состояния) Лексемы и синтаксис на основе Java (с некоторыми ограничениями и модификациями)
![Page 5: Язык программирования SocLang (VKLang)](https://reader036.fdocuments.net/reader036/viewer/2022081419/55b66502bb61ebc1678b459b/html5/thumbnails/5.jpg)
5
Этапы реализации проекта
SocLangТранслятор
JavaRuby
2 этап – написание программы на SocLang
ANTLRВК
http(s)
1 этап – разработка транслятора
3 этап – исполнениепрограммы
*
![Page 6: Язык программирования SocLang (VKLang)](https://reader036.fdocuments.net/reader036/viewer/2022081419/55b66502bb61ebc1678b459b/html5/thumbnails/6.jpg)
6
Этапы работы транслятора
Lexer
Грамматика
Parser
Грамматика
String Template
Шаблоны
TreeParser
Грамматика
SocLang RubyТаблица типов
Таблица id
lexem(id, keywords,spec-symbols)
AST
soclang.g soclangTree.g RubyOutputTemplate.stgФайлы:
![Page 7: Язык программирования SocLang (VKLang)](https://reader036.fdocuments.net/reader036/viewer/2022081419/55b66502bb61ebc1678b459b/html5/thumbnails/7.jpg)
7
Формальные описания транслятора1. Лексические свойства языка (лексемы)2. Синтаксис языка3. Правила построения AST дерева по
выделенным на этапе 2 синтаксическим конструкциям
4. Правила генерации объектного кода на языке Ruby по определенным шаблонам, найденным в AST дереве
![Page 8: Язык программирования SocLang (VKLang)](https://reader036.fdocuments.net/reader036/viewer/2022081419/55b66502bb61ebc1678b459b/html5/thumbnails/8.jpg)
8
Примеры таблиц типов и идентификаторов
ID Type
Katya user
Таблица типов
ID IDVK
Katya 71224
Таблица идентификаторов
Mypic picturePetya 82234
![Page 9: Язык программирования SocLang (VKLang)](https://reader036.fdocuments.net/reader036/viewer/2022081419/55b66502bb61ebc1678b459b/html5/thumbnails/9.jpg)
9
Расшифровка файлов транслятора1. Были определены две грамматики на языке
ANTLR (стандартный подход) и шаблоны ST1) soclang.g: грамматика, определяющая лексемы
и синтаксис2) soclangTreeParser.g: грамматика, разбирающая
AST дерево3) rubyOutputTemplate.stg: набор шаблонов для
генерации Ruby кода
По этим трем файлам ANTLR сгенерировал на языке Java файлы реализации лексера, синтаксического анализатора и анализатора AST дерева с генератором кода на Ruby.
![Page 10: Язык программирования SocLang (VKLang)](https://reader036.fdocuments.net/reader036/viewer/2022081419/55b66502bb61ebc1678b459b/html5/thumbnails/10.jpg)
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
![Page 11: Язык программирования SocLang (VKLang)](https://reader036.fdocuments.net/reader036/viewer/2022081419/55b66502bb61ebc1678b459b/html5/thumbnails/11.jpg)
11
Результат работы программы
![Page 12: Язык программирования SocLang (VKLang)](https://reader036.fdocuments.net/reader036/viewer/2022081419/55b66502bb61ebc1678b459b/html5/thumbnails/12.jpg)
12
Графическое построение AST дерева
![Page 13: Язык программирования SocLang (VKLang)](https://reader036.fdocuments.net/reader036/viewer/2022081419/55b66502bb61ebc1678b459b/html5/thumbnails/13.jpg)
13
Результаты Разработан прототип транслятора языка
SocLang в язык Ruby определены описания:
лексем синтаксиса AST дерева шаблонов генерации кода
Изучен API ВКонтакте Работают простые программы на языке
SocLang
![Page 14: Язык программирования SocLang (VKLang)](https://reader036.fdocuments.net/reader036/viewer/2022081419/55b66502bb61ebc1678b459b/html5/thumbnails/14.jpg)
14
Дальнейшие планы Реализация остальных типов Реализация специальных команд (нпр.,
генерация HTML страницы) Введение декларативного синтаксиса для
запроса данных Использование библиотек Ruby для
доступа к ВК при генерации итоговой программы