12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- /*
- Language: Prolog
- Description: Prolog is a general purpose logic programming language associated with artificial intelligence and computational linguistics.
- Author: Raivo Laanemets <raivo@infdot.com>
- Website: https://en.wikipedia.org/wiki/Prolog
- Category: functional
- */
- function prolog(hljs) {
- const ATOM = {
- begin: /[a-z][A-Za-z0-9_]*/,
- relevance: 0
- };
- const VAR = {
- className: 'symbol',
- variants: [
- { begin: /[A-Z][a-zA-Z0-9_]*/ },
- { begin: /_[A-Za-z0-9_]*/ }
- ],
- relevance: 0
- };
- const PARENTED = {
- begin: /\(/,
- end: /\)/,
- relevance: 0
- };
- const LIST = {
- begin: /\[/,
- end: /\]/
- };
- const LINE_COMMENT = {
- className: 'comment',
- begin: /%/,
- end: /$/,
- contains: [ hljs.PHRASAL_WORDS_MODE ]
- };
- const BACKTICK_STRING = {
- className: 'string',
- begin: /`/,
- end: /`/,
- contains: [ hljs.BACKSLASH_ESCAPE ]
- };
- const CHAR_CODE = {
- className: 'string', // 0'a etc.
- begin: /0'(\\'|.)/
- };
- const SPACE_CODE = {
- className: 'string',
- begin: /0'\\s/ // 0'\s
- };
- const PRED_OP = { // relevance booster
- begin: /:-/ };
- const inner = [
- ATOM,
- VAR,
- PARENTED,
- PRED_OP,
- LIST,
- LINE_COMMENT,
- hljs.C_BLOCK_COMMENT_MODE,
- hljs.QUOTE_STRING_MODE,
- hljs.APOS_STRING_MODE,
- BACKTICK_STRING,
- CHAR_CODE,
- SPACE_CODE,
- hljs.C_NUMBER_MODE
- ];
- PARENTED.contains = inner;
- LIST.contains = inner;
- return {
- name: 'Prolog',
- contains: inner.concat([
- { // relevance booster
- begin: /\.$/ }
- ])
- };
- }
- export { prolog as default };
|