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

Post on 28-Jul-2015

83 views 0 download

Transcript of Язык программирования 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 для

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