Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.191.88.249] |
|
Сообщ.
#1
,
|
|
|
Вот язык на который нужно писать транслятор
================================================ 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. Как эту граматику привести к виду пригодному к формированию таблици синтаксического разбора?(именно нисходящий, рекурсивный спуск) |
Сообщ.
#2
,
|
|
|
Наверное, тебе стоит заглянуть в этот топик. В частности, обратить внимание на пост №11.
|
Сообщ.
#3
,
|
|
|
‡ачем его писать если есть YACC.
Ћн тебе сам построит лћбой транслЯтор или компилЯтор! |
Сообщ.
#4
,
|
|
|
Внешне конечно понятно, что ты имел в виду, но привычней, когда описывают язык с помощью НБФ или диаграм Вирта - с этой точки зрения - граматика описана не верно. Ответ на второй вопрос зависит от того, что именно тебе нужно сделать - просто изобразить алгоритм рекурсивного спуска для данной граматики или реализовать его програмно?
|