IPB

Здравствуйте, гость ( Вход | Регистрация )

> TextFuck by FBX, Бредовый язык программирования
FBX
сообщение 05 Jan 2011, 03:13 (Сообщение отредактировал FBX - 07 Jan 2011, 23:13)
Сообщение #1

🐓🐓🐓🐓🐓🐓🐓
Сообщений: 1 845
Спасибо сказали: 1570 раз




Вот делать мне нечего, решил наваять. Я даже не знаю, на что это похоже.
http://mutnosoft.ru/d/textfuck.rar

Основа языка - строки и односимвольные функции.
Инструкция состоит из 1 символа (оператора), аргументов - строк, перечисленных через запятую, и точки с запятой в конце.
Переменные тоже строки. За основу для строк взят делфовский AnsiString - динамические строки неограниченной длины.

Интерпретатор работает в том числе и из командной строки. Справка в исходном коде:

CODE

//интерпретатор нехитрого языка
//язык состоит из односимвольных операторов, и текстовых параметров через ''
//все остальные символы игнорируются
//запись: # '','', ... ,'';
// 'abc''def' означает строку abc'def
//если оператор требует несколько входных значений, они записываются через ,
//точка с запятой финализирует запись
//операторы являются по сути функциями, и их результат такой же текстовый
//строки в аргументе конкатенируются при последовательной записи
//можно указывать голый текст и вызов функций
//пример записи вложенного вызова: # 'abc',(# 'fff','321','333';);
//скобки изначально игнорируются интерпретатором и служат для наглядности

//операторы можно перегружать на вызов функции с определенным именем
//перегрузить можно любой из 256 символов

//@ - символ разметки функций в модуле
// # func, ? , ... , ? ; - вызов функции func , далее идут аргументы
// = var, value; - присвоение переменной var значения value (результат = value)
//(все переменные текстовые) (если переменной нет, она создается)
//извлечение из ? номера перем. - цифры означает обращение к аргументу функции
//нумерация аргументов - с нуля, результат сохраняется в нулевой
//единственный способ записать результат: =,result; - первый аргумент пустой
// = var; - уничтожение переменной (либо ничего, если ее нет)
// =; - очистка локальных переменных функции
// при вызове функции число переменных сохраняется, все переменные, что были
// созданы под номерами выше этого числа, уничтожаются
// самоочистки не происходит!
// = var, value, ; - создать переменную даже если такая уже существует
// \ text; - вывод на экран текста text
// ^; - получить результат ввода
// ? var; - извлечение значения переменной var
// ?; - извлечь код текущей функции
// ?'0'; ?'1'; и т.д. - извлечь аргумент функции (возвр. пуст.стр. если его нет)
// ?'-1'; - извлечь количество аргументов функции (любое отрицательное число)
// ? func,(); - извлечь код функции
// ! op,func; - переопределить op[1] на функцию func (возвращает бывшую функцию)
// ! op; - обнулить переопределение (возвращает бывшую функцию)
// $ name; - загрузить функции модуля name и выполнить его код, если он есть
// в модуле сначала идет код, потом @funcname1; @funcname2; и т.д. (разметка)
// ~ func, code; - создать или перезаписать код функции
// ~ func; - уничтожение функции (либо ничего, если ее нет)
// | code; - запускает код, указанный в code
// | str, code; - если строка не пустая, запускает code
// | str1, str2, code; - если str1 равно str2, запускается code
// | str1, str2, code, else; - то же самое, но else запускается если не равны
// _; - ничего не делает
// _ str; - если строка не пустая, прерывает функцию
// _ str1, str2; - если строки равны, прерывает функцию
// _ str1, str2, ; - если строки не равны, прерывает функцию
// /; - возвращает перевод строки
// / num; - возвращает символ с кодом num (по модулю 256)
// / str,count; - возвращает str, повторяющийся count раз
// / str,pos,char; - возвращает str, в котором символ pos заменен на char
// : symb; - возвращает код символа
// : sub, str; - возвращает позицию подстроки в строке (0 если нет)

// * o, args, ... , args; - тут будут системные функции
// & o, args, ... , args; - тут будут вещественные функции
// . str; - возвращает длину строки
// . str,pos; - возвращает символ с номером pos (нумерация с единицы)
// . str,pos,len; - возвращает подстроку начиная с pos длины len
// 0; 1; ... 9; - извлечь значение строковых "регистров"
// 0,value; 1,value; ... 9,value; - изменить значение строковых "регистров"

// > cond, str, code; - цикл с предусловием:
// пока (результат выполнения cond) не равен (str), выполнять code
// < cond, str, code; - цикл с послеусловием:
// выполнять code, если (результат выполнения cond) = (str), выйти

// не использованы: [, ], +, -

// целочисленные (работают через 64bit signed):
// % a,'+',b; - сложение
// % a,'-',b; - вычитание
// % a,'*',b; - умножение
// % a,'/',b; - целочисленное деление
// % a,'%',b; - остаток от деления
// % a,'&',b; - логическое и
// % a,'|',b; - логическое или
// % a,'^',b; - исключающее или
// % a,'\',b; - исключающее или (синоним)
// % a,'>>',b; - битовый сдвиг вправо
// % a,'<<',b; - битовый сдвиг влево
// % a,'>',b; - проверка (если больше, то возвращает '1', иначе '0')
// % a,'>=',b;
// % a,'<',b;
// % a,'<=',b;
// % a,'<>',b;
// % a,'><',b;


--------------------
using namespace fbx;


Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post

Сообщений в этой теме
- FBX   TextFuck by FBX   05 Jan 2011, 03:13
- - ChASnock   И что вас сподвигло на создание данного яп и этой ...   05 Jan 2011, 12:37
- - etoprostoya   Захотел - создал. Некоторым бОльшего и не надо.   05 Jan 2011, 14:53
- - Aleee   С моей, экономической точки зрения, любая вещь или...   05 Jan 2011, 15:06
- - FBX   Обновил. Впринципе, на нем уже можно реализовывать...   05 Jan 2011, 16:19
- - Berserker   Алеее. Экономика тебя портит. Издержки, выгоды... ...   06 Jan 2011, 11:08
- - tolich   Упущенная выгода относится к издержкам, не?   06 Jan 2011, 11:18
- - Aleee   Так вот кто там оставляет отзывы о моем курсаче ...   06 Jan 2011, 12:14
- - FBX   А все из-за того, что польза от этого проекта неоч...   06 Jan 2011, 13:21
- - Berserker   ЦитатаТак вот кто там оставляет отзывы о моем курс...   06 Jan 2011, 17:04
- - FBX   Доработал малость, исправил ошибки. В модулях реал...   07 Jan 2011, 23:17
|- - gamecreator   Цитата(FBX @ 07 Jan 2011, 23:17) на число...   08 Jan 2011, 13:49
- - FBX   Это умножение длинного числа на короткое   08 Jan 2011, 20:21
- - etoprostoya   А что, умножение длинного на длинное не организуеш...   08 Jan 2011, 20:36
- - FBX   Да лень что-то...   08 Jan 2011, 21:39
- - gamecreator   и какое диапазон чисел можно поместить в твои длин...   08 Jan 2011, 23:34
- - FBX   любой, насколько памяти хватит.. 666! вычисля...   09 Jan 2011, 00:41


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 11 January 2026 - 03:02
Copyright by Алексей Крючков
Strategy Gamez by GrayMage
Programming by Degtyarev Dmitry
  Яндекс.Метрика