Создание парсера для простого языка псевдокодов?

Я хотел сделать простой синтаксический анализатор для языка «псевдокод», подобного языку (сохраняющему жесткость), в Java. Пример псевдокода будет:

//This is a comment
$x1 = readint
$x2 = readint

$dx = $x2 - $x1
#f = $dx / 2

if ($dx > 0)
{
  loop while(#f > 1)
  {
     print(#f)
     #f = #f / 2
  }
}

Обратите внимание, что приведенный выше код является жестким в том смысле, что в строке не может быть более одного оператора, целые числа начинаются с $, числа с плавающей запятой начинаются с # и т. Д.

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

Этот подход хорош? Для операторов в цикле, как я могу хранить выражения, чтобы мне не приходилось токенизировать в каждой итерации?

Я мог бы подумать о преобразовании выражений (например, #f = #f / 2) в блочную нотацию, а затем сохранить в стеке. И в каждой итерации, при выталкивании операндов я мог заменить значение для каждой переменной. Но достаточно ли это эффективно?

Заранее спасибо за любое предложение.

Ответы на вопрос(3)

Ваш ответ на вопрос