| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 | /*Language: SmalltalkDescription: Smalltalk is an object-oriented, dynamically typed reflective programming language.Author: Vladimir Gubarkov <xonixx@gmail.com>Website: https://en.wikipedia.org/wiki/Smalltalk*/function smalltalk(hljs) {  const VAR_IDENT_RE = '[a-z][a-zA-Z0-9_]*';  const CHAR = {    className: 'string',    begin: '\\$.{1}'  };  const SYMBOL = {    className: 'symbol',    begin: '#' + hljs.UNDERSCORE_IDENT_RE  };  return {    name: 'Smalltalk',    aliases: [ 'st' ],    keywords: 'self super nil true false thisContext', // only 6    contains: [      hljs.COMMENT('"', '"'),      hljs.APOS_STRING_MODE,      {        className: 'type',        begin: '\\b[A-Z][A-Za-z0-9_]*',        relevance: 0      },      {        begin: VAR_IDENT_RE + ':',        relevance: 0      },      hljs.C_NUMBER_MODE,      SYMBOL,      CHAR,      {        // This looks more complicated than needed to avoid combinatorial        // explosion under V8. It effectively means `| var1 var2 ... |` with        // whitespace adjacent to `|` being optional.        begin: '\\|[ ]*' + VAR_IDENT_RE + '([ ]+' + VAR_IDENT_RE + ')*[ ]*\\|',        returnBegin: true,        end: /\|/,        illegal: /\S/,        contains: [ {          begin: '(\\|[ ]*)?' + VAR_IDENT_RE        } ]      },      {        begin: '#\\(',        end: '\\)',        contains: [          hljs.APOS_STRING_MODE,          CHAR,          hljs.C_NUMBER_MODE,          SYMBOL        ]      }    ]  };}module.exports = smalltalk;
 |