--- a/ThirdParty/Pygments/pygments/lexers/c_like.py Sun Jan 24 16:15:58 2016 +0100 +++ b/ThirdParty/Pygments/pygments/lexers/c_like.py Sun Jan 24 19:28:37 2016 +0100 @@ -5,7 +5,7 @@ Lexers for other C-like languages. - :copyright: Copyright 2006-2014 by the Pygments team, see AUTHORS. + :copyright: Copyright 2006-2015 by the Pygments team, see AUTHORS. :license: BSD, see LICENSE for details. """ @@ -20,7 +20,7 @@ from pygments.lexers import _mql_builtins __all__ = ['PikeLexer', 'NesCLexer', 'ClayLexer', 'ECLexer', 'ValaLexer', - 'CudaLexer', 'SwigLexer', 'MqlLexer'] + 'CudaLexer', 'SwigLexer', 'MqlLexer', 'ArduinoLexer'] class PikeLexer(CppLexer): @@ -411,3 +411,131 @@ inherit, ], } + +class ArduinoLexer(CppLexer): + """ + For `Arduino(tm) <https://arduino.cc/>`_ source. + + This is an extension of the CppLexer, as the Arduino® Language is a superset + of C++ + + .. versionadded:: 2.1 + """ + + name = 'Arduino' + aliases = ['arduino'] + filenames = ['*.ino'] + mimetypes = ['text/x-arduino'] + + # Language constants + constants = set(('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')) + + # Language sketch main structure functions + structure = set(('setup', 'loop')) + + # Language variable types + storage = set(('boolean', 'const', 'byte', 'word', 'string', 'String', 'array')) + + # Language shipped functions and class ( ) + functions = set(('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', + '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', 'sizeof', 'setDNS', 'endSMS', 'getKey', 'micros', + 'millis', 'begin', 'print', 'write', 'ready', 'flush', 'width', + 'isPIN', 'blink', 'clear', 'press', 'mkdir', 'rmdir', 'close', + 'point', 'yield', 'image', 'float', 'BSSID', 'click', 'delay', + 'read', 'text', 'move', 'peek', 'beep', 'rect', 'line', 'open', + 'seek', 'fill', 'size', 'turn', 'stop', 'home', 'find', 'char', + 'byte', 'step', 'word', 'long', 'tone', 'sqrt', 'RSSI', 'SSID', + 'end', 'bit', 'tan', 'cos', 'sin', 'pow', 'map', 'abs', 'max', + 'min', 'int', 'get', 'run', 'put')) + + + def get_tokens_unprocessed(self, text): + for index, token, value in CppLexer.get_tokens_unprocessed(self, text): + if token is Name: + if value in self.constants: + yield index, Keyword.Constant, value + elif value in self.functions: + yield index, Name.Function, value + elif value in self.storage: + yield index, Keyword.Type, value + else: + yield index, token, value + elif token is Name.Function: + if value in self.structure: + yield index, Name.Other, value + else: + yield index, token, value + elif token is Keyword: + if value in self.storage: + yield index, Keyword.Type, value + else: + yield index, token, value + else: + yield index, token, value