Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/grafovdenis/SmallBasic_Interpreter
Low level programming coursework
https://github.com/grafovdenis/SmallBasic_Interpreter
Last synced: 3 months ago
JSON representation
Low level programming coursework
- Host: GitHub
- URL: https://github.com/grafovdenis/SmallBasic_Interpreter
- Owner: grafovdenis
- Created: 2018-05-24T20:13:00.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2018-10-03T20:56:08.000Z (over 6 years ago)
- Last Synced: 2024-04-24T15:34:49.871Z (10 months ago)
- Language: C
- Size: 2.44 MB
- Stars: 3
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- AwesomeInterpreter - SmallBasic_Interpreter
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)