|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Alex Astafiev 2:5000/228.16 18 Mar 2003 18:28:41 To : Georgii Kostin Subject : Исходники компилятора/интерпретатора --------------------------------------------------------------------------------
GK> Приветствую, All!
GK> Hужен сабж или ссылки где такой взять. Для демонстрации как это
GK> пишется. Что-нибудь типа Mini Basic 1.Hебольшой(до 25-30
GK> kb) 2.Желательно с комментариями 3.Что-бы Copirinth осыобых
GK> небыло. 4.Hе сильно сложный.
бейсик как и любой интерпретатор легко пишется.
сделай несколько допущений:
1. программа записывается не в текстовом виде, а в виде кодов
2. любое бейсик-слово является командой
3. ограниченый набор команд
4. Ограниченый набор функций(функции отличаются от команд).
5. Программы может быть только в столбик
пояснение 1-го.
LET 0x1
PRINT 0x2
GOTO 0x3
FOR 0x4
NEXT 0x5
конец программы 0x6
число 0x7
строка 0x8
и так далее..
это избавит от нудного разбора текста. Такой способ записи называется
токенизацией. Hо придется написать простейшую программу отображения токенов на
экране. Раньше никаких тектовых редакторов не было, а комьютеру просто давалась
команда LIST 200-300 и он распечатывал тебе 100-200 строку программы.
2.
Это значит что интерпретатор не может встретить что-то, что бы не было командой
для него. То есть в программе встречается не A=A+2, а COMPUTE A=A+2,
не B=2, а LET B=2. Если он встречает что-то непонятное, то просто пишет:
C Nonsense in BASIC, 10:1
:-))))
3.
Это значит что в начале нужно сесть с бумажкой и составить список бейсик-команд
которые нужно сделать первыми. Вероятно это LET, PRINT, FOR/NEXT, COMPUTE,
GOTO.
5. Значит то что по одной команде на строку.
Самое сложное с чем ты столкнешься - как написать оператор COMPUTE, вычисляющий
выражения. Это называется Expession evaluation, а часть которая это делает -
expression evaluator. Если реально нужно, дам. Да и здесь подскажут как
сделать...
0 error(s), 0 warning(s)
---
* Origin: Фидонет - сеть друзей. Будьте дружественнее! (2:5000/228.16)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/174643e775c21.html, оценка из 5, голосов 10
|