Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/grafovdenis/SmallBasic_Interpreter

Low level programming coursework
https://github.com/grafovdenis/SmallBasic_Interpreter

Last synced: about 2 months ago
JSON representation

Low level programming coursework

Awesome Lists containing this project

README

        

# Техническое задание
## Интерпретатор BASIC
### Задача: реализовать интерпретатор диалекта BASIC (Small BASIC)
### Минимальные требования:
* целочисленные переменные;
* инфиксные выражения с “+”, “-“, “*”, “/”, скобками;
* операторы сравнения “<”, “<=”, “=”, “<>”, “>=”, “>”;
* операторы TextWindow.Write(), TextWindow.Read(), If, GoTo, Sub.
#### Интерпретатор Small BASIC должен уметь построчно анализировать, обрабатывать и выполнять исходный код программы или запроса.
### Алгоритм работы интерпретатора:
1) прочитать инструкцию;
2) проанализировать инструкцию и определить соответствующие действия;
3) выполнить соответствующие действия;
4) если не достигнуто условие завершения программы, прочитать следующую инструкцию и перейти к пункту 2.
#### Для выполнения пункта 2 необходимо будет создать синтаксический анализатор выражений, который будет разбивать исходное выражение на составные части, компоненты (неделимые элементы выражения – лексемы).
### Функция, разбивающая выражение на составные части, должна решать несколько задач:
1) игнорировать пробелы и символы табуляции;
2) извлекать каждую лексему из текста;
3) определять тип лексемы.
#### Анализатор будет использовать шесть типов лексем: DELIMITER, VARIABLE, NUMBER, COMMAND, STRING, MARK (разделитель, переменная, число, команда, строка, метка).
#### Также при создании интерпретатора нужно будет учитывать все особенности и грамматику языка Small BASIC. Например, все числа – целые (integers: -32767...32767).
#### Формат входных данных: .sb.
#### C документацией языка SmallBasic можно ознакомиться [тут](https://github.com/grafovdenis/SmallBasic_Interpreter/blob/master/Introducing%20Small%20Basic.pdf)