Язык программирования SocLang (VKLang)

14
Язык программирования SocLang Голубева Надежда (ИВП-08) 1

Transcript of Язык программирования SocLang (VKLang)

Page 1: Язык программирования SocLang (VKLang)

1

Язык программирования SocLang

Голубева Надежда (ИВП-08)

Page 2: Язык программирования SocLang (VKLang)

2

План1. Постановка цели2. Ключевые особенности SocLang3. Этапы реализации проекта

1) Этапы работы транслятора2) Примеры таблиц типов и идентификаторов3) Расшифровка файлов транслятора

4. Пример программы написанной на SocLang5. Результат работы программы-примера6. Построение AST дерева7. Результаты8. Дальнейшие планы

Page 3: Язык программирования SocLang (VKLang)

3

Поставленные цели

Создать сайт доступа к API ВКонтакте

Сайт может быть использован: Программистами

(напр., хотят опробовать идею своего приложения для ВКонтакте (ВК)) Для сбора статистических

данных

(напр., маркетинговые исследования) Для автоматизации действий

(напр., поиск по группам, выгрузка всех фото)

Все фотографии

Друзья. Статистика

Программа

Код…

Результат

Page 4: Язык программирования SocLang (VKLang)

4

Ключевые особенности SocLang Существенно упрощает работу с API ВК и при этом имеет

готовую среду для исполнения программ (не требует использования каких-либо библиотек)

SocLang – императивный язык Ограниченная система типов (определена в первую очередь

категориями объектов API ВК) user message picture place group

Специальные команды login print

Типы – объектные (есть методы и состояния) Лексемы и синтаксис на основе Java (с некоторыми ограничениями и модификациями)

Page 5: Язык программирования SocLang (VKLang)

5

Этапы реализации проекта

SocLangТранслятор

JavaRuby

2 этап – написание программы на SocLang

ANTLRВК

http(s)

1 этап – разработка транслятора

3 этап – исполнениепрограммы

*

Page 6: Язык программирования SocLang (VKLang)

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)

7

Формальные описания транслятора1. Лексические свойства языка (лексемы)2. Синтаксис языка3. Правила построения AST дерева по

выделенным на этапе 2 синтаксическим конструкциям

4. Правила генерации объектного кода на языке Ruby по определенным шаблонам, найденным в AST дереве

Page 8: Язык программирования SocLang (VKLang)

8

Примеры таблиц типов и идентификаторов

ID Type

Katya user

Таблица типов

ID IDVK

Katya 71224

Таблица идентификаторов

Mypic picturePetya 82234

Page 9: Язык программирования SocLang (VKLang)

9

Расшифровка файлов транслятора1. Были определены две грамматики на языке

ANTLR (стандартный подход) и шаблоны ST1) soclang.g: грамматика, определяющая лексемы

и синтаксис2) soclangTreeParser.g: грамматика, разбирающая

AST дерево3) rubyOutputTemplate.stg: набор шаблонов для

генерации Ruby кода

По этим трем файлам ANTLR сгенерировал на языке Java файлы реализации лексера, синтаксического анализатора и анализатора AST дерева с генератором кода на Ruby.

Page 10: Язык программирования SocLang (VKLang)

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)

11

Результат работы программы

Page 12: Язык программирования SocLang (VKLang)

12

Графическое построение AST дерева

Page 13: Язык программирования SocLang (VKLang)

13

Результаты Разработан прототип транслятора языка

SocLang в язык Ruby определены описания:

лексем синтаксиса AST дерева шаблонов генерации кода

Изучен API ВКонтакте Работают простые программы на языке

SocLang

Page 14: Язык программирования SocLang (VKLang)

14

Дальнейшие планы Реализация остальных типов Реализация специальных команд (нпр.,

генерация HTML страницы) Введение декларативного синтаксиса для

запроса данных Использование библиотек Ruby для

доступа к ВК при генерации итоговой программы