I fuck, you fuck

I fuck, you fuck is a pseudonatural esolang used for insulting others doing Project Euler problems. It is invented by User:None1.
It is case insensitive.
==Data Storage==
Variables with unbounded unsigned integers are used.
==Commands==
===Variable definition===
 There's a fucker named X
Define a variable named X, initially zero. The names You, me and I are reserved.
===Increment and decrement===
 I fuck X
Increment X.
 I unfuck X
Decrement X, if the result is less than zero, then result in zero.
===I/O===
 You fuck X
Get an integer from user input and store it into X.
 You fuck X again
Get a character from user input and store its ASCII into X.
 X fucks you
Output X as decimal.
 X fucks you again.
Output X as ASCII.
===Termination===
 Fuck you
Terminate the program.
===Arithmetic===
 X fucks Y
Add Y by X.
 X unfucks Y
Subtract Y by X, if the result is less than zero, result in zero.
 X fucks Y again
Multiply Y by X.
 X fucks Y over and over
Let Y be XY.
 X unfucks Y again
Let Y be the quotient of X/Y.
 X unfucks Y over and over
Let Y be the remainder of X/Y.
===Comment===
 Fuck! Any text
Is a comment, the space is MANDATORY.
===Control flow===
====While loop====
 while X is fucked
 CODE
 end fuck
While X is not zero, do CODE.
 while X is unfucked
 CODE
 end fuck
While X is zero, do CODE.
 while X is more fucked than the Y 
 CODE
 end fuck
While X is greater than Y, do CODE.
 while X is less fucked than the Y 
 CODE
 end fuck
While X is less than Y, do CODE.
====Conditonal statement====
It is like the while loop, just replace the while with if.
The if-else statement is allowed:
 Any if statement
 CODE1
 else fuck
 CODE2
 end fuck
For instance:
 If A is fucked
 A fucks you
 else fuck
 You fuck A
 end fuck
Assuming that the variable A is defined, this program outputs A if it is nonzero, otherwise, it reads A.
===Literals===
 Fuck X integer times
Add X by integer.
===String output===
 fuck "Base64 of any text"
Outputs the corresponding text without spaces or line feeds after it.
==Example programs==
===Hello World===
 fuck "SGVsbG8sIFdvcmxkIQ=="
===Project Euler===
====16====
There's a fucker named a
Fuck a 1000 times
There's a fucker named b
Fuck b 2 times
b fucks a over and over
b unfucks b
There's a fucker named c
while a is fucked
c unfucks c
Fuck c 10 times
a unfucks c over and over
c fucks b
c unfucks c
Fuck c 10 times
a unfucks c again
a unfucks a
c fucks a
end fuck
b fucks you
====20====
 There's a fucker named a
 There's a fucker named b
 Fuck b 100 times
 Fuck a 1 times
 while b is fucked
 b fucks a again
 I unfuck b
 end fuck
 There's a fucker named c
 while a is fucked
 c unfucks c
 Fuck c 10 times
 a unfucks c over and over
 c fucks b
 c unfucks c
 Fuck c 10 times
 a unfucks c again
 a unfucks a
 c fucks a
 end fuck
 b fucks you
===Truth Machine===
 There's a fucker named x
 You fuck x
 if x is fucked
 while x is fucked
 x fucks you
 end fuck
 else fuck
 x fucks you
 end fuck
===Cat Program===
 There's a fucker named x
 you fuck x again
 while x is fucked
 x fucks you again
 you fuck x again
 end fuck
