На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Qraizer, Hsilgos
  
> Таблица синтаксического разбора языка , как ее запрограмить
    Вот язык на который нужно писать транслятор
    ================================================
    do while (<отношение>); <оператор>; end;
    if <отношение> then <оператор> else <оператор>;
    id = <выражение>;
    ================================================

    Вот собственно и весь язык.
    Лексический анализатор я потрудился и написал. На синтаксический хватило сил токо на граматику.
    А вот граматика к нему.

    ================================================
    S -> W|I|O
    W -> do while (E); S; end;
    E -> CRC
    C -> id|number
    R -> <|>|<=|>=|=
    I -> if E then S else S;
    O -> id=Z;
    Z -> ZYZ|(Z)|-Z|+Z|C
    Y -> +|-|*|/
    ================================================

    Товарищи прошу теперь помощи.
    1. Корректна ли данная граматика с точки зрения описания синтаксиса языка?
    2. Как эту граматику привести к виду пригодному к формированию таблици синтаксического разбора?(именно нисходящий, рекурсивный спуск)
      Наверное, тебе стоит заглянуть в этот топик. В частности, обратить внимание на пост №11.
        ‡ачем его писать если есть YACC.
        Ћн тебе сам построит лћбой транслЯтор или компилЯтор!
          Внешне конечно понятно, что ты имел в виду, но привычней, когда описывают язык с помощью НБФ или диаграм Вирта - с этой точки зрения - граматика описана не верно. Ответ на второй вопрос зависит от того, что именно тебе нужно сделать - просто изобразить алгоритм рекурсивного спуска для данной граматики или реализовать его програмно?
          0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
          0 пользователей:


          Рейтинг@Mail.ru
          [ Script execution time: 0,0182 ]   [ 16 queries used ]   [ Generated: 27.04.24, 09:49 GMT ]