Internships
Register
Copyright © 2000—2025 JetBrains s.r.o.

Vim script парсер

Description

Vim — текстовый редактор с 30-летней историей и необычным подходом к редактированию текста. Многие редакторы и IDE создают свои эмуляторы Vim, чтобы поддержать у себя этот режим редактирования. В случае с IntelliJ IDEA таким эмулятором является плагин IdeaVim. Он уже насчитывает около полумиллиона пользователей, и мы продолжаем активно развивать его.

Помимо возможностей редактирования текста Vim предоставляет встроенный язык программирования Vim script. В основном Vim script используется для настройки Vim под конкретные нужды пользователя. Однако это также полноценный язык. Поддержав исполнение Vim script в IdeaVim, мы улучшим возможности эмулятора. Задачу можно разделить на две части: парсинг кода (построение AST) и непосредственно его исполнение. Плагин уже включает примитивный построчный парсинг команд, который, однако, не позволяет поддержать полноценное выполнение Vim script.

Цели данного проекта:

  • Изучение возможных подходов к созданию парсера Vim script.
  • Написание парсера.

Задача написания парсера может оказаться непростой и потребовать времени. В рамках данного проекта мы бы хотели создать парсер, который поддержит текущий набор команд (уже присутствующих в IdeaVim). На данный момент никаких серьезных наработок у нас нет — необходимо разработать подход к решению ряда вопросов, касающихся как особенностей языка, так и сложностей, которые возникают в контексте IdeaVim. Этот проект позволит нам улучшить имеющиеся возможности парсинга и даст хорошую базу для дальнейшего развития парсера.

По любым вопросам можно обратиться по адресу aleksei.plate@jetbrains.com.

Requirements

  • Знание Java.
  • Базовые навыки использования Vim. Проект не про Vim, а про парсинг, поэтому продвинутого знания команд не потребуется.
  • Парсинг. Большим плюсом будет знание того, что такое AST и где в нем спрятаны токены. В противном случае вам потребуется изучить эту область в ходе работы.

Admission

Разработчики: Лето 2021

Mentor

Alex Plate

Mentor's location

Remote

Product/Team

IdeaVim

Tags

Java
Kotlin