Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
YaccConstructor
Задачи на весенний семестр 2016
Автор: Семён Григорьев
Лаборатория языковых инструментов JetBrains
Санкт-П...
YaccConstructor
Исследования в области лексического и синтаксического анализа
Открытый исходный код
https://github.com/Yac...
Требования к знаниям и навыкам
Знакомство с функциональным программированием (F# или
OCaml)
Знания в области лексического ...
Анализ динамически
формируемого кода
Динамически формируемый код
string res = "";
for(i = 0; i < l; i++)
res = "()" + res;
use(res);
Аппроксимация
("()")*
Грам...
Задача: применение анализа строковых выражений для
JavaScript eval
Цель: трансляция стандартного eval в "безопасный"
Marti...
Задача: использование SPPF в абстрактном
синтаксическом анализе
Абстрактный синтаксический анализ — один из подходов к
ана...
Средства для сертификацонного
программирования
или
F# + F* = ?
Сертификационное программирование
F* (https://www.fstar-lang.org/tutorial/)
Coq
Agda
...
val sort: l:list int ->
Tot (m:li...
Задача: объединение F# и F*
F# + F* = F#*
Парсер для F#*
Транслятор из AST F# в AST F*
Разбивается на подзадачи (до 3 чело...
Задача: поддержка F#*
в Microsoft Visual Studio
Поддержать в модели проекта, редакторе, отладчике
Создание файлов, шаблоны...
Задача: межъязыковое взаимодействие F# и F*
Использовать функции, написанные на F* в F#(.NET)
Использовать функции, написа...
Контакты
Почта: rsdpisuy@gmail.com
Исходный код YaccConstructor:
https://github.com/YaccConstructor
Google+ сообщество: ht...
Upcoming SlideShare
Loading in …5
×

Research projects spring 2016

333 views

Published on

Research projects for students of Academic University and Computer Science Center . Saint-Petersburg, 2016.

Published in: Education
  • Be the first to comment

  • Be the first to like this

Research projects spring 2016

  1. 1. YaccConstructor Задачи на весенний семестр 2016 Автор: Семён Григорьев Лаборатория языковых инструментов JetBrains Санкт-Петербургский государственный университет Математико-механический факультет 8 февраля 2016г. Семён Григорьев 8 февраля 2016г. 1 / 13
  2. 2. YaccConstructor Исследования в области лексического и синтаксического анализа Открытый исходный код https://github.com/YaccConstructor Основной язык разработки — F# Семён Григорьев 8 февраля 2016г. 2 / 13
  3. 3. Требования к знаниям и навыкам Знакомство с функциональным программированием (F# или OCaml) Знания в области лексического и синтаксического анализа Знания в области техник трансляции Умение читать научные статьи, чужой код Навыки работы с Git/GitHub, Microsof VisualStudio Семён Григорьев 8 февраля 2016г. 3 / 13
  4. 4. Анализ динамически формируемого кода
  5. 5. Динамически формируемый код string res = ""; for(i = 0; i < l; i++) res = "()" + res; use(res); Аппроксимация ("()")* Грамматика start ::= s s ::= LBR s RBR s s ::= 𝜖 Лес разбора (SPPF) start_rule prod 2 s ! prod 0 prod 0 LBR s RBR eps LBR s RBR eps Семён Григорьев 8 февраля 2016г. 5 / 13
  6. 6. Задача: применение анализа строковых выражений для JavaScript eval Цель: трансляция стандартного eval в "безопасный" Martin Lester. Information Flow Analysis for a Dynamically Typed Functional Language with Staged Metaprogramming Martin Lester. Analysing Eval using Staged Metaprogramming Исследовательская задача: диплом, публикации Разбивается на 2 подзадачи Получение аппроксимации Трансляция SPPF в "безопасный eval" Семён Григорьев 8 февраля 2016г. 6 / 13
  7. 7. Задача: использование SPPF в абстрактном синтаксическом анализе Абстрактный синтаксический анализ — один из подходов к анализу динамически формируемого кода K. G. Doh, H. Kim, D. A. Schmidt. Static Validation of Dynamically Generated HTML Documents Based on Abstract Parsing and Semantic Processing E. Verbitskaia, S. Grigorev, D. Avdyukhin. Relaxed Parsing of Regular Approximations of String-Embedded Languages Реализовать вычисление семантики по статьям Сравнить с нашим подходом А можно ли использовать SPPF Диплом, публикации Семён Григорьев 8 февраля 2016г. 7 / 13
  8. 8. Средства для сертификацонного программирования или F# + F* = ?
  9. 9. Сертификационное программирование F* (https://www.fstar-lang.org/tutorial/) Coq Agda ... val sort: l:list int -> Tot (m:list int{sorted m / (forall i. mem i l = mem i m)}) (decreases (length l)) let rec sort l = match l with | [] -> [] | pivot::tl -> let hi, lo = partition (cmp pivot) tl in let l’ = append (sort lo) (pivot::sort hi) in dedup l’ Семён Григорьев 8 февраля 2016г. 9 / 13
  10. 10. Задача: объединение F# и F* F# + F* = F#* Парсер для F#* Транслятор из AST F# в AST F* Разбивается на подзадачи (до 3 человек) Диплом (вся задача), публикации Семён Григорьев 8 февраля 2016г. 10 / 13
  11. 11. Задача: поддержка F#* в Microsoft Visual Studio Поддержать в модели проекта, редакторе, отладчике Создание файлов, шаблоны Подсветка синтаксиса Сообщения об ошибках, подсветка ошибок .... Разбивается на подзадачи (до 4 человек) Диплом (вся задача), публикации Семён Григорьев 8 февраля 2016г. 11 / 13
  12. 12. Задача: межъязыковое взаимодействие F# и F* Использовать функции, написанные на F* в F#(.NET) Использовать функции, написанные на F#(.NET) в F* Сохранить типизацию/вывод типов Разбивается на подзадачи (до 2 человек) Диплом (вся задача), публикации Семён Григорьев 8 февраля 2016г. 12 / 13
  13. 13. Контакты Почта: rsdpisuy@gmail.com Исходный код YaccConstructor: https://github.com/YaccConstructor Google+ сообщество: https://goo.gl/DuPWkM Семён Григорьев 8 февраля 2016г. 13 / 13

×