SA-MP Forums Archive
[Plugin] Brainfuck Interpreter - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Plugin Development (https://sampforum.blast.hk/forumdisplay.php?fid=18)
+--- Thread: [Plugin] Brainfuck Interpreter (/showthread.php?tid=561259)



Brainfuck Interpreter - Zume - 02.02.2015

Brainfuck Interpreter

INFORMATION
It is a plugin to interpret codes esoteric programming language BrainFuck in PAWN in a simple way.

Quote:

The language is based on a simple execution model consisting, besides the program, a vector of (at least) 30,000 bytes initialized to zero, a pointer to the vector (at the beginning of execution points to the first element of the vector) and two "streams" of bytes for input and output.

NATIVES

pawn Код:
native _BFInterpret(dest[], code[], len = sizeof(dest));
To use it simply define the native and add the plugin to server.cfg.

EXAMPLES ..

pawn Код:
native _BFInterpret(dest[], code[], len = sizeof(dest));

main()
{
    new
        str[150]
        ;
       
    _BFInterpret(str, "++++[++++>---<]>++.[--->+++++<]>.+.+++[->+++<]>.--[--->+<]>-.+[->+++<]>++.[--->+<]>----.+[---->+<]>+++.---[->++++<]>+.-------.-[->+++++<]>-.+[->+++<]>++.+++++.-----.++++++++.+++.----.+++.[--->+<]>-----.+[->+++<]>+.+.--[--->+<]>-.+[->++<]>.---[----->+<]>-.+++[->+++<]>++.++++++++.+++++.-[->+++<]>-.[++>-------<]>.+[->+++<]>+.++++++++.+[++>---<]>-.");
    printf("\n\n\n\n%s\n\n", str);
}


Quote:

The code "Hello World!" would be written in a single line:

pawn Код:
_BFInterpret(str, "-[------->+<]>-.-[->+++++<]>++.+++++++..+++.[--->+<]>-----.---[->+++<]>.-[--->+<]>---.+++.------.--------.-[--->+<]>.");
Output: Hello World!

pawn Код:
/* This program prints "Hello World!" and a newline to the screen, its
  length is 106 active command characters [it is not the shortest.]

  This loop is a "comment loop", it's a simple way of adding a comment
  to a BF program such that you don't have to worry about any command
  characters. Any ".", ",", "+", "-", "<" and ">" characters are simply
  ignored, the "[" and "]" characters just have to be balanced.
*/


+++++ +++               //Set Cell #0 to 8
[
    >++++               //Add 4 to Cell #1; this will always set Cell #1 to 4
    [                   //as the cell will be cleared by the loop
        >++             //Add 2 to Cell #2
        >+++            //Add 3 to Cell #3
        >+++            //Add 3 to Cell #4
        >+              //Add 1 to Cell #5
        <<<<-           //Decrement the loop counter in Cell #1
    ]                   //Loop till Cell #1 is zero; number of iterations is 4
    >+                  //Add 1 to Cell #2
    >+                  //Add 1 to Cell #3
    >-                  //Subtract 1 from Cell #4
    >>+                 //Add 1 to Cell #6
    [<]                 //Move back to the first zero cell you find; this will
                        //be Cell #1 which was cleared by the previous loop
    <-                  //Decrement the loop Counter in Cell #0
]                       //Loop till Cell #0 is zero; number of iterations is 8

/*The result of this is:
Cell No :   0   1   2   3   4   5   6
Contents:   0   0  72 104  88  32   8
Pointer :   ^

>>.                     Cell #2 has value 72 which is 'H'
>---.                   Subtract 3 from Cell #3 to get 101 which is 'e'
+++++++..+++.           Likewise for 'llo' from Cell #3
>>.                     Cell #5 is 32 for the space
<-.                     Subtract 1 from Cell #4 for 87 to give a 'W'
<.                      Cell #3 was set to 'o' from the end of 'Hello'
+++.------.--------.    Cell #3 for 'rl' and 'd'
>>+.                    Add 1 to Cell #5 gives us an exclamation point
>++.                    And finally a newline from Cell #6*/
Possibly they knew that it is based on the ASCII table.

instructions:

CharacterMeaning
>increment the data pointer (to point to the next cell to the right).
<decrement the data pointer (to point to the next cell to the left).
+increment (increase by one) the byte at the data pointer.
-decrement (decrease by one) the byte at the data pointer.
.output the byte at the data pointer.
[if the byte at the data pointer is zero, then instead of moving the instruction pointer forward to the next command, jump it forward to the command after the matching ] command.
]if the byte at the data pointer is nonzero, then instead of moving the instruction pointer forward to the next command, jump it back to the command after the matching [ command.
DOWNLOAD >
Source: Download
Bin DLL: Donwload

This is not absolute use (or maybe yes), can be used simply as a plugin to help you learn this language, possibly always is good to learn something new.

Text converter of text to Brainfuck online: http://copy.sh/brainfuck/text.html

Thank you very much to JustBored and Fother!


Re: Brainfuck Interpreter - Abagail - 02.02.2015

So what can I do with this again? And what are the advantages to using it?


Respuesta: Brainfuck Interpreter - Zume - 02.02.2015

It has no advantage at all, yes would benefit if wanted you interpret a BrainFuck code in PAWN.

It could possibly be used to create an encryption method, this is just a code interpreter.


Re: Brainfuck Interpreter - SickAttack - 02.02.2015

I don't see a use for this...


Re: Brainfuck Interpreter - Crayder - 02.02.2015

Umm... The purpose of this language, Brainfuck, was too be able to use the smallest compiler (which is 200 bytes)... The use of this is merely none at all...

But still, good job... :P


Respuesta: Re: Brainfuck Interpreter - Zume - 02.02.2015

Quote:
Originally Posted by SickAttack
Посмотреть сообщение
I don't see a use for this...
Me neither, but I really like the language and i thought to interpret it in PAWN!


Re: Brainfuck Interpreter - JernejL - 02.02.2015

Sadly, this has no use whatsoever for an actual server scripter / owner / player..


Re: Brainfuck Interpreter - iFarbod - 02.02.2015

It has no uses #sadbuttrue

btw, still good job


Re: Brainfuck Interpreter - ikkentim - 02.02.2015

Brainfuck is the best way to waste your time, in my option. Thanks for sharing this


Re: Brainfuck Interpreter - Mr.R - 02.02.2015

Anyone can create .so plug-in file for linux?

// edit: a problem with run plug-in:

Код:
20150202 205931>   Loaded.
20150202 205931>  Loading plugin: mysql
20150202 205931>  SA:MP MySQL Plugin v2.1.1 Loaded.
20150202 205931>   Loaded.
20150202 205931>  Loading plugin: BrainFuck
20150202 205931> [MySQL] Thread running. Threadsafe: Yes.
20150202 205931>   Failed.
20150202 205931>  Loaded 2 plugins.



Re: Brainfuck Interpreter - Tamer - 02.02.2015

Why is this called brainfuck?


Re: Brainfuck Interpreter - ikkentim - 02.02.2015

Quote:
Originally Posted by x4x
Посмотреть сообщение
because it fucks your brain.

---

I don't see a user for thisІ
But good job
Couldn't resist going off topic to tell that's a fucking no-brainer.


Re: Brainfuck Interpreter - Mr.R - 09.02.2015

Why i can't load this plugin?


Re: Brainfuck Interpreter - Sasino97 - 11.03.2015

It has no uses at all but it's fun


Re: Brainfuck Interpreter - Ritzy2K - 11.03.2015

uhmmmm... im gonna use it to battle aliens...

* Ritzy2K packs his things n boards up a UFO..

I dunno why its called brain fuck....it can be used in galaxies for war...
call it the ultimate alien pumping intergalatic Hydropower saturated tool (random words...tho make sense xD)

Look at my avatar...im gonna use that suit.

P.S there are childrens dying in africa!

About the plugin: serious post...- where do i use it and why do i use it?


Re: Brainfuck Interpreter - Crayder - 11.03.2015

Код:
++++++++[>+>++>+++>++++>+++++>++++++>+++++++>++++++++>+++++++++>++++++++++>+++++++++++>++++++++++++>+++++++++++++>++++++++++++++>+++++++++++++++>++++++++++++++++<<<<<<<<<<<<<<<<-]>>>>>>>>++.--<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>--.++<<<<<<<<<<<<<>>>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<<<>>>>>>>>>>>>+++.---<<<<<<<<<<<<>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>.<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>.<<<<<<<<<<<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>+++.---<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>>.<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>+++.---<<<<<<<<<<>>>>>>>>+.-<<<<<<<<>>>>>>---.+++<<<<<<>>>>>>>>>>---.+++<<<<<<<<<<>>>>>>>>>>.<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<<>>>>>>>>>>>>>>-.+<<<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<>>>>+.-<<<<.
Код:
++++[++++>---<]>-.---[----->+<]>-.+++[->+++<]>++.++++++++.+++++.--------.-[--->+<]>--.+[->+++<]>+.++++++++.-[++>---<]>+.-[--->++<]>--.-------.--[--->+<]>--.+[---->+<]>+++.+[----->+<]>+.+.[--->+<]>-----.[-->+++++++<]>.----.-----------.++.++.--[--->+<]>-.-[--->++<]>-.+++++.-[->+++++<]>-.---[->++++<]>.------------.---.--[--->+<]>-.>-[--->+<]>--.---[->++++<]>+.+[--->++<]>+.------[->++<]>-.+++.[----->++<]>.--[->++++<]>-.--------.+++.------.--------.-[--->+<]>.



Re: Brainfuck Interpreter - n0minal - 11.03.2015

Quote:
Originally Posted by Tamer
Посмотреть сообщение
Why is this called brainfuck?
Cause it was probably designed to fuck up your brain.

@Topic: The only usage that i saw on this plugin is: Credits, if you release some code and dont want something to be modifyied by newbies you can use this plugin, thats the only reason which i found. Congrats anyways.


Re: Brainfuck Interpreter - TheWitcher - 12.03.2015

Who say this is useless ? Well im saying that one time you will search for a plugin like this !


Re: Brainfuck Interpreter - Sew_Sumi - 12.03.2015

Quote:
Originally Posted by ******
Посмотреть сообщение
Why does the native function start with an underscore? Those names are normally reserved for PAWN implementation details.
He'll be fixing that no doubt...


Beer or popcorn on this matter?

I'm looking at popcorn.


Re: Brainfuck Interpreter - Smileys - 18.03.2015

Lol I like it, pretty unique concept

Just 1 question though,

Were you bored like hell when this idea came up?