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', 'var'];
let numberLine = document.querySelector('.numberLine');
let container = document.querySelector('.container');
let container2 = document.querySelector('.container2');
container2.onkeyup = () => {
let lines = container2.innerText.split(/\n{1,2}/g);
let linesLenght = lines.lenght;
lines.join('').trim() == '' ? lines.splice(-1, 1) : null;
numberLine.innerHTML = lines.map((e, i) => `<p></p>`).join('');
reservadas.forEach(r =>
lines.forEach((l, i) => {
lines[i] = l.replace(new RegExp(`\\b${r}\\b`, 'g'), `<rsv>${r}</rsv>`)
.replace(new RegExp(`\\b(\\d{1,})\\b`, 'g'), `<dig>$1</dig>`)
.replace(new RegExp(`(\\"[^\\"]{0,}\\")`, 'g'), `<car>$1</car>`);
})
);
console.log(lines.join('<br>'))
container.innerHTML = lines.join('<br>');
};