online compiler and debugger for c/c++

code. compile. run. debug. share.
Source Code   
Language
const fs = require("fs/promises"); // kod pobierania znaku const getChar = ` const readline = require('readline'); function getChar() { return new Promise((resolve) => { readline.emitKeypressEvents(process.stdin); process.stdin.resume(); process.stdin.setRawMode(true); process.stdin.once('keypress', (string, key) => { if (key.ctrl && key.name === 'c') { process.exit(); } process.stdin.pause(); process.stdin.setRawMode(false); resolve(string.charCodeAt(0)); }); }); } `; // kod inicjalizujący const init = ` const memory = new Array(30000).fill(0); let pointer = 0; (async () => { `; // kod kończący aplikację const end = ` })(); `; // mapa symbol BF -> instrukcja JS const symbolToJs = { ">": "pointer++;", "<": "pointer--;", "+": "memory[pointer]++;", "-": "memory[pointer]--;", ".": "process.stdout.write(String.fromCharCode(memory[pointer]));", ",": "memory[pointer] = await getChar();", "[": "while (memory[pointer] !== 0) {", "]": "}", }; async function bfToJs(bfCode) { // zmienna przechowująca kod w JavaScript let result = ""; if (bfCode.includes(",")) { // kod pobierania znaku dodajemy tylko, jeśli jest potrzebny result += getChar; } // dodajemy kod inicjalizujący aplikację result += init; // iterujemy po kolejnych znakach aby je przekonwertować for (let i = 0; i < bfCode.length; i++) { // pobieramy instrukcję dla aktualnego znaku const instruction = symbolToJs[bfCode[i]]; // jeśli symbol był prawidłowy, dodajemy instrukcję kodu if (instruction) { result += instruction; } } // dodajemy kod zakańczający aplikację result += end; // zwracamy kod return result; } async function generateBfFile(bfCode, filename) { // generujemy kod w JavaScript const jsCode = await bfToJs(bfCode); // zapisujemy kod w pliku await fs.writeFile(filename, jsCode); console.log(`Plik ${filename} zapisano pomyślnie!`); } (async () => { // prosty Hello World await generateBfFile( ` H: ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++. e: +++++++++++++++++++++++++++++. l: +++++++. l: . o: +++. spacja: -------------------------------------------------------------------------------. W: +++++++++++++++++++++++++++++++++++++++++++++++++++++++. o: ++++++++++++++++++++++++. r: +++. l: ------. d: --------. `, "hello1.js", ); // zaawansowany Hello World, https://en.wikipedia.org/wiki/Brainfuck#Hello_World! await generateBfFile( "++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.", "hello2.js", ); // ROT13, https://en.wikipedia.org/wiki/Brainfuck#ROT13 await generateBfFile( ` -,+[ Read first character and start outer character reading loop -[ Skip forward if character is 0 >>++++[>++++++++<-] Set up divisor (32) for division loop (MEMORY LAYOUT: dividend copy remainder divisor quotient zero zero) <+<-[ Set up dividend (x minus 1) and enter division loop >+>+>-[>>>] Increase copy and remainder / reduce divisor / Normal case: skip forward <[[>+<-]>>+>] Special case: move remainder back to divisor and increase quotient <<<<<- Decrement dividend ] End division loop ]>>>[-]+ End skip loop; zero former divisor and reuse space for a flag >--[-[<->+++[-]]]<[ Zero that flag unless quotient was 2 or 3; zero quotient; check flag ++++++++++++<[ If flag then set up divisor (13) for second division loop (MEMORY LAYOUT: zero copy dividend divisor remainder quotient zero zero) >-[>+>>] Reduce divisor; Normal case: increase remainder >[+[<+>-]>+>>] Special case: increase remainder / move it back to divisor / increase quotient <<<<<- Decrease dividend ] End division loop >>[<+>-] Add remainder back to divisor to get a useful 13 >[ Skip forward if quotient was 0 -[ Decrement quotient and skip forward if quotient was 1 -<<[-]>> Zero quotient and divisor if quotient was 2 ]<<[<<->>-]>> Zero divisor and subtract 13 from copy if quotient was 1 ]<<[<<+>>-] Zero divisor and add 13 to copy if quotient was 0 ] End outer skip loop (jump to here if ((character minus 1)/32) was not 2 or 3) <[-] Clear remainder from first division if second division was skipped <.[-] Output ROT13ed character from copy and clear it <-,+ Read next character ] End character reading loop `, "rot13.js", ); })();
const memory = new Array(30000).fill(0); let pointer = 0; (async () => { memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;process.stdout.write(String.fromCharCode(memory[pointer]));memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;process.stdout.write(String.fromCharCode(memory[pointer]));memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;process.stdout.write(String.fromCharCode(memory[pointer]));process.stdout.write(String.fromCharCode(memory[pointer]));memory[pointer]++;memory[pointer]++;memory[pointer]++;process.stdout.write(String.fromCharCode(memory[pointer]));memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;process.stdout.write(String.fromCharCode(memory[pointer]));memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;process.stdout.write(String.fromCharCode(memory[pointer]));memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;process.stdout.write(String.fromCharCode(memory[pointer]));memory[pointer]++;memory[pointer]++;memory[pointer]++;process.stdout.write(String.fromCharCode(memory[pointer]));memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;process.stdout.write(String.fromCharCode(memory[pointer]));memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;process.stdout.write(String.fromCharCode(memory[pointer])); })();
const memory = new Array(30000).fill(0); let pointer = 0; (async () => { memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;while (memory[pointer] !== 0) {pointer++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;while (memory[pointer] !== 0) {pointer++;memory[pointer]++;memory[pointer]++;pointer++;memory[pointer]++;memory[pointer]++;memory[pointer]++;pointer++;memory[pointer]++;memory[pointer]++;memory[pointer]++;pointer++;memory[pointer]++;pointer--;pointer--;pointer--;pointer--;memory[pointer]--;}pointer++;memory[pointer]++;pointer++;memory[pointer]++;pointer++;memory[pointer]--;pointer++;pointer++;memory[pointer]++;while (memory[pointer] !== 0) {pointer--;}pointer--;memory[pointer]--;}pointer++;pointer++;process.stdout.write(String.fromCharCode(memory[pointer]));pointer++;memory[pointer]--;memory[pointer]--;memory[pointer]--;process.stdout.write(String.fromCharCode(memory[pointer]));memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;process.stdout.write(String.fromCharCode(memory[pointer]));process.stdout.write(String.fromCharCode(memory[pointer]));memory[pointer]++;memory[pointer]++;memory[pointer]++;process.stdout.write(String.fromCharCode(memory[pointer]));pointer++;pointer++;process.stdout.write(String.fromCharCode(memory[pointer]));pointer--;memory[pointer]--;process.stdout.write(String.fromCharCode(memory[pointer]));pointer--;process.stdout.write(String.fromCharCode(memory[pointer]));memory[pointer]++;memory[pointer]++;memory[pointer]++;process.stdout.write(String.fromCharCode(memory[pointer]));memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;process.stdout.write(String.fromCharCode(memory[pointer]));memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;memory[pointer]--;process.stdout.write(String.fromCharCode(memory[pointer]));pointer++;pointer++;memory[pointer]++;process.stdout.write(String.fromCharCode(memory[pointer]));pointer++;memory[pointer]++;memory[pointer]++;process.stdout.write(String.fromCharCode(memory[pointer])); })();
const readline = require('readline'); function getChar() { return new Promise((resolve) => { readline.emitKeypressEvents(process.stdin); process.stdin.resume(); process.stdin.setRawMode(true); process.stdin.once('keypress', (string, key) => { if (key.ctrl && key.name === 'c') { process.exit(); } process.stdin.pause(); process.stdin.setRawMode(false); resolve(string.charCodeAt(0)); }); }); } const memory = new Array(30000).fill(0); let pointer = 0; (async () => { memory[pointer]--;memory[pointer] = await getChar();memory[pointer]++;while (memory[pointer] !== 0) {memory[pointer]--;while (memory[pointer] !== 0) {pointer++;pointer++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;while (memory[pointer] !== 0) {pointer++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;pointer--;memory[pointer]--;}pointer--;memory[pointer]++;pointer--;memory[pointer]--;while (memory[pointer] !== 0) {pointer++;memory[pointer]++;pointer++;memory[pointer]++;pointer++;memory[pointer]--;while (memory[pointer] !== 0) {pointer++;pointer++;pointer++;}pointer--;while (memory[pointer] !== 0) {while (memory[pointer] !== 0) {pointer++;memory[pointer]++;pointer--;memory[pointer]--;}pointer++;pointer++;memory[pointer]++;pointer++;}pointer--;pointer--;pointer--;pointer--;pointer--;memory[pointer]--;}}pointer++;pointer++;pointer++;while (memory[pointer] !== 0) {memory[pointer]--;}memory[pointer]++;pointer++;memory[pointer]--;memory[pointer]--;while (memory[pointer] !== 0) {memory[pointer]--;while (memory[pointer] !== 0) {pointer--;memory[pointer]--;pointer++;memory[pointer]++;memory[pointer]++;memory[pointer]++;while (memory[pointer] !== 0) {memory[pointer]--;}}}pointer--;while (memory[pointer] !== 0) {memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;memory[pointer]++;pointer--;while (memory[pointer] !== 0) {pointer++;memory[pointer]--;while (memory[pointer] !== 0) {pointer++;memory[pointer]++;pointer++;pointer++;}pointer++;while (memory[pointer] !== 0) {memory[pointer]++;while (memory[pointer] !== 0) {pointer--;memory[pointer]++;pointer++;memory[pointer]--;}pointer++;memory[pointer]++;pointer++;pointer++;}pointer--;pointer--;pointer--;pointer--;pointer--;memory[pointer]--;}pointer++;pointer++;while (memory[pointer] !== 0) {pointer--;memory[pointer]++;pointer++;memory[pointer]--;}pointer++;while (memory[pointer] !== 0) {memory[pointer]--;while (memory[pointer] !== 0) {memory[pointer]--;pointer--;pointer--;while (memory[pointer] !== 0) {memory[pointer]--;}pointer++;pointer++;}pointer--;pointer--;while (memory[pointer] !== 0) {pointer--;pointer--;memory[pointer]--;pointer++;pointer++;memory[pointer]--;}pointer++;pointer++;}pointer--;pointer--;while (memory[pointer] !== 0) {pointer--;pointer--;memory[pointer]++;pointer++;pointer++;memory[pointer]--;}}pointer--;while (memory[pointer] !== 0) {memory[pointer]--;}pointer--;process.stdout.write(String.fromCharCode(memory[pointer]));while (memory[pointer] !== 0) {memory[pointer]--;}pointer--;memory[pointer]--;memory[pointer] = await getChar();memory[pointer]++;} })();

Compiling Program...

Command line arguments:
Standard Input: Interactive Console Text
×

                

                

Program is not being debugged. Click "Debug" button to start program in debug mode.

#FunctionFile:Line
VariableValue
RegisterValue
ExpressionValue