- 001
- 002
- 003
- 004
- 005
- 006
- 007
- 008
- 009
- 010
- 011
- 012
- 013
- 014
- 015
- 016
- 017
- 018
- 019
- 020
- 021
- 022
- 023
- 024
- 025
- 026
- 027
- 028
- 029
- 030
- 031
- 032
- 033
- 034
- 035
- 036
- 037
- 038
- 039
- 040
- 041
- 042
- 043
- 044
- 045
- 046
- 047
- 048
- 049
- 050
- 051
- 052
- 053
- 054
- 055
- 056
- 057
- 058
- 059
- 060
- 061
- 062
- 063
- 064
- 065
- 066
- 067
- 068
- 069
- 070
- 071
- 072
- 073
- 074
- 075
- 076
- 077
- 078
- 079
- 080
- 081
- 082
- 083
- 084
- 085
- 086
- 087
- 088
- 089
- 090
- 091
- 092
- 093
- 094
- 095
- 096
- 097
- 098
- 099
- 100
#include <stdio.h>
#include <stdlib.h>
#define RW(a, c) for(src = (a);src < (c); src++, dst++){*dst=*src;}
void *pairscan(char *p)
{
size_t p_count = 1;
do {
if(*p == 'P') {
p_count++;
}
else {
p_count--;
}
p++;
} while(p_count != 0);
return p;
}
void rewrite(char *src, char *dst)
{
int p_r = 0;
while(*src == 'P') {
*dst = *src;
src++; dst++;
if (p_r < 3)
{
p_r++;
}
}
if(*src == 'I') {
if(p_r < 1) {
while(*src != 0) {
*dst = *src;
src++; dst++;
}
*dst = 0;
return;
}
dst--;
src++;
//src = pairscan(src+1);
while(*src != 0) {
*dst = *src;
src++; dst++;
}
*dst = 0;
return;
}
if(*src == 'K') {
if(p_r < 2)
{
while(*src != 0) {
*dst = *src;
src++; dst++;
}
*dst = 0;
return;
}
dst-=2;
char *exp1 = pairscan(src+1);
char *exp2 = pairscan(exp1);
RW(src+1,exp1);
for(; src < exp2; src++){}
while(*src != 0) {
*dst = *src;
src++; dst++;
}
*dst = 0;
return;
}
if(*src == 'S') {
if(p_r < 3) {
while(*src != 0){
*dst = *src;
src++; dst++;
}
*dst = 0;
return;
}
dst-=1;
char *exp1 = pairscan(src+1);
char *exp2 = pairscan(exp1);
char *exp3 = pairscan(exp2);
RW(src+1,exp1);
RW(exp2,exp3);
*dst = 'P';
dst++;
RW(exp1,exp2);
RW(exp2,exp3);
while(*src != 0) {
*dst = *src;
src++; dst++;
}
*dst = 0;
return;
}
*dst = 0;
return;
}
j123123 11.05.2021 23:20 # 0
Там описывается через какие-то скобочки, ну типа там вот
Ix => x
Kxy = ((K x) y) => x
Sxyz = (((S x) y) z) => xz(yz)
Но это вообще питушня какая-то. Вместо скобочек можно использовать P.
PIx = Ix
PPKxy = Kxy
PPPSxyz = Sxyz
где x y z это типа хрень или P хрень хрень
Так что можно подобную питушню эффективно свести к тупому переписыванию текстушни
и никакие скобочки нахрен не всрались
https://wandbox.org/permlink/JEV7GQ5jF4HUMBvp
j123123 11.05.2021 23:40 # 0
j123123 11.05.2021 23:43 # 0
CHayT 11.05.2021 23:51 # 0
j123123 11.05.2021 23:53 # 0
CHayT 11.05.2021 23:55 # 0
> В ней вместо P используется ` на конце. Её через стек легко реализовать, кстати.
Тьфу, перепутал со своим диалектом.
CHayT 11.05.2021 23:57 # 0
CHayT 12.05.2021 01:04 # 0
Потому что в SKI должно быть можно нясоздавать бесконечно большие термы.
Возьмём такой терм: PPPSIIPPSII. Он эквивалентен ((λ x. x x) (λ x. x x)). Его кобеняция ня должна завершаться никогда, и для неё нужно бесконячно много памяти, так как он себя бесконячно реплицирует. А твоя прога завершается.
j123123 12.05.2021 01:12 # 0
Подожду когда разработают астральный компьютер с бесконечной памятью.
CHayT 12.05.2021 01:20 # 0
j123123 12.05.2021 01:35 # 0
Поскольку питуля может разрастаться только в кобенаторе S, я добавил проверки исключительно в него.
Хотя конечно можно и получше заоптимизировать.
j123123 12.05.2021 01:40 # 0
j123123 12.05.2021 01:44 # 0
j123123 12.05.2021 05:13 # 0
bormand 12.05.2021 08:27 # 0
j123123 12.05.2021 09:00 # 0
Был же тут какой-то еблан в свое время, носился с каким-то своим сраным WCT, нахуя кому оно было нужно?
j123123 12.05.2021 09:38 # 0
bormand 12.05.2021 11:02 # 0
CHayT 12.05.2021 10:47 # 0
j123123 12.05.2021 11:10 # 0
j123123 12.05.2021 11:16 # 0
bormand 12.05.2021 12:32 # 0
CHayT 12.05.2021 11:18 # +5
bormand 12.05.2021 12:33 # +3
j123123 12.05.2021 20:26 # 0
MAKAKA 12.05.2021 20:32 # +1
Хорошо, что я знаю так много хуёвых языков, на фоне которых С++ выглядит отлично
j123123 12.05.2021 20:35 # 0
MAKAKA 12.05.2021 20:38 # 0
PolinaAksenova 12.05.2021 20:40 # 0
MAKAKA 12.05.2021 20:44 # 0
тогда придется разделить шаблоны на два сорта
* препроцессорные (которые высирают AST)
* постпроцессорные (которые уже с AST работают)
j123123 12.05.2021 20:47 # 0
Валидна или не валидна программа вначале - вообще пофиг. После метушения разберемся.
MAKAKA 12.05.2021 20:48 # 0
PolinaAksenova 12.05.2021 20:48 # 0
j123123 12.05.2021 20:43 # 0
MAKAKA 12.05.2021 20:44 # 0
можно ли так?
https://govnokod.ru/27420#comment627054