LINUX.ORG.RU

[java]Интерпретатор языка вручную.


0

0

Без regex, без antlr, без каких либо сторонних библиотек, только средствами явы.

Нужно реализовать парсер чего то подобного:

javax.swing.JFrame('testFrame'){ // в скобках аргумент конструктора
  visible: true,
  size: java.awt.Dimension{
    height: 100,
    width:300
  },
  add( // <- вызов метода корневого объекта
    javax.swing.JButton{
      text:$.title,       //<- тут вызов свойства корневого объекта
      preferredSize: java.awt.Dimension{
        height: 30,
        width:100
      }
    }
  )
}

собственно интерпретатор уже написан, но там есть кардинальные недостатки кои не позволяют ему элегантно прикрутить вызов методов и интрепретацию выражений. Так что нужна инфа по этому делу.

Опейсывать грамматики могу, с antrl, yacc и bison работал, но это все не то, нужно ручками. Хотелось бы увидеть статьи, книги (книгу дракона знаю) просто советы.

update: JavaFX не предлагать, для непонятливых

★★☆

Ну реализуй сдвиг-свертку вручную, трудно что-ли?

Rudcozt ()

Непонятно, почему нельзя пользоваться сторонними библиотеками. Но раз так, то просто напиши что-то подобное:

http://jparsec.codehaus.org/

Тебе реально процентов пять от его функциональности потребуется.

anonymous ()

токенайзим, парсим например Recursive descent parserом . строим AST и проходим visiterом в визитера подцепить нужные методы

anonymous ()

А в чём проблема взять и написать ?
Создаешь структуру объектов описывающих язык - в данном случае, Класс, Переменная, Метод, Аргумент. Заполняешь её, интерпретируешь. За два дня в общих чертах можно сделать.

vtVitus ★★★★★ ()
Ответ на: комментарий от vtVitus

дык это есть, только проблема с заполнением контекста, т.е. в каждый моменты мы должны знать где находимся. Банальный пример - нашли метод, значит он вызывается на родительском объекте, который нужно както найти в стеке.

wfrr ★★☆ ()
Ответ на: комментарий от wfrr

это как ближайшая цель, а так это удобный способ инициализации POJO объектов, какбе полезная штука при напейсании юнит-тестов и вообще в хозяйстве полезно

wfrr ★★☆ ()
Ответ на: комментарий от wfrr

> программирование гуйни нормальными людьми, то бишь теми кто не сломал мозг о свинг

То, что вы хотите реализовать, сломает мозг нормального человека гораздо быстрее.

bbk123 ★★★★★ ()
Ответ на: комментарий от JFreeM

что то из пердчисленного вами позволяет решать описанную в топике кодом задачу? А что вернет свойтсво focusOwner об]екта JFrame, при том что JFrame содержит isFocusOwner и getFocusOwner?

wfrr ★★☆ ()
Ответ на: комментарий от wfrr

Ты думаешь, это никем еще не было написано для тебя? Ты случайно не ВР?

Karapuz ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.