нужно написать анализатор языка Modula-2 для строк типа:
FOR<параметр>:=<начальные значения>TO<конечные значения>[BY<шаг>]DO
<параметр> :: = <идентификатор>|<идентификатор>[<список индексов>]
<список индексов> :: = <индекс>|<список индексов>,<индекс>
<индекс> :: = <идентификатор>|<константа целая>
<начальные значения> :: = <константа целая>
<конечные значения> :: = <константа целая>
<шаг> :: = <константа целая>
на чем будет написать проще: С++ или ТР, учитывая знание С++ в объеме лекций за 1 семестр (закончили на шаблонах)? И как реализовать в общих чертах этот анализатор?
16 декабря 2008 в 20:01
2 Артем
прости мне мою неграмотность, но я действительно не пойму о чем ты… объясни, что такое Flex или Yacc…
16 декабря 2008 в 13:04
2 Александр
В смысле "не прав"? Тебе, значиццо, надо реализовать лексический и синтаксический анализ (для вон того подмножества грамматики) — а синтаксический анализ как раз строит синтаксическое дерево. В этом тебе помогут Flex/Yacc (или их аналоги, тысячи их!).
15 декабря 2008 в 23:03
2 Артем
не, ты немного не прав… мне ужно написать программу-анализатор, если быть точным, которая говорит о введенной строке, правильно или нет она введена и где какие ошибки… извини, что не уточнил сразу… а то я даж таких слов-то не знаю…Flex, Yacc, (E)BNF…)))
15 декабря 2008 в 15:05
//ru.wikipedia.org/wiki/%D0%A4%D0%BE%D1%80%D0%B...
//ru.wikipedia.org/wiki/%D0%A0%D0%B0%D1%81%D1%8...
15 декабря 2008 в 6:05
Тебе нужно разобраться с (E)BNF, регулярными выражениями, Flex и Yacc.
Собсно, потом придется разбираться с тем, как работает компилятор. Тебе нужно из строки построить AST, по всей видимости.