==Intepreters==
Currently none. Here's a compiler in python to C:
#End with "fucker ends fucking", case insensitive
from base64 import b64decode as dc
lic=['#include<stdio.h>\n#define int unsigned long long\nsigned main(){\nint FUCK_YOU=0,FUCK_ME,i,you,me;']
def sw(x,y):return x[:len(y)]==y
def ew(x,y):return x[-len(y):]==y
def swl(x,y,z):return sw(x,y)and len(x)==len(y)+z
def ewl(x,y,z):return ew(x,y)and len(x)==len(y)+z
while True:
 _=input().casefold()
 if _==:continue
 if _=="fucker ends fucking":
 print('\n'.join(lic),end='\n}\n//Generated by automated IFUF->C python program')
 break
 cmds=_.split()
 if swl(cmds,['i','fuck'],1):lic.append(cmds[2]+'='+cmds[2]+'+1;')
 if swl(cmds,["there's","a",'fucker','named'],1):
 lic.append('int '+cmds[4]+'=0;')
 if swl(cmds,['i','unfuck'],1):
 lic.append('%s=%s-1;if(%s<0)%s=0;'%((cmds[2],)*4))
 if swl(cmds,['you','fuck'],1):
 lic.append('scanf("%lld",&'+cmds[2]+');')
 if swl(cmds,['you','fuck'],2)and cmds[3]=='again':
 lic.append(cmds[2]+'=getchar();')
 if ewl(cmds,['fucks','you'],1):
 lic.append('printf("%lld",'+cmds[0]+');')
 if ewl(cmds,['fucks','you','again'],1):
 lic.append('printf("%c",(char)('+cmds[0]+'%256));')
 if _=='fuck you':lic.append('return 0;')
 if len(cmds)==3 and cmds[1]=='fucks':
 lic.append('%s=%s+%s;'%(cmds[2],cmds[2],cmds[0]))
 if len(cmds)==3 and cmds[1]=='unfucks':
 lic.append('%s=%s-%s;if(%s<0)%s=0;'%(cmds[2],cmds[2],cmds[0],cmds[2],cmds[2]))
 if len(cmds)==4 and cmds[1]=='fucks'and cmds[3]=='again':
 lic.append('%s=%s*%s;'%(cmds[2],cmds[2],cmds[0]))
 if len(cmds)==4 and cmds[1]=='unfucks'and cmds[3]=='again':
 lic.append('%s=%s/%s;'%(cmds[2],cmds[2],cmds[0]))
 if cmds[1]=='unfucks'and ewl(cmds,['over','and','over'],3):
 lic.append('%s=%s%%%s;'%(cmds[2],cmds[2],cmds[0]))
 if cmds[1]=='fucks'and ewl(cmds,['over','and','over'],3):
 lic.append(FUCK_YOU=1;
for(FUCK_ME=1;FUCK_ME<%s;FUCK_ME++)FUCK_YOU=FUCK_YOU*%s;
%s=FUCK_YOU;%(cmds[2],cmds[0],cmds[2]))
 if cmds[0]=='fuck!':lic.append('//'+_[6:])
 if _=='end fuck':lic.append('}')
 if cmds[0]=='if'or cmds[0]=='while':
 if ewl(cmds,['is','fucked'],2):
 lic.append(cmds[0]+'('+cmds[1]+'){')
 if ewl(cmds,['is','unfucked'],2):
 lic.append(cmds[0]+'(!'+cmds[1]+'){')
 if ewl(cmds[:-1],'is more fucked than the'.split(),2):
 lic.append(cmds[0]+'('+cmds[1]+'>'+cmds[7]+'){')
 if ewl(cmds[:-1],'is less fucked than the'.split(),2):
 lic.append(cmds[0]+'('+cmds[1]+'<'+cmds[7]+'){')
 if _=='else fuck':lic.append('}else{')
 if len(cmds)==4 and cmds[0]=='fuck'and cmds[3]=='times':
 lic.append(cmds[1]+'='+cmds[1]+'+'+str(int(cmds[2]))+';')
 if len(cmds)==2 and cmds[0]=='fuck':
 __=cmds[1]
 if len(__)>2 and __[0]=='"'and __[-1]=='"':
 lic.append('printf("%s","'+dc(bytes(__[1:-1],'ascii')).decode('ascii')+'");')
Here is a more correct interpreter in C++, based on the compiler to C. It can compile all the examples correctly. You need this bignum package to compile the C++ code:
#End with "fucker ends fucking", case insensitive
from base64 import b64decode as dc
lic=['#include<iostream>\n#include"bn_cpp.h"\nusing std::cin;\nusing std::cout;\nint main(){\nbn_cpp::bn FUCK_YOU(0),FUCK_ME(0),i(0),you(0),me(0);\nchar _;']
def sw(x,y):return x[:len(y)]==y
def ew(x,y):return x[-len(y):]==y
def swl(x,y,z):return sw(x,y)and len(x)==len(y)+z
def ewl(x,y,z):return ew(x,y)and len(x)==len(y)+z
class FuckingError(Exception):
 pass
while True:
 fk=input()
 _=fk.casefold()
 if _==:continue
 if _=="fucker ends fucking":
 print('\n'.join(lic),end='\n}\n//Generated by automated IFUF->C++ python program')
 break
 cmds=_.split()
 if swl(cmds,['i','fuck'],1):
 lic.append(cmds[2]+'++')
 continue
 if swl(cmds,["there's","a",'fucker','named'],1):
 lic.append('bn_cpp::bn '+cmds[4]+'(0);')
 continue
 if swl(cmds,['i','unfuck'],1):
 lic.append('%s--;if(%s<bn_cpp::bn(0))%s=bn_cpp::bn(0);'%((cmds[2],)*3))
 continue
 if swl(cmds,['you','fuck'],1):
 lic.append('cin>>'+cmds[2]+';')
 continue
 if swl(cmds,['you','fuck'],2)and cmds[3]=='again':
 lic.append('_=getchar();'+cmds[2]+'=((~_)?_:0);')
 continue
 if ewl(cmds,['fucks','you'],1):
 lic.append('cout<<'+cmds[0]+"<<'\\n';")
 continue
 if ewl(cmds,['fucks','you','again'],1):
 lic.append('cout<<char('+cmds[0]+'.to_int()&255);')
 continue
 if _=='fuck you':
 lic.append('return 0;')
 continue
 if len(cmds)==3 and cmds[1]=='fucks':
 lic.append('%s=%s+%s;'%(cmds[2],cmds[2],cmds[0]))
 continue
 if len(cmds)==3 and cmds[1]=='unfucks':
 lic.append('%s=%s-%s;if(%s<bn_cpp::bn(0))%s=bn_cpp::bn(0);'%(cmds[2],cmds[2],cmds[0],cmds[2],cmds[2]))
 continue
 if len(cmds)==4 and cmds[1]=='fucks'and cmds[3]=='again':
 lic.append('%s=%s*%s;'%(cmds[2],cmds[2],cmds[0]))
 continue
 if len(cmds)==4 and cmds[1]=='unfucks'and cmds[3]=='again':
 lic.append('%s=%s/%s;'%(cmds[2],cmds[0],cmds[2]))
 continue
 if cmds[1]=='unfucks'and ewl(cmds,['over','and','over'],3):
 lic.append('%s=%s%%%s;'%(cmds[2],cmds[0],cmds[2]))
 continue
 if cmds[1]=='fucks'and ewl(cmds,['over','and','over'],3):
 lic.append(FUCK_YOU=bn_cpp::bn(1);
for(FUCK_ME=bn_cpp::bn(0);FUCK_ME<%s;FUCK_ME++)FUCK_YOU=FUCK_YOU*%s;
%s=FUCK_YOU;%(cmds[2],cmds[0],cmds[2]))
 continue
 if cmds[0]=='fuck!':
 lic.append('//'+_[6:])
 continue
 if _=='end fuck':
 lic.append('}')
 continue
 if cmds[0]=='if'or cmds[0]=='while':
 if ewl(cmds,['is','fucked'],2):
 lic.append(cmds[0]+'('+cmds[1]+'.to_bool()){')
 continue
 if ewl(cmds,['is','unfucked'],2):
 lic.append(cmds[0]+'(!'+cmds[1]+'.to_bool()){')
 continue
 if ewl(cmds[:-1],'is more fucked than the'.split(),2):
 lic.append(cmds[0]+'('+cmds[1]+'>'+cmds[7]+'){')
 continue
 if ewl(cmds[:-1],'is less fucked than the'.split(),2):
 lic.append(cmds[0]+'('+cmds[1]+'<'+cmds[7]+'){')
 continue
 if _=='else fuck':
 lic.append('}else{')
 continue
 if len(cmds)==4 and cmds[0]=='fuck'and cmds[3]=='times':
 lic.append(cmds[1]+'='+cmds[1]+'+bn_cpp::bn('+str(int(cmds[2]))+');')
 continue
 if len(cmds)==2 and cmds[0]=='fuck':
 __=fk.split()[1]
 if len(__)>2 and __[0]=='"'and __[-1]=='"':
 for i in dc(bytes(__[1:-1],'ascii')):
 lic.append(f'cout<<char({i});')
 continue
 raise FuckingError('What The Fuck!')
Category:Languages
Category:Implemented
Category:Turing complete
Category:Pseudonatural
Category:2023