Awesome
Техническое задание
Интерпретатор BASIC
Задача: реализовать интерпретатор диалекта BASIC (Small BASIC)
Минимальные требования:
- целочисленные переменные;
- инфиксные выражения с “+”, “-“, “*”, “/”, скобками;
- операторы сравнения “<”, “<=”, “=”, “<>”, “>=”, “>”;
- операторы TextWindow.Write(), TextWindow.Read(), If, GoTo, Sub.
Интерпретатор Small BASIC должен уметь построчно анализировать, обрабатывать и выполнять исходный код программы или запроса.
Алгоритм работы интерпретатора:
- прочитать инструкцию;
- проанализировать инструкцию и определить соответствующие действия;
- выполнить соответствующие действия;
- если не достигнуто условие завершения программы, прочитать следующую инструкцию и перейти к пункту 2.
Для выполнения пункта 2 необходимо будет создать синтаксический анализатор выражений, который будет разбивать исходное выражение на составные части, компоненты (неделимые элементы выражения – лексемы).
Функция, разбивающая выражение на составные части, должна решать несколько задач:
- игнорировать пробелы и символы табуляции;
- извлекать каждую лексему из текста;
- определять тип лексемы.
Анализатор будет использовать шесть типов лексем: DELIMITER, VARIABLE, NUMBER, COMMAND, STRING, MARK (разделитель, переменная, число, команда, строка, метка).
Также при создании интерпретатора нужно будет учитывать все особенности и грамматику языка Small BASIC. Например, все числа – целые (integers: -32767...32767).
Формат входных данных: .sb.
C документацией языка SmallBasic можно ознакомиться тут