интерпретатор программного кода (на C++)
Добавлено: 06 май 2017, 10:01
Вот такая вот учебная, но отнюдь не простая задачка: написать на C++ интерпретатор программных кодов, написанных на максимально упрощённом C-подобном языке.
Такая задача куда проще решалась бы на ... скажем, Python ... или Lisp, Ocaml и т.д.
Но задача стоит именно C++ - "мы не ищем лёгких путей".
Относительно "максимально упрощённого C-подобного языка"? - здесь каждый может сам сузить до интуитивно понятного минимуму...
Но, как минимум, в таком языке должны допускаться:
- типы данных ... как минимум, скажем, int и string ...
- именованные и типизированные переменные...
- операции ... и по разному толкуемые для разных типов: + - это сложение для int и конкатенация для string
- выражения, с произвольной глубиной скобочной записи
- функции ... как минимум read( x ) - ввода данных и write( x, y, z ) - вывода списка данных
- метки и оператор goto
- что-то типа if ... then ... else
- что-то из циклов
Обязательная часть такого интерпретатора - вычисление выражений - уже начала описываться раньше в отдельной теме обратная польская запись.
Такая задача куда проще решалась бы на ... скажем, Python ... или Lisp, Ocaml и т.д.
Но задача стоит именно C++ - "мы не ищем лёгких путей".
Относительно "максимально упрощённого C-подобного языка"? - здесь каждый может сам сузить до интуитивно понятного минимуму...
Но, как минимум, в таком языке должны допускаться:
- типы данных ... как минимум, скажем, int и string ...
- именованные и типизированные переменные...
- операции ... и по разному толкуемые для разных типов: + - это сложение для int и конкатенация для string
- выражения, с произвольной глубиной скобочной записи
- функции ... как минимум read( x ) - ввода данных и write( x, y, z ) - вывода списка данных
- метки и оператор goto
- что-то типа if ... then ... else
- что-то из циклов
Обязательная часть такого интерпретатора - вычисление выражений - уже начала описываться раньше в отдельной теме обратная польская запись.