С предыдущей проблемой так и не смог разобраться, думаю пока чем проще тем лучше, а потом уже все отшлифую т.е. вопрос закрыт.
Как и обещал, вот исходники
AIL
http://www.sendspace.com/file/id2vsq, готово след.:
Лексер и парсер - который парсит используя ebnf грамматику, которая прилагается в архиве-это скорее-всего финальная версия, т.е. синтаксис интерпретатора будет(опять-же скорее-всего) основан на этой грамматике.
Конечно, дохрена чего не оптимизировано + не везде комментарии расставлены, но это исправится со временем.
Любая критика и поправки приветствуются!
Например если записать в code.txt след.
Сообщение от
code
def main (argc, argv[]) {
print('Hello World!');
return 0;
}
то на выходе получим
Сообщение от
parser_output
func_def
func_body
return
return_expr
const_number
0
func_call_expr
arg_expr
const_string
Hello World!
name
print
params_expr
param_expr
array_subscript_expr
name
argv
param_expr
name
argc
name
main
затем из всего этого(постфиксная запись) создается(пока ещё не реализовано) абстрактное синтаксическое дерево, которое будет выглядеть вот так
Осталось доделать:
семантический анализатор, модуль исполнения кода.
з.ы. Модераторам - можно-ли переименовать тему на "Создание интерпретатора AIL"?