basant307/AI_Governance_Project
048
1/*2Language: Lisp3Description: Generic lisp syntax4Author: Vasily Polovnyov <vast@whiteants.net>5Category: lisp6*/7 8function lisp(hljs) {9 const LISP_IDENT_RE = '[a-zA-Z_\\-+\\*\\/<=>&#][a-zA-Z0-9_\\-+*\\/<=>&#!]*';10 const MEC_RE = '\\|[^]*?\\|';11 const LISP_SIMPLE_NUMBER_RE = '(-|\\+)?\\d+(\\.\\d+|\\/\\d+)?((d|e|f|l|s|D|E|F|L|S)(\\+|-)?\\d+)?';12 const LITERAL = {13 className: 'literal',14 begin: '\\b(t{1}|nil)\\b'15 };16 const NUMBER = {17 className: 'number',18 variants: [19 {20 begin: LISP_SIMPLE_NUMBER_RE,21 relevance: 022 },23 { begin: '#(b|B)[0-1]+(/[0-1]+)?' },24 { begin: '#(o|O)[0-7]+(/[0-7]+)?' },25 { begin: '#(x|X)[0-9a-fA-F]+(/[0-9a-fA-F]+)?' },26 {27 begin: '#(c|C)\\(' + LISP_SIMPLE_NUMBER_RE + ' +' + LISP_SIMPLE_NUMBER_RE,28 end: '\\)'29 }30 ]31 };32 const STRING = hljs.inherit(hljs.QUOTE_STRING_MODE, { illegal: null });33 const COMMENT = hljs.COMMENT(34 ';', '$',35 { relevance: 0 }36 );37 const VARIABLE = {38 begin: '\\*',39 end: '\\*'40 };41 const KEYWORD = {42 className: 'symbol',43 begin: '[:&]' + LISP_IDENT_RE44 };45 const IDENT = {46 begin: LISP_IDENT_RE,47 relevance: 048 };49 const MEC = { begin: MEC_RE };50 const QUOTED_LIST = {51 begin: '\\(',52 end: '\\)',53 contains: [54 'self',55 LITERAL,56 STRING,57 NUMBER,58 IDENT59 ]60 };61 const QUOTED = {62 contains: [63 NUMBER,64 STRING,65 VARIABLE,66 KEYWORD,67 QUOTED_LIST,68 IDENT69 ],70 variants: [71 {72 begin: '[\'`]\\(',73 end: '\\)'74 },75 {76 begin: '\\(quote ',77 end: '\\)',78 keywords: { name: 'quote' }79 },80 { begin: '\'' + MEC_RE }81 ]82 };83 const QUOTED_ATOM = { variants: [84 { begin: '\'' + LISP_IDENT_RE },85 { begin: '#\'' + LISP_IDENT_RE + '(::' + LISP_IDENT_RE + ')*' }86 ] };87 const LIST = {88 begin: '\\(\\s*',89 end: '\\)'90 };91 const BODY = {92 endsWithParent: true,93 relevance: 094 };95 LIST.contains = [96 {97 className: 'name',98 variants: [99 {100 begin: LISP_IDENT_RE,101 relevance: 0,102 },103 { begin: MEC_RE }104 ]105 },106 BODY107 ];108 BODY.contains = [109 QUOTED,110 QUOTED_ATOM,111 LIST,112 LITERAL,113 NUMBER,114 STRING,115 COMMENT,116 VARIABLE,117 KEYWORD,118 MEC,119 IDENT120 ];121 122 return {123 name: 'Lisp',124 illegal: /\S/,125 contains: [126 NUMBER,127 hljs.SHEBANG(),128 LITERAL,129 STRING,130 COMMENT,131 QUOTED,132 QUOTED_ATOM,133 LIST,134 IDENT135 ]136 };137}138 139export { lisp as default };140 