Examine individual changes

Abuse Filter navigation (Home | Recent filter changes | Examine past edits | Abuse log)
Jump to navigation Jump to search

This page allows you to examine the variables generated by the Abuse Filter for an individual change.

Variables generated for this change

VariableValue
Whether or not the edit is marked as minor (no longer in use) (minor_edit)
false
Edit count of the user (user_editcount)
0
Name of the user account (user_name)
'Dngnogu'
Age of the user account (user_age)
38
Page ID (page_id)
10979
Page namespace (page_namespace)
0
Page title (without namespace) (page_title)
'Brain'
Full page title (page_prefixedtitle)
'Brain'
Action (action)
'edit'
Edit summary/reason (summary)
'/* Implemented */ '
Old content model (old_content_model)
'wikitext'
New content model (new_content_model)
'wikitext'
Old page wikitext, before the edit (old_wikitext)
'An esoteric programming language based on Brainfuck. == About == '''Brain''' wants to improve the performance of the Brainfuck programming language and extend it as well, as Brainfuck itself has a lack of flexibility and does not perform great control over complex computations. '''Brain''' is open to new model represetantion and allows programmers to extend its capability by attaching ''LLVM IR'' to its code. One of the main ideas of '''Brain''' is saving some operations in machine language, creating an instruction optmizer due to the excess of instructions that Brainfuck would generate. Brain aims to implement it by using current technology (LLVM). In spite of implementing new commands and features, Brain is '''completely compatible''' with Brainfuck (but the opposite is not true). == Tools == * [https://brain-labs.github.io/brain-visualizer/# Brain Visualizer] - an Online Javascript Interpreter for the Brain Language. * [https://github.com/brain-labs/brainduino Brainduino] - a Brain interpreter for Arduino. * [https://github.com/brain-labs/brainstation BrainStation] - A small video game console for Arduino using the Brainduino interpreter. == Install == ==== Arch Linux via AUR ==== <div style="border: 1px solid #ddd;padding:1em;background-color:#f9f9f9;font-family: monospace,Courier;"> <p>yaourt -S brain</p> </div> ==== Docker ==== <div style="border: 1px solid #ddd;padding:1em;background-color:#f9f9f9;font-family: monospace,Courier;"> <p>docker pull luizperes/brain:1.0</p> <p>docker run -it luizperes/brain:1.0</p> </div> == How it has been built == Brain is based on previous work https://github.com/luizperes/BrainfuckInterpreter and https://github.com/Lisapple/BF-Compiler-Tutorial-with-LLVM, now trying to make something more serious: Turing Complete, faster, more features/commands. == Technical Information == Brain is now a Turing Complete language. You can now extend the tape size by using the flag <span style="background-color:#f9f9f9;font-family: monospace,Courier;">--size=<tape size></span>. == Commands == ====Implemented==== {| class="wikitable" !Command !Description |- | style="text-align:center"| <code>&gt;</code> |Move the pointer to the right |- | style="text-align:center"| <code>&lt;</code> |Move the pointer to the left |- | style="text-align:center"| <code><nowiki>+</nowiki></code> |Increment the memory cell under the pointer |- | style="text-align:center"| <code><nowiki>-</nowiki></code> |Decrement the memory cell under the pointer |- | style="text-align:center"| <code>.</code> |Output the character signified by the cell at the pointer |- | style="text-align:center"| <code>,</code> |Input a character and store it in the cell at the pointer |- | style="text-align:center"| <code>[</code> |Jump past the matching <code>]</code> if the cell under the pointer is 0 |- | style="text-align:center"| <code>]</code> |Jump back to the matching <code>[</code> if the cell under the pointer is nonzero |- | style="text-align:center"| <code>*</code> |multiply <code>*ptr</code> with <code>*(ptr-1)<code>. Store result in <code>*ptr // format: 2 3 *</code> |- | style="text-align:center"| <code>/</code> |divide <code>*ptr</code> with <code>*(ptr-1)</code>. Store the result in <code>*ptr // format: 2 3 /</code> |- | style="text-align:center"| <code>%</code> | divide <code>*ptr</code> with <code>*(ptr-1)</code>. Store the remainder in <code>*ptr // format: 2 3 %</code> |- | style="text-align:center"| <code>#</code> |prints out the current debug information. |- | style="text-align:center"| <code>{</code> |('''for''' loop) iterates <code>'value-at-the-data-pointer' times</code> and needs to be closed with a matching <code>}</code> command. It does not decrease the value at the data pointer. It will only work for positive values. |- | style="text-align:center"| <code>}</code> |jump to its correspondent <code>{</code>. |- | style="text-align:center"| <code>!</code> |('''break''') jumps to the end of a loop (<code>[</code> <code>]</code> or <code>{</code> <code>}</code>) |- | style="text-align:center"| <code>?</code> | if the value at the data pointer is <code>zero</code> , jumps to the block with <code>:</code> or <code>;</code> and executes the commands one by one up to its correlative <code>;</code>, otherwise, it executes the code until it finds a <code>:</code> or <code>;</code>. |- | style="text-align:center"| <code>:</code> |it works as an otherwise (or else) for <code>?</code>. |- | style="text-align:center"| <code>;</code> |ends a statement. |- | style="text-align:center"| <code>$</code> |prints out the value at the data pointer '''divided''' by 100. |} ====Not Implemented==== {| class="wikitable" !Command !Description |- | style="text-align:center"| <code>@</code> |calls a function according to the value at the data pointer. |- | style="text-align:center"| <code>^</code> |move the data pointer (jump) on the tape. Ex.: <code>++++++++++^ //the data pointer will jump to cell 10.</code> |} == Examples == * '''if-then''': <span style="background-color:#f9f9f9;font-family: monospace,Courier;">? +++ ;</span> // if (*ptr) { *ptr += 3; } * '''if-else''': <span style="background-color:#f9f9f9;font-family: monospace,Courier;">? +++ : --- ;</span> // if (*ptr) { *ptr += 3; } else { *ptr -= 3; } * '''for-loop''': <span style="background-color:#f9f9f9;font-family: monospace,Courier;">++++ { commands }</span> // makes four iterations 4 through 0 (excluded) * '''floating numbers''': <span style="background-color:#f9f9f9;font-family: monospace,Courier;">++>+********$</span> cell 0[2] cell 1[256] // '$' prints out 256 / 100 * '''break loop''': <span style="background-color:#f9f9f9;font-family: monospace,Courier;">+[+++++!]</span> // ptr = 1; while(ptr) { *ptr += 5; break; } == Compiler Options == * <code>--version</code> Shows the current version of Brain * <code>--size=<number></code> Sets the number of cells used by the interpreter * <code>-emit-llvm</code> Emits LLVM IR code for the given input * <code>-emit-ast</code> Emits the AST for the given input * <code>-emit-code</code> Emits an optimized code for the given input * <code>-v</code> Uses verbose mode for the output * <code>-O0</code> Generates output code with no optmizations * <code>-O1</code> Optimizes Brain generated output code (Default) == Real-life Applications == * Artificial Intelligence/ Machine Learning * Send commands to Arduino * Easy support to primitive processors == See Also == * [[cbrain]] * [[Brainfuck]] * [[False]] * [[MarioLANG]] * [[pbrain]] == External Resources == * https://github.com/brain-labs * https://github.com/brain-labs/brain * https://github.com/brain-labs/brain-visualizer * https://github.com/brain-labs/brainduino * https://github.com/brain-labs/brainstation'
New page wikitext, after the edit (new_wikitext)
'An esoteric programming language based on Brainfuck. == About == '''Brain''' wants to improve the performance of the Brainfuck programming language and extend it as well, as Brainfuck itself has a lack of flexibility and does not perform great control over complex computations. '''Brain''' is open to new model represetantion and allows programmers to extend its capability by attaching ''LLVM IR'' to its code. One of the main ideas of '''Brain''' is saving some operations in machine language, creating an instruction optmizer due to the excess of instructions that Brainfuck would generate. Brain aims to implement it by using current technology (LLVM). In spite of implementing new commands and features, Brain is '''completely compatible''' with Brainfuck (but the opposite is not true). == Tools == * [https://brain-labs.github.io/brain-visualizer/# Brain Visualizer] - an Online Javascript Interpreter for the Brain Language. * [https://github.com/brain-labs/brainduino Brainduino] - a Brain interpreter for Arduino. * [https://github.com/brain-labs/brainstation BrainStation] - A small video game console for Arduino using the Brainduino interpreter. == Install == ==== Arch Linux via AUR ==== <div style="border: 1px solid #ddd;padding:1em;background-color:#f9f9f9;font-family: monospace,Courier;"> <p>yaourt -S brain</p> </div> ==== Docker ==== <div style="border: 1px solid #ddd;padding:1em;background-color:#f9f9f9;font-family: monospace,Courier;"> <p>docker pull luizperes/brain:1.0</p> <p>docker run -it luizperes/brain:1.0</p> </div> == How it has been built == Brain is based on previous work https://github.com/luizperes/BrainfuckInterpreter and https://github.com/Lisapple/BF-Compiler-Tutorial-with-LLVM, now trying to make something more serious: Turing Complete, faster, more features/commands. == Technical Information == Brain is now a Turing Complete language. You can now extend the tape size by using the flag <span style="background-color:#f9f9f9;font-family: monospace,Courier;">--size=<tape size></span>. == Commands == ====Implemented==== {| class="wikitable" !Command !Description |- | style="text-align:center"| <code>&gt;</code> |Move the pointer to the right |- | style="text-align:center"| <code>&lt;</code> |Move the pointer to the left |- | style="text-align:center"| <code><nowiki>+</nowiki></code> |Increment the memory cell under the pointer |- | style="text-align:center"| <code><nowiki>-</nowiki></code> |Decrement the memory cell under the pointer |- | style="text-align:center"| <code>.</code> |Output the character signified by the cell at the pointer |- | style="text-align:center"| <code>,</code> |Input a character and store it in the cell at the pointer |- | style="text-align:center"| <code>[</code> |Jump past the matching <code>]</code> if the cell under the pointer is 0 |- | style="text-align:center"| <code>]</code> |Jump back to the matching <code>[</code> if the cell under the pointer is nonzero |- | style="text-align:center"| <code>*</code> |multiply <code>*ptr</code> with <code>*(ptr-1)</code>. Store result in <code>*ptr // format: 2 3 *</code> |- | style="text-align:center"| <code>/</code> |divide <code>*ptr</code> with <code>*(ptr-1)</code>. Store the result in <code>*ptr // format: 2 3 /</code> |- | style="text-align:center"| <code>%</code> | divide <code>*ptr</code> with <code>*(ptr-1)</code>. Store the remainder in <code>*ptr // format: 2 3 %</code> |- | style="text-align:center"| <code>#</code> |prints out the current debug information. |- | style="text-align:center"| <code>{</code> |('''for''' loop) iterates <code>'value-at-the-data-pointer' times</code> and needs to be closed with a matching <code>}</code> command. It does not decrease the value at the data pointer. It will only work for positive values. |- | style="text-align:center"| <code>}</code> |jump to its correspondent <code>{</code>. |- | style="text-align:center"| <code>!</code> |('''break''') jumps to the end of a loop (<code>[</code> <code>]</code> or <code>{</code> <code>}</code>) |- | style="text-align:center"| <code>?</code> | if the value at the data pointer is <code>zero</code> , jumps to the block with <code>:</code> or <code>;</code> and executes the commands one by one up to its correlative <code>;</code>, otherwise, it executes the code until it finds a <code>:</code> or <code>;</code>. |- | style="text-align:center"| <code>:</code> |it works as an otherwise (or else) for <code>?</code>. |- | style="text-align:center"| <code>;</code> |ends a statement. |- | style="text-align:center"| <code>$</code> |prints out the value at the data pointer '''divided''' by 100. |} ====Not Implemented==== {| class="wikitable" !Command !Description |- | style="text-align:center"| <code>@</code> |calls a function according to the value at the data pointer. |- | style="text-align:center"| <code>^</code> |move the data pointer (jump) on the tape. Ex.: <code>++++++++++^ //the data pointer will jump to cell 10.</code> |} == Examples == * '''if-then''': <span style="background-color:#f9f9f9;font-family: monospace,Courier;">? +++ ;</span> // if (*ptr) { *ptr += 3; } * '''if-else''': <span style="background-color:#f9f9f9;font-family: monospace,Courier;">? +++ : --- ;</span> // if (*ptr) { *ptr += 3; } else { *ptr -= 3; } * '''for-loop''': <span style="background-color:#f9f9f9;font-family: monospace,Courier;">++++ { commands }</span> // makes four iterations 4 through 0 (excluded) * '''floating numbers''': <span style="background-color:#f9f9f9;font-family: monospace,Courier;">++>+********$</span> cell 0[2] cell 1[256] // '$' prints out 256 / 100 * '''break loop''': <span style="background-color:#f9f9f9;font-family: monospace,Courier;">+[+++++!]</span> // ptr = 1; while(ptr) { *ptr += 5; break; } == Compiler Options == * <code>--version</code> Shows the current version of Brain * <code>--size=<number></code> Sets the number of cells used by the interpreter * <code>-emit-llvm</code> Emits LLVM IR code for the given input * <code>-emit-ast</code> Emits the AST for the given input * <code>-emit-code</code> Emits an optimized code for the given input * <code>-v</code> Uses verbose mode for the output * <code>-O0</code> Generates output code with no optmizations * <code>-O1</code> Optimizes Brain generated output code (Default) == Real-life Applications == * Artificial Intelligence/ Machine Learning * Send commands to Arduino * Easy support to primitive processors == See Also == * [[cbrain]] * [[Brainfuck]] * [[False]] * [[MarioLANG]] * [[pbrain]] == External Resources == * https://github.com/brain-labs * https://github.com/brain-labs/brain * https://github.com/brain-labs/brain-visualizer * https://github.com/brain-labs/brainduino * https://github.com/brain-labs/brainstation'
Unified diff of changes made by edit (edit_diff)
'@@ -65,5 +65,5 @@ |- | style="text-align:center"| <code>*</code> -|multiply <code>*ptr</code> with <code>*(ptr-1)<code>. Store result in <code>*ptr // format: 2 3 *</code> +|multiply <code>*ptr</code> with <code>*(ptr-1)</code>. Store result in <code>*ptr // format: 2 3 *</code> |- | style="text-align:center"| <code>/</code> '
New page size (new_size)
6782
Old page size (old_size)
6781
Lines added in edit (added_lines)
[ 0 => '|multiply <code>*ptr</code> with <code>*(ptr-1)</code>. Store result in <code>*ptr // format: 2 3 *</code>' ]
Unix timestamp of change (timestamp)
1533212678