Создание синтаксического анализатора (Часть I)

Я делаю свой собственный язык программирования на основе javascript (да, это безумие, но это только для обучения .. . может быть? ). Я читаю о синтаксических анализаторах, и первый этап - преобразование исходного кода в токены, например:

if(x > 5)
  return true;

Tokenizer в:

T_IF          "if"
T_LPAREN      "("
T_IDENTIFIER  "x"
T_GT          ">"
T_NUMBER      "5"
T_RPAREN      ")"
T_IDENTIFIER  "return"
T_TRUE        "true"
T_TERMINATOR  ";"

Я пока не знаю, верна ли моя логика для этого. На моем парсере он даже лучше ( или нет? ) и преобразовать в него (да, многомерный массив):

T_IF             "if"
  T_EXPRESSION     ...
    T_IDENTIFIER     "x"
    T_GT             ">"
    T_NUMBER         "5"
  T_CLOSURE        ...
    T_IDENTIFIER     "return"
    T_TRUE           "true"

У меня есть некоторые сомнения:

  1. Мой способ лучше или хуже, чем оригинальный способ ? Обратите внимание, что мой код будет читаться и компилироваться (переводиться на другой язык, например PHP), а не все время интерпретироваться.
  2. Что мне нужно делать после токенизатора? Я действительно потерялся на этом перевале!
  3. Есть несколько хороших туториалов, чтобы узнать, как я могу это сделать?

Ну, вот и все. Пока!

19
задан David Rodrigues 26 February 2012 в 11:11
поделиться