2
Vote

Antlr Parser

description

Нам нужен парсер, который разбирает входной файл и строит по нему AST. Я попробую сам набросать что-то на регулярных выражениях. Тебе же предлагаю серьезно покурить Antlr и написать клевенький парсер ))
 
Для первой версии желательно:
 
1) присваивание переменным значений выражений (пока только числа, можно даже только int)
2) Разбор самих выражений (опять же, как получится, со скобками/без - пофигу)
3) Объявление функций (пускай их объявляем в начале кода, то что после объявлений - функция main)
4) Вызов Функций
5) Функция print <переменная>
6) Выравнивание обязательно, пробелы не игнорируются (т.е. тело функции не в фигурных скобках, а выровнено на 2 пробела)
 
пример программы:
 
def sqr(a)
..b = aa
..return b
def sum3(a1,a2,a3)
..return a1+a2+a3
 
s = 5
k = 2
3+s
result = sqr(k) + sum3(s,s,s)
print result
 
из этого должно получится Ast вроде такого
ProgramDef
....->FuncDef(sqr)
....->FuncDef(s3)
....->FuncDef(main)
........->CodeBlock
............->Assignment(s,5)
............->Assignment(k,2*3 + s)
...
............->FuncCall(print)
 
FuncDef, выражения и т.д. тоже должны разворачиваться в узлы
 
В общем, удачи

comments