JavaScript
let reservadas = ['abstract', 'enum', 'long', 'stackalloc', 'as', 'event', 'namespace', 'static', 'base', 'explicit', 'new', 'string', 'bool', 'extern', 'null', 'struct', 'break', 'false', 'object', 'switch', 'byte', 'finally', 'operator', 'this', 'case', 'Fixed', 'out', 'throw', 'catch', 'float', 'override', 'true', 'char', 'for', 'params', 'try', 'checked', 'foreach', 'private', 'typeof', 'class', 'goto', 'protected', 'uint', 'const', 'if', 'public', 'ulong', 'continue', 'implicit', 'readonly', 'unchecked', 'decimal', 'in', 'ref', 'unsafe', 'default', 'int', 'return', 'ushort', 'delegate', 'interface', 'sbyte', 'using', 'do', 'internal', 'sealed', 'virtual', 'double', 'is', 'short', 'void', 'else', 'lock', 'sizeof', 'while', 'get', 'set'];
let simbolos = ['\\*', '\\/', '\\*', '\\<', '\\>', '\\+', '\\-', '\\=', '\\!', '\\[\\]', '\\(\\)', '\\{\\}', '\\|', '\\&', '\\?'];
let numberLine = document.querySelector('.numberLine');
let container = document.querySelector('.container');
let container2 = document.querySelector('.container2');
container2.onfocus = () => start();
container2.onblur = () => stop();
var requestId;
function loop(time) {
requestId = undefined;
let lines = container2.value.split(/\n/g);
let linesLenght = lines.lenght;
let cursorPosition = container2.value.substr(0, container2.selectionStart).split(/\n/g).length;
numberLine.innerHTML = lines.map((e, i) => `<p class="${cursorPosition == i + 1 ? 'active' : null}" ></p>`).join('');
lines.forEach((l, i) => {
lines[i] = lines[i]
.replace(/(\/\/.*)$/gm, `<cmt><nc>$1</nc></cmt>`)
.replace(/(\/\*.*)/gm, `<cmt><nc>$1</nc>`)
.replace(/(.*\*\/)/gm, `<nc>$1</nc></cmt>`)
.replace(new RegExp(`(?<!\<nc\>.*)([${simbolos.join("")}])(?!.*\<\/nc\>)`, 'g'), `<smb>$1</smb>`)
/*
simbolos.forEach(s =>
lines[i] = lines[i].replace(new RegExp(`(?:()(\\B${s}\\B)|(.)(${s}{2}\\B))`, 'g'), `$1$3<smb>$2$4</smb>`)
);*/
reservadas.forEach(r =>
...