![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#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;
|
|
|
![]()
Сообщение
#2
|
|
![]() Geoff Snock | 茶スノック Сообщений: 533 Спасибо сказали: 248 раз ![]() |
И что вас сподвигло на создание данного яп и этой темы?
-------------------- гномов сопротивляются заклинанию!
Цитата Фейспалмы свои себе в сракотан засуньте, если больше сказать нечего. |
|
|
![]()
Сообщение
#3
|
|
![]() Etoprostostatus Сообщений: 8 569 Спасибо сказали: 15932 раза ![]() |
Захотел - создал. Некоторым бОльшего и не надо.
-------------------- - Да ну!?
- Horn of the Argali гну! |
|
|
![]()
Сообщение
#4
|
|
Immortal Сообщений: 2 149 Спасибо сказали: 697 раз ![]() |
С моей, экономической точки зрения, любая вещь или творение оправдывают свое создание, если общие или предельные выгоды превышают издержки на их создание. Даже если источник этой выгоды - самоудовлетворение.
|
|
|
![]()
Сообщение
#5
|
|
![]() 🐓🐓🐓🐓🐓🐓🐓 Сообщений: 1 845 Спасибо сказали: 1570 раз ![]() |
Обновил. Впринципе, на нем уже можно реализовывать длинную арифметику
![]() Первый пост лень обновлять. -------------------- using namespace fbx;
|
|
|
![]()
Сообщение
#6
|
|
![]() Immortal Сообщений: 1 468 Спасибо сказали: 1153 раза ![]() |
Алеее. Экономика тебя портит. Издержки, выгоды...
Кстати, ты даже курсач как книгу написал. В повествовательном стиле ) В отношении человека нет понятия достоверной оценки выгоды и издержек. Фактически, сама оценка колеблется в любую сторону, в зависимости от текущей позиции оценивания. Ну и если уж приплетать бредоэкономику с её суперабстрактными моделями, которые вечно обламываются о реальность и психологию, то тогда нужно судить об альтернативной выгоде, которую автор, скорее всего упустил, взявшись за очередную бесполезную эзотерику. -------------------- |
|
|
![]()
Сообщение
#7
|
|
![]() 😸🧡✊✌️ Сообщений: 16 368 Спасибо сказали: 3187 раз ![]() |
Упущенная выгода относится к издержкам, не?
-------------------- Я слежу за тобой!
![]() ![]() Цитата Всегда приятно осознавать, что кто-то делает что-то хуже, чем делал бы ты, если бы умел. Борис "Бонус" Репетур, "От винта!", выпуск 38. |
|
|
![]()
Сообщение
#8
|
|
Immortal Сообщений: 2 149 Спасибо сказали: 697 раз ![]() |
Так вот кто там оставляет отзывы о моем курсаче
![]() Мы то с вами знаем, коллега, что если оценивать наборы благ (а значит и выгод) в количественных единицах индивиды навряд ли могут, то сравнивать между собой - вполне. Поэтому если мы станем отталкиваться от полезности в ее широком, общественном смысле - то очевидно, что автор впустую потратил ресурсы. А если в узком - личностном, как все то, что способствует удовлетворению потребностей, - вполне возможно, что это занятие окажется весьма полезным. Я не утверждаю, что был выбран наилучший способ размещения ресурсов, я просто говорю, что польза - она разная бывает. И не все то, что кажется бесполезным с обывательской точки зрения, является бесполезным на деле. FBX, оченно извинияюся за превращение темы в полигон псевдонаучных дебатов. |
|
|
![]() ![]()
Сообщение
#9
|
|
![]() 🐓🐓🐓🐓🐓🐓🐓 Сообщений: 1 845 Спасибо сказали: 1570 раз ![]() |
А все из-за того, что польза от этого проекта неочевидна.
Ну да и фиг с ней. Проще надо как-то относиться. SQL @delete; = 's',?'0';,(); //save A (LOCAL) =,(.(??'s';;),(?'1';),(?'2';));); = (?'s';), (. (??'s';;),'1',(% (?'1';),'-','1';);) (. (??'s';;),(% (?'1';),'+',(?'2';);),(.??'s';;;);) ; =; //delete locals Вот то же самое на псевдо-коде: 1) {create always} s = get_value (arg(0)) 2) result = copy ( get_value ( get_value (s)), arg(1), arg (2) ) 3) get_value (s) = copy (get_value (get_value (s)), 1, get_value(1) - 1) + copy (get_value (get_value (s)), arg(1) + arg(2) , str_len (get_value (get_value (s))) ) 4) delete local variables -------------------- using namespace fbx;
|
|
|
![]()
Сообщение
#10
|
|
![]() Immortal Сообщений: 1 468 Спасибо сказали: 1153 раза ![]() |
Цитата Так вот кто там оставляет отзывы о моем курсаче Внимательно читал. У тебя литературный талант. Вместо шняги простой и понятный текст, умеренно изобилующий англицкими терминами ) Хотя про развитую демократичную страну Беларусь был явный загиб. Но плюс за то, что применена математика, в частности, корреляционный анализ. Цитата я просто говорю, что польза - она разная бывает В целом да, интерпритаторы - это хорошо, но когда они не брейнфаковские ( -------------------- |
|
|
![]()
Сообщение
#11
|
|
![]() 🐓🐓🐓🐓🐓🐓🐓 Сообщений: 1 845 Спасибо сказали: 1570 раз ![]() |
Доработал малость, исправил ошибки.
В модулях реализованы некоторые функции: long_add (длинное сложение) long_sub (длинное вычитание с дополнением) long_mul (длинное умножение на число до 2^63) long_fac (длинный факториал) fac (обычный факториал) delete, insert для работы со строками inc, dec (увеличить/уменьшить) div (разделить нацело с остатком) loop, loop_down (циклы) -------------------- using namespace fbx;
|
|
|
![]()
Сообщение
#12
|
|
![]() Яблочный произвол! Сообщений: 11 080 Спасибо сказали: 3988 раз ![]() |
|
|
|
![]()
Сообщение
#13
|
|
![]() 🐓🐓🐓🐓🐓🐓🐓 Сообщений: 1 845 Спасибо сказали: 1570 раз ![]() |
Это умножение длинного числа на короткое
-------------------- using namespace fbx;
|
|
|
![]()
Сообщение
#14
|
|
![]() Etoprostostatus Сообщений: 8 569 Спасибо сказали: 15932 раза ![]() |
А что, умножение длинного на длинное не организуешь?
![]() -------------------- - Да ну!?
- Horn of the Argali гну! |
|
|
![]()
Сообщение
#15
|
|
![]() 🐓🐓🐓🐓🐓🐓🐓 Сообщений: 1 845 Спасибо сказали: 1570 раз ![]() |
Да лень что-то...
-------------------- using namespace fbx;
|
|
|
![]()
Сообщение
#16
|
|
![]() Яблочный произвол! Сообщений: 11 080 Спасибо сказали: 3988 раз ![]() |
и какое диапазон чисел можно поместить в твои длинные числа?
|
|
|
![]()
Сообщение
#17
|
|
![]() 🐓🐓🐓🐓🐓🐓🐓 Сообщений: 1 845 Спасибо сказали: 1570 раз ![]() |
любой, насколько памяти хватит..
666! вычисляется 30 секунд, пичаль. -------------------- using namespace fbx;
|
|
|
![]() ![]() |
Текстовая версия | Сейчас: 30 June 2025 - 19:18 |
Copyright by Алексей Крючков
![]() Programming by Degtyarev Dmitry |
|