|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function cPlusPlus(hljs) { |
|
const regex = hljs.regex; |
|
|
|
|
|
|
|
const C_LINE_COMMENT_MODE = hljs.COMMENT('//', '$', { contains: [ { begin: /\\\n/ } ] }); |
|
const DECLTYPE_AUTO_RE = 'decltype\\(auto\\)'; |
|
const NAMESPACE_RE = '[a-zA-Z_]\\w*::'; |
|
const TEMPLATE_ARGUMENT_RE = '<[^<>]+>'; |
|
const FUNCTION_TYPE_RE = '(?!struct)(' |
|
+ DECLTYPE_AUTO_RE + '|' |
|
+ regex.optional(NAMESPACE_RE) |
|
+ '[a-zA-Z_]\\w*' + regex.optional(TEMPLATE_ARGUMENT_RE) |
|
+ ')'; |
|
|
|
const CPP_PRIMITIVE_TYPES = { |
|
className: 'type', |
|
begin: '\\b[a-z\\d_]*_t\\b' |
|
}; |
|
|
|
|
|
|
|
const CHARACTER_ESCAPES = '\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)'; |
|
const STRINGS = { |
|
className: 'string', |
|
variants: [ |
|
{ |
|
begin: '(u8?|U|L)?"', |
|
end: '"', |
|
illegal: '\\n', |
|
contains: [ hljs.BACKSLASH_ESCAPE ] |
|
}, |
|
{ |
|
begin: '(u8?|U|L)?\'(' + CHARACTER_ESCAPES + '|.)', |
|
end: '\'', |
|
illegal: '.' |
|
}, |
|
hljs.END_SAME_AS_BEGIN({ |
|
begin: /(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/, |
|
end: /\)([^()\\ ]{0,16})"/ |
|
}) |
|
] |
|
}; |
|
|
|
const NUMBERS = { |
|
className: 'number', |
|
variants: [ |
|
{ begin: '\\b(0b[01\']+)' }, |
|
{ begin: '(-?)\\b([\\d\']+(\\.[\\d\']*)?|\\.[\\d\']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)' }, |
|
{ begin: '(-?)(\\b0[xX][a-fA-F0-9\']+|(\\b[\\d\']+(\\.[\\d\']*)?|\\.[\\d\']+)([eE][-+]?[\\d\']+)?)' } |
|
], |
|
relevance: 0 |
|
}; |
|
|
|
const PREPROCESSOR = { |
|
className: 'meta', |
|
begin: /#\s*[a-z]+\b/, |
|
end: /$/, |
|
keywords: { keyword: |
|
'if else elif endif define undef warning error line ' |
|
+ 'pragma _Pragma ifdef ifndef include' }, |
|
contains: [ |
|
{ |
|
begin: /\\\n/, |
|
relevance: 0 |
|
}, |
|
hljs.inherit(STRINGS, { className: 'string' }), |
|
{ |
|
className: 'string', |
|
begin: /<.*?>/ |
|
}, |
|
C_LINE_COMMENT_MODE, |
|
hljs.C_BLOCK_COMMENT_MODE |
|
] |
|
}; |
|
|
|
const TITLE_MODE = { |
|
className: 'title', |
|
begin: regex.optional(NAMESPACE_RE) + hljs.IDENT_RE, |
|
relevance: 0 |
|
}; |
|
|
|
const FUNCTION_TITLE = regex.optional(NAMESPACE_RE) + hljs.IDENT_RE + '\\s*\\('; |
|
|
|
|
|
const RESERVED_KEYWORDS = [ |
|
'alignas', |
|
'alignof', |
|
'and', |
|
'and_eq', |
|
'asm', |
|
'atomic_cancel', |
|
'atomic_commit', |
|
'atomic_noexcept', |
|
'auto', |
|
'bitand', |
|
'bitor', |
|
'break', |
|
'case', |
|
'catch', |
|
'class', |
|
'co_await', |
|
'co_return', |
|
'co_yield', |
|
'compl', |
|
'concept', |
|
'const_cast|10', |
|
'consteval', |
|
'constexpr', |
|
'constinit', |
|
'continue', |
|
'decltype', |
|
'default', |
|
'delete', |
|
'do', |
|
'dynamic_cast|10', |
|
'else', |
|
'enum', |
|
'explicit', |
|
'export', |
|
'extern', |
|
'false', |
|
'final', |
|
'for', |
|
'friend', |
|
'goto', |
|
'if', |
|
'import', |
|
'inline', |
|
'module', |
|
'mutable', |
|
'namespace', |
|
'new', |
|
'noexcept', |
|
'not', |
|
'not_eq', |
|
'nullptr', |
|
'operator', |
|
'or', |
|
'or_eq', |
|
'override', |
|
'private', |
|
'protected', |
|
'public', |
|
'reflexpr', |
|
'register', |
|
'reinterpret_cast|10', |
|
'requires', |
|
'return', |
|
'sizeof', |
|
'static_assert', |
|
'static_cast|10', |
|
'struct', |
|
'switch', |
|
'synchronized', |
|
'template', |
|
'this', |
|
'thread_local', |
|
'throw', |
|
'transaction_safe', |
|
'transaction_safe_dynamic', |
|
'true', |
|
'try', |
|
'typedef', |
|
'typeid', |
|
'typename', |
|
'union', |
|
'using', |
|
'virtual', |
|
'volatile', |
|
'while', |
|
'xor', |
|
'xor_eq' |
|
]; |
|
|
|
|
|
const RESERVED_TYPES = [ |
|
'bool', |
|
'char', |
|
'char16_t', |
|
'char32_t', |
|
'char8_t', |
|
'double', |
|
'float', |
|
'int', |
|
'long', |
|
'short', |
|
'void', |
|
'wchar_t', |
|
'unsigned', |
|
'signed', |
|
'const', |
|
'static' |
|
]; |
|
|
|
const TYPE_HINTS = [ |
|
'any', |
|
'auto_ptr', |
|
'barrier', |
|
'binary_semaphore', |
|
'bitset', |
|
'complex', |
|
'condition_variable', |
|
'condition_variable_any', |
|
'counting_semaphore', |
|
'deque', |
|
'false_type', |
|
'future', |
|
'imaginary', |
|
'initializer_list', |
|
'istringstream', |
|
'jthread', |
|
'latch', |
|
'lock_guard', |
|
'multimap', |
|
'multiset', |
|
'mutex', |
|
'optional', |
|
'ostringstream', |
|
'packaged_task', |
|
'pair', |
|
'promise', |
|
'priority_queue', |
|
'queue', |
|
'recursive_mutex', |
|
'recursive_timed_mutex', |
|
'scoped_lock', |
|
'set', |
|
'shared_future', |
|
'shared_lock', |
|
'shared_mutex', |
|
'shared_timed_mutex', |
|
'shared_ptr', |
|
'stack', |
|
'string_view', |
|
'stringstream', |
|
'timed_mutex', |
|
'thread', |
|
'true_type', |
|
'tuple', |
|
'unique_lock', |
|
'unique_ptr', |
|
'unordered_map', |
|
'unordered_multimap', |
|
'unordered_multiset', |
|
'unordered_set', |
|
'variant', |
|
'vector', |
|
'weak_ptr', |
|
'wstring', |
|
'wstring_view' |
|
]; |
|
|
|
const FUNCTION_HINTS = [ |
|
'abort', |
|
'abs', |
|
'acos', |
|
'apply', |
|
'as_const', |
|
'asin', |
|
'atan', |
|
'atan2', |
|
'calloc', |
|
'ceil', |
|
'cerr', |
|
'cin', |
|
'clog', |
|
'cos', |
|
'cosh', |
|
'cout', |
|
'declval', |
|
'endl', |
|
'exchange', |
|
'exit', |
|
'exp', |
|
'fabs', |
|
'floor', |
|
'fmod', |
|
'forward', |
|
'fprintf', |
|
'fputs', |
|
'free', |
|
'frexp', |
|
'fscanf', |
|
'future', |
|
'invoke', |
|
'isalnum', |
|
'isalpha', |
|
'iscntrl', |
|
'isdigit', |
|
'isgraph', |
|
'islower', |
|
'isprint', |
|
'ispunct', |
|
'isspace', |
|
'isupper', |
|
'isxdigit', |
|
'labs', |
|
'launder', |
|
'ldexp', |
|
'log', |
|
'log10', |
|
'make_pair', |
|
'make_shared', |
|
'make_shared_for_overwrite', |
|
'make_tuple', |
|
'make_unique', |
|
'malloc', |
|
'memchr', |
|
'memcmp', |
|
'memcpy', |
|
'memset', |
|
'modf', |
|
'move', |
|
'pow', |
|
'printf', |
|
'putchar', |
|
'puts', |
|
'realloc', |
|
'scanf', |
|
'sin', |
|
'sinh', |
|
'snprintf', |
|
'sprintf', |
|
'sqrt', |
|
'sscanf', |
|
'std', |
|
'stderr', |
|
'stdin', |
|
'stdout', |
|
'strcat', |
|
'strchr', |
|
'strcmp', |
|
'strcpy', |
|
'strcspn', |
|
'strlen', |
|
'strncat', |
|
'strncmp', |
|
'strncpy', |
|
'strpbrk', |
|
'strrchr', |
|
'strspn', |
|
'strstr', |
|
'swap', |
|
'tan', |
|
'tanh', |
|
'terminate', |
|
'to_underlying', |
|
'tolower', |
|
'toupper', |
|
'vfprintf', |
|
'visit', |
|
'vprintf', |
|
'vsprintf' |
|
]; |
|
|
|
const LITERALS = [ |
|
'NULL', |
|
'false', |
|
'nullopt', |
|
'nullptr', |
|
'true' |
|
]; |
|
|
|
|
|
const BUILT_IN = [ '_Pragma' ]; |
|
|
|
const CPP_KEYWORDS = { |
|
type: RESERVED_TYPES, |
|
keyword: RESERVED_KEYWORDS, |
|
literal: LITERALS, |
|
built_in: BUILT_IN, |
|
_type_hints: TYPE_HINTS |
|
}; |
|
|
|
const FUNCTION_DISPATCH = { |
|
className: 'function.dispatch', |
|
relevance: 0, |
|
keywords: { |
|
|
|
_hint: FUNCTION_HINTS }, |
|
begin: regex.concat( |
|
/\b/, |
|
/(?!decltype)/, |
|
/(?!if)/, |
|
/(?!for)/, |
|
/(?!switch)/, |
|
/(?!while)/, |
|
hljs.IDENT_RE, |
|
regex.lookahead(/(<[^<>]+>|)\s*\(/)) |
|
}; |
|
|
|
const EXPRESSION_CONTAINS = [ |
|
FUNCTION_DISPATCH, |
|
PREPROCESSOR, |
|
CPP_PRIMITIVE_TYPES, |
|
C_LINE_COMMENT_MODE, |
|
hljs.C_BLOCK_COMMENT_MODE, |
|
NUMBERS, |
|
STRINGS |
|
]; |
|
|
|
const EXPRESSION_CONTEXT = { |
|
|
|
|
|
|
|
variants: [ |
|
{ |
|
begin: /=/, |
|
end: /;/ |
|
}, |
|
{ |
|
begin: /\(/, |
|
end: /\)/ |
|
}, |
|
{ |
|
beginKeywords: 'new throw return else', |
|
end: /;/ |
|
} |
|
], |
|
keywords: CPP_KEYWORDS, |
|
contains: EXPRESSION_CONTAINS.concat([ |
|
{ |
|
begin: /\(/, |
|
end: /\)/, |
|
keywords: CPP_KEYWORDS, |
|
contains: EXPRESSION_CONTAINS.concat([ 'self' ]), |
|
relevance: 0 |
|
} |
|
]), |
|
relevance: 0 |
|
}; |
|
|
|
const FUNCTION_DECLARATION = { |
|
className: 'function', |
|
begin: '(' + FUNCTION_TYPE_RE + '[\\*&\\s]+)+' + FUNCTION_TITLE, |
|
returnBegin: true, |
|
end: /[{;=]/, |
|
excludeEnd: true, |
|
keywords: CPP_KEYWORDS, |
|
illegal: /[^\w\s\*&:<>.]/, |
|
contains: [ |
|
{ |
|
begin: DECLTYPE_AUTO_RE, |
|
keywords: CPP_KEYWORDS, |
|
relevance: 0 |
|
}, |
|
{ |
|
begin: FUNCTION_TITLE, |
|
returnBegin: true, |
|
contains: [ TITLE_MODE ], |
|
relevance: 0 |
|
}, |
|
|
|
|
|
{ |
|
begin: /::/, |
|
relevance: 0 |
|
}, |
|
|
|
{ |
|
begin: /:/, |
|
endsWithParent: true, |
|
contains: [ |
|
STRINGS, |
|
NUMBERS |
|
] |
|
}, |
|
|
|
|
|
{ |
|
relevance: 0, |
|
match: /,/ |
|
}, |
|
{ |
|
className: 'params', |
|
begin: /\(/, |
|
end: /\)/, |
|
keywords: CPP_KEYWORDS, |
|
relevance: 0, |
|
contains: [ |
|
C_LINE_COMMENT_MODE, |
|
hljs.C_BLOCK_COMMENT_MODE, |
|
STRINGS, |
|
NUMBERS, |
|
CPP_PRIMITIVE_TYPES, |
|
|
|
{ |
|
begin: /\(/, |
|
end: /\)/, |
|
keywords: CPP_KEYWORDS, |
|
relevance: 0, |
|
contains: [ |
|
'self', |
|
C_LINE_COMMENT_MODE, |
|
hljs.C_BLOCK_COMMENT_MODE, |
|
STRINGS, |
|
NUMBERS, |
|
CPP_PRIMITIVE_TYPES |
|
] |
|
} |
|
] |
|
}, |
|
CPP_PRIMITIVE_TYPES, |
|
C_LINE_COMMENT_MODE, |
|
hljs.C_BLOCK_COMMENT_MODE, |
|
PREPROCESSOR |
|
] |
|
}; |
|
|
|
return { |
|
name: 'C++', |
|
aliases: [ |
|
'cc', |
|
'c++', |
|
'h++', |
|
'hpp', |
|
'hh', |
|
'hxx', |
|
'cxx' |
|
], |
|
keywords: CPP_KEYWORDS, |
|
illegal: '</', |
|
classNameAliases: { 'function.dispatch': 'built_in' }, |
|
contains: [].concat( |
|
EXPRESSION_CONTEXT, |
|
FUNCTION_DECLARATION, |
|
FUNCTION_DISPATCH, |
|
EXPRESSION_CONTAINS, |
|
[ |
|
PREPROCESSOR, |
|
{ |
|
begin: '\\b(deque|list|queue|priority_queue|pair|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array|tuple|optional|variant|function)\\s*<(?!<)', |
|
end: '>', |
|
keywords: CPP_KEYWORDS, |
|
contains: [ |
|
'self', |
|
CPP_PRIMITIVE_TYPES |
|
] |
|
}, |
|
{ |
|
begin: hljs.IDENT_RE + '::', |
|
keywords: CPP_KEYWORDS |
|
}, |
|
{ |
|
match: [ |
|
|
|
/\b(?:enum(?:\s+(?:class|struct))?|class|struct|union)/, |
|
/\s+/, |
|
/\w+/ |
|
], |
|
className: { |
|
1: 'keyword', |
|
3: 'title.class' |
|
} |
|
} |
|
]) |
|
}; |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function arduino(hljs) { |
|
const ARDUINO_KW = { |
|
type: [ |
|
"boolean", |
|
"byte", |
|
"word", |
|
"String" |
|
], |
|
built_in: [ |
|
"KeyboardController", |
|
"MouseController", |
|
"SoftwareSerial", |
|
"EthernetServer", |
|
"EthernetClient", |
|
"LiquidCrystal", |
|
"RobotControl", |
|
"GSMVoiceCall", |
|
"EthernetUDP", |
|
"EsploraTFT", |
|
"HttpClient", |
|
"RobotMotor", |
|
"WiFiClient", |
|
"GSMScanner", |
|
"FileSystem", |
|
"Scheduler", |
|
"GSMServer", |
|
"YunClient", |
|
"YunServer", |
|
"IPAddress", |
|
"GSMClient", |
|
"GSMModem", |
|
"Keyboard", |
|
"Ethernet", |
|
"Console", |
|
"GSMBand", |
|
"Esplora", |
|
"Stepper", |
|
"Process", |
|
"WiFiUDP", |
|
"GSM_SMS", |
|
"Mailbox", |
|
"USBHost", |
|
"Firmata", |
|
"PImage", |
|
"Client", |
|
"Server", |
|
"GSMPIN", |
|
"FileIO", |
|
"Bridge", |
|
"Serial", |
|
"EEPROM", |
|
"Stream", |
|
"Mouse", |
|
"Audio", |
|
"Servo", |
|
"File", |
|
"Task", |
|
"GPRS", |
|
"WiFi", |
|
"Wire", |
|
"TFT", |
|
"GSM", |
|
"SPI", |
|
"SD" |
|
], |
|
_hints: [ |
|
"setup", |
|
"loop", |
|
"runShellCommandAsynchronously", |
|
"analogWriteResolution", |
|
"retrieveCallingNumber", |
|
"printFirmwareVersion", |
|
"analogReadResolution", |
|
"sendDigitalPortPair", |
|
"noListenOnLocalhost", |
|
"readJoystickButton", |
|
"setFirmwareVersion", |
|
"readJoystickSwitch", |
|
"scrollDisplayRight", |
|
"getVoiceCallStatus", |
|
"scrollDisplayLeft", |
|
"writeMicroseconds", |
|
"delayMicroseconds", |
|
"beginTransmission", |
|
"getSignalStrength", |
|
"runAsynchronously", |
|
"getAsynchronously", |
|
"listenOnLocalhost", |
|
"getCurrentCarrier", |
|
"readAccelerometer", |
|
"messageAvailable", |
|
"sendDigitalPorts", |
|
"lineFollowConfig", |
|
"countryNameWrite", |
|
"runShellCommand", |
|
"readStringUntil", |
|
"rewindDirectory", |
|
"readTemperature", |
|
"setClockDivider", |
|
"readLightSensor", |
|
"endTransmission", |
|
"analogReference", |
|
"detachInterrupt", |
|
"countryNameRead", |
|
"attachInterrupt", |
|
"encryptionType", |
|
"readBytesUntil", |
|
"robotNameWrite", |
|
"readMicrophone", |
|
"robotNameRead", |
|
"cityNameWrite", |
|
"userNameWrite", |
|
"readJoystickY", |
|
"readJoystickX", |
|
"mouseReleased", |
|
"openNextFile", |
|
"scanNetworks", |
|
"noInterrupts", |
|
"digitalWrite", |
|
"beginSpeaker", |
|
"mousePressed", |
|
"isActionDone", |
|
"mouseDragged", |
|
"displayLogos", |
|
"noAutoscroll", |
|
"addParameter", |
|
"remoteNumber", |
|
"getModifiers", |
|
"keyboardRead", |
|
"userNameRead", |
|
"waitContinue", |
|
"processInput", |
|
"parseCommand", |
|
"printVersion", |
|
"readNetworks", |
|
"writeMessage", |
|
"blinkVersion", |
|
"cityNameRead", |
|
"readMessage", |
|
"setDataMode", |
|
"parsePacket", |
|
"isListening", |
|
"setBitOrder", |
|
"beginPacket", |
|
"isDirectory", |
|
"motorsWrite", |
|
"drawCompass", |
|
"digitalRead", |
|
"clearScreen", |
|
"serialEvent", |
|
"rightToLeft", |
|
"setTextSize", |
|
"leftToRight", |
|
"requestFrom", |
|
"keyReleased", |
|
"compassRead", |
|
"analogWrite", |
|
"interrupts", |
|
"WiFiServer", |
|
"disconnect", |
|
"playMelody", |
|
"parseFloat", |
|
"autoscroll", |
|
"getPINUsed", |
|
"setPINUsed", |
|
"setTimeout", |
|
"sendAnalog", |
|
"readSlider", |
|
"analogRead", |
|
"beginWrite", |
|
"createChar", |
|
"motorsStop", |
|
"keyPressed", |
|
"tempoWrite", |
|
"readButton", |
|
"subnetMask", |
|
"debugPrint", |
|
"macAddress", |
|
"writeGreen", |
|
"randomSeed", |
|
"attachGPRS", |
|
"readString", |
|
"sendString", |
|
"remotePort", |
|
"releaseAll", |
|
"mouseMoved", |
|
"background", |
|
"getXChange", |
|
"getYChange", |
|
"answerCall", |
|
"getResult", |
|
"voiceCall", |
|
"endPacket", |
|
"constrain", |
|
"getSocket", |
|
"writeJSON", |
|
"getButton", |
|
"available", |
|
"connected", |
|
"findUntil", |
|
"readBytes", |
|
"exitValue", |
|
"readGreen", |
|
"writeBlue", |
|
"startLoop", |
|
"IPAddress", |
|
"isPressed", |
|
"sendSysex", |
|
"pauseMode", |
|
"gatewayIP", |
|
"setCursor", |
|
"getOemKey", |
|
"tuneWrite", |
|
"noDisplay", |
|
"loadImage", |
|
"switchPIN", |
|
"onRequest", |
|
"onReceive", |
|
"changePIN", |
|
"playFile", |
|
"noBuffer", |
|
"parseInt", |
|
"overflow", |
|
"checkPIN", |
|
"knobRead", |
|
"beginTFT", |
|
"bitClear", |
|
"updateIR", |
|
"bitWrite", |
|
"position", |
|
"writeRGB", |
|
"highByte", |
|
"writeRed", |
|
"setSpeed", |
|
"readBlue", |
|
"noStroke", |
|
"remoteIP", |
|
"transfer", |
|
"shutdown", |
|
"hangCall", |
|
"beginSMS", |
|
"endWrite", |
|
"attached", |
|
"maintain", |
|
"noCursor", |
|
"checkReg", |
|
"checkPUK", |
|
"shiftOut", |
|
"isValid", |
|
"shiftIn", |
|
"pulseIn", |
|
"connect", |
|
"println", |
|
"localIP", |
|
"pinMode", |
|
"getIMEI", |
|
"display", |
|
"noBlink", |
|
"process", |
|
"getBand", |
|
"running", |
|
"beginSD", |
|
"drawBMP", |
|
"lowByte", |
|
"setBand", |
|
"release", |
|
"bitRead", |
|
"prepare", |
|
"pointTo", |
|
"readRed", |
|
"setMode", |
|
"noFill", |
|
"remove", |
|
"listen", |
|
"stroke", |
|
"detach", |
|
"attach", |
|
"noTone", |
|
"exists", |
|
"buffer", |
|
"height", |
|
"bitSet", |
|
"circle", |
|
"config", |
|
"cursor", |
|
"random", |
|
"IRread", |
|
"setDNS", |
|
"endSMS", |
|
"getKey", |
|
"micros", |
|
"millis", |
|
"begin", |
|
"print", |
|
"write", |
|
"ready", |
|
"flush", |
|
"width", |
|
"isPIN", |
|
"blink", |
|
"clear", |
|
"press", |
|
"mkdir", |
|
"rmdir", |
|
"close", |
|
"point", |
|
"yield", |
|
"image", |
|
"BSSID", |
|
"click", |
|
"delay", |
|
"read", |
|
"text", |
|
"move", |
|
"peek", |
|
"beep", |
|
"rect", |
|
"line", |
|
"open", |
|
"seek", |
|
"fill", |
|
"size", |
|
"turn", |
|
"stop", |
|
"home", |
|
"find", |
|
"step", |
|
"tone", |
|
"sqrt", |
|
"RSSI", |
|
"SSID", |
|
"end", |
|
"bit", |
|
"tan", |
|
"cos", |
|
"sin", |
|
"pow", |
|
"map", |
|
"abs", |
|
"max", |
|
"min", |
|
"get", |
|
"run", |
|
"put" |
|
], |
|
literal: [ |
|
"DIGITAL_MESSAGE", |
|
"FIRMATA_STRING", |
|
"ANALOG_MESSAGE", |
|
"REPORT_DIGITAL", |
|
"REPORT_ANALOG", |
|
"INPUT_PULLUP", |
|
"SET_PIN_MODE", |
|
"INTERNAL2V56", |
|
"SYSTEM_RESET", |
|
"LED_BUILTIN", |
|
"INTERNAL1V1", |
|
"SYSEX_START", |
|
"INTERNAL", |
|
"EXTERNAL", |
|
"DEFAULT", |
|
"OUTPUT", |
|
"INPUT", |
|
"HIGH", |
|
"LOW" |
|
] |
|
}; |
|
|
|
const ARDUINO = cPlusPlus(hljs); |
|
|
|
const kws = (ARDUINO.keywords); |
|
|
|
kws.type = [ |
|
...kws.type, |
|
...ARDUINO_KW.type |
|
]; |
|
kws.literal = [ |
|
...kws.literal, |
|
...ARDUINO_KW.literal |
|
]; |
|
kws.built_in = [ |
|
...kws.built_in, |
|
...ARDUINO_KW.built_in |
|
]; |
|
kws._hints = ARDUINO_KW._hints; |
|
|
|
ARDUINO.name = 'Arduino'; |
|
ARDUINO.aliases = [ 'ino' ]; |
|
ARDUINO.supersetOf = "cpp"; |
|
|
|
return ARDUINO; |
|
} |
|
|
|
export { arduino as default }; |
|
|