Prism.languages.c = Prism.languages.extend('clike', { // allow for c multiline strings 'string': /("|')([^\n\\\1]|\\.|\\\r*\n)*?\1/g, 'keyword': /\b(asm|typeof|inline|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while)\b/g, 'operator': /[-+]{1,2}|!=?|<{1,2}=?|>{1,2}=?|\->|={1,2}|\^|~|%|&{1,2}|\|?\||\?|\*|\//g }); Prism.languages.insertBefore('c', 'string', { // property class reused for macro statements 'property': { // allow for multiline macro definitions // spaces after the # character compile fine with gcc pattern: /((^|\n)\s*)#\s*[a-z]+([^\n\\]|\\.|\\\r*\n)*/gi, lookbehind: true, inside: { // highlight the path of the include statement as a string 'string': { pattern: /(#\s*include\s*)(<.+?>|("|')(\\?.)+?\3)/g, lookbehind: true } } } }); delete Prism.languages.c['class-name']; delete Prism.languages.c['boolean'];