|
| 1 | +%YAML 1.2 |
| 2 | +--- |
| 3 | +# Sublime Text syntax file for SmartBASIC language |
| 4 | +# |
| 5 | +# SmartBASIC is an event-driven language made by Laird Connectivity for their |
| 6 | +# family of embedded Bluetooth/BLE modules, e.g. BL65x, BT900, etc. |
| 7 | +# See https://www.lairdconnect.com/wireless-modules/bluetooth-modules for details. |
| 8 | +# |
| 9 | +# This file was generated for BL654 with firmware version 29.5.7.2, |
| 10 | +# but can also be used with other modules. |
| 11 | +# |
| 12 | +# |
| 13 | +# See http://www.sublimetext.com/docs/3/syntax.html |
| 14 | +# and https://www.sublimetext.com/docs/3/scope_naming.html |
| 15 | +name: SmartBASIC |
| 16 | +file_extensions: [sb, sblib] |
| 17 | +scope: source.smartbasic |
| 18 | + |
| 19 | +contexts: |
| 20 | + main: |
| 21 | + # Strings begin and end with quotes, and use backslashes as an escape |
| 22 | + # character |
| 23 | + - match: '"' |
| 24 | + scope: punctuation.definition.string.begin.smartbasic |
| 25 | + push: double_quoted_string |
| 26 | + |
| 27 | + # Comments begin with a '//' and finish at the end of the line |
| 28 | + - match: '//' |
| 29 | +# scope: punctuation.definition.comment.smartbasic |
| 30 | + scope: comment.line.smartbasic |
| 31 | + push: line_comment |
| 32 | + |
| 33 | + # Preprocessor: SmartBASIC preprocessor-like tokens |
| 34 | + - match: "(?i)^\\s*(#)\\s*\\b(define|include|set|cmpif|if)\\b" |
| 35 | + captures: |
| 36 | + 1: keyword.control.include.smartbasic |
| 37 | + 2: keyword.control.include.smartbasic |
| 38 | + |
| 39 | + # Keywords1: SmartBASIC core tokens |
| 40 | + - match: '(?i)\b(integer.h|integer.o|integer.b|AS|BP|DO|IF|TO|DIM|FOR|CALL|CASE|ELSE|LONG|NEXT|REDO|STEP|STOP|THEN|BREAK|BYREF|BYVAL|ENDIF|PRINT|ULONG|UNTIL|WHILE|DOWNTO|ELSEIF|SUB|FUNCTION|ENDSUB|SELECT|SPRINT|DISABLE|DOWHILE|ENDFUNC|EXITSUB|ONERROR|ONEVENT|CONTINUE|ENDWHILE|EXITFUNC|ENDSELECT|WAITEVENT|THROWEVENT|ONFATALERROR)\b' |
| 41 | + scope: keyword.control.conditional.smartbasic |
| 42 | + |
| 43 | + # Keywords2: SmartBASIC functions |
| 44 | + - match: '(?i)\b(STRLEN|GETLASTERROR|STRPOS|MIN|MAX|ABS|STRCMP|STRVALDEC|STRGETCHR|STRSETCHR|STRSETBLOCK|TABLEINIT|TABLEADD|TABLELOOKUP|NVRECORDGET|NVRECORDGETEX|NVRECORDSET|STRFILL|SYSINFO|EXITCODE|STRHEX2BIN|STRSUM|STRXOR|CIRCBUFCREATE|CIRCBUFWRITE|CIRCBUFOVERWRITE|CIRCBUFREAD|CIRCBUFITEMS|EXTRACTSTRTOKEN|EXTRACTINTTOKEN|NVCFGKEYGET|NVCFGKEYSET|TIMERRUNNING|TIMERIOCTL|UARTOPEN|UARTINFO|UARTWRITE|UARTREAD|UARTREADN|UARTREADMATCH|UARTGETCTS|UARTCLOSEEX|FOPEN|FSEEK|FTELL|FILELEN|FREAD|FREADUNTIL|EXTRACTFLOATTOKEN|EXP|LOG|LOG10|SQRT|SIN|COS|TAN|ASIN|ACOS|ATAN|CEIL|FLOOR|FABS|FMOD|ISNAN|ISINF|ISFINITE|SINH|COSH|TANH|ASINH|ACOSH|ATANH|POW|ROUND|PI|STRENCODE8|STRDECODES8|STRDECODEU8|STRENCODE16|STRDECODES16|STRDECODEU16|STRENCODE24|STRDECODES24|STRDECODEU24|STRENCODE32|STRDECODE32|STRENCODEFLOATEX|STRDECODEFLOATEX|STRENCODESFLOATEX|STRDECODESFLOATEX|STRENCODESFLOATI|STRENCODETIMESTAMP|STRDECODETIMESTAMP|STRENCODEBITS|STRDECODEBITS|STRENCODESTRING|STRDECODESTRING|STRENCODEFLOAT|STRDECODEFLOAT|QSPIACTIVECONFIGGET|SETPWRSUPPLYTHRESHMV|SYSTEMSTATESET|READPWRSUPPLYMV|ERASEFILESYSTEM|SETREGOUT0|GETREGOUT0|SENDMSGAPP|RAND|RANDEX|GETTICKCOUNT|GETTICKSINCE|UARTIOCTL|BLESETADDRESSTYPE|BLESETADDRESSTYPEEX|BLEGAPSVCINIT|BLEADVRPTINIT|BLESCANRPTINIT|BLESETCURCONNPARMS|BLEGETCURCONNPARMS|BLEGETCURCONNSECINFO|BLEOVERWRITEBOND|BLEATTRMETADATA|BLEATTRMETADATAEX|BLECHARNEW|BLECHARDESCUSERDESC|BLECHARDESCPRSTNFRMT|BLECHARDESCADD|BLECHARCOMMIT|BLESERVICENEW|BLESERVICECOMMIT|BLESVCADDINCLUDESVC|BLEAUTHORIZECHAR|BLEAUTHORIZEDESC|BLECHARVALUEWRITE|BLECHARVALUENOTIFY|BLECHARVALUEINDICATE|BLECHARVALUEREAD|BLECHARDESCREAD|BLEENCODE8|BLEDECODES8|BLEDECODEU8|BLEENCODE16|BLEDECODES16|BLEDECODEU16|BLEENCODE24|BLEDECODES24|BLEDECODEU24|BLEENCODE32|BLEDECODE32|BLEENCODEFLOAT|BLEDECODEFLOAT|BLEENCODESFLOAT|BLEENCODESFLOATEX|BLEDECODESFLOAT|BLEENCODETIMESTAMP|BLEDECODETIMESTAMP|BLEENCODEBITS|BLEDECODEBITS|BLEENCODESTRING|BLEDECODESTRING|BLEHANDLEUUID16|BLEHANDLEUUID128|BLEUUIDFROMHANDLE|BLEHANDLEUUIDSIBLING|BLEADVRPTADDUUID128|BLEGETADBYINDEX|BLEGETADBYTAG|BLESERVICECHANGEDNTFY|BLEGETCONNHANDLEFROMADDR|BLEGETADDRFROMCONNHANDLE|BLEGETCONNHANDLEFROMRESOLVEDADDR|BLEGETRESOLVEDADDRFROMCONNHANDLE|BLEADVRPTADDUUID16|BLEADVRPTSCOMMIT|BLESVCREGDEVINFO|BLECONNMNGRUPDCFG|BLESECMNGRJUSTWORKSCONF|BLESECMNGRKEYSIZES|BLESECMNGRIOCAP|BLESECMNGRBONDREQ|BLESECMNGRPAIRCONF|BLESECMNGRAUTHFAILPREF|BLESECMNGRLESCPAIRINGPREF|BLESECMNGRLESCKEYPRESSENABLE|BLESECMNGRLESCKEYPRESSNOTIFY|BLEADVRPTAPPENDAD|BLEADVERTCONFIG|BLEADVERTSTART|BLEADVERTSTOP|BLEAUTHENTICATE|BLEPAIR|BLEPAIREX|BLEPAIRINGINFO|BLEPAIRINGRESPONSE|BLEENCRYPTCONNECTION|BLETXPOWERSET|BLETXPWRWHILEPAIRING|BLETXPOWERGET|BLESECMNGRPASSKEY|BLEACCEPTPAIRING|BLEDISCONNECT|BLEADVRPTGETSPACE|BLESVCCOMMIT|BLESECMNGROOBKEY|BLESECMNGROOBPREF|BLESECMNGROOBAVAILABLE|BLESECMNGRLESCOWNOOBDATAGET|BLESECMNGRLESCPEEROOBDATASET|BLEVSPOPEN|BLEVSPOPENEX|BLEVSPINFO|BLEVSPWRITE|BLEVSPREAD|BLEGATTCOPEN|BLEDISCSERVICEFIRST|BLEDISCSERVICENEXT|BLEDISCCHARFIRST|BLEDISCCHARNEXT|BLEDISCDESCFIRST|BLEDISCDESCNEXT|BLEGATTCFINDCHAR|BLEGATTCFINDDESC|BLEGATTCREAD|BLEGATTCREADDATA|BLEGATTCWRITE|BLEGATTCWRITECMD|BLEGATTCNOTIFYREAD|BLECONNECTCONFIG|BLECONNECT|BLECONNECTCANCEL|BLESCANCONFIG|BLESCANSTART|BLESCANFLUSH|BLESCANABORT|BLESCANSTOP|BLESCANGETADVREPORT|BLESCANGETPAGERADDR|BLESCANGETADVREPORTEX|BLEBONDINGSTATS|BLEBONDINGERASEKEY|BLEBONDINGERASEALL|BLEBONDINGPERSISTKEY|BLEBONDINGISTRUSTED|BLEBONDMNGRGETINFO|BLEBONDMNGRERASE|BLEBONDINGADDLESC|BLEBONDINGLOADCCCDS|BLEBONDINGSAVECCCDS|BLEBONDINGGETBYADDRLESC|BLEBONDINGGETBYEDIVLESC|BLEBONDINGGETLESC|BLEWHITELISTCREATE|BLEWHITELISTCLEAR|BLEWHITELISTADDADDR|BLEWHITELISTADDINDEX|BLEWHITELISTINFO|BLEWHITELISTSETFILTER|I2COPEN|I2COPENEX|I2CWRITEREAD|I2CWRITEREG8|I2CWRITEREG16|I2CWRITEREG32|I2CREADREG8|I2CREADREG16|I2CREADREG32|SPIOPEN|SPIREADWRITE|SPIWRITE|SPIREAD|QSPIOPEN|QSPICLOSE|QSPICONFIGSET|QSPICONFIGGET|QSPIWRITE|QSPIREAD|QSPIERASE|QSPICUSTOMCOMMAND|QSPISETPOWERMODE|QSPIINFO|QSPIMEMORYSIZE|QSPIISBUSY|QSPIDPMSET|QSPIISDPM|QSPIRESET|CRC16GENERATE|CRC32GENERATE|HASHGENERATE|AESSETKEYIV|AESENCRYPT|AESDECRYPT|ECCGENERATEPUBPRVKEYS|ECCCALCSHAREDSECRET|ECCHMACSHA256|GPIOCONFIGPWM|GPIOSETFUNC|GPIOREAD|GPIOBINDEVENT|GPIOUNBINDEVENT|GPIOASSIGNEVENT|GPIOUNASSIGNEVENT|GPIOSETFUNCEX|BLECONNRSSISTART|BLECONNRSSISTOP|FLASHOPEN|FLASHREAD|FLASHWRITE|FLASHERASE|NFCHARDWARESTATE|NFCOPEN|NFCFIELDSENSE|NFCNDEFMSGNEW|NFCNDEFMSGDELETE|NFCNDEFMSGCOMMIT|NFCNDEFMSGGETINFO|NFCNDEFMSGRESET|NFCNDEFRECADDLEOOB|NFCNDEFRECADDGENERIC|BLEMAXPACKETLENGTHGET|BLEGATTCATTRIBUTEMTUREQUEST|BLEGATTCWRITEPREPARE|BLEGATTCWRITEEXEC|BLEPINGAUTHTIMEOUT|BLECHARVALUEWRITEEX|BLECHANNELMAP|BLEGETCHANNELMAP|SPISLAVEOPEN|SPISLAVECLOSE|SPISLAVETXBUFFERWRITE|SPISLAVERXBUFFERREAD|SPISLAVECONFIG|AUXOPEN|AUXINFO|AUXWRITE|AUXREAD|AUXREADN|AUXREADMATCH|AUXGETCTS|AUXCLOSEEX|AUXIOCTL|WDTSTART|WDTRESET|WDTISRUNNING|BLEPHYSET|BLEADVSETCREATE|BLEADVSETNEWDATA|BLEADVSETSTART|BLEADVSETSTOP|BLESCANSTARTEX|BLEEXTRPTMETADATA|BLECONNECTEXTENDED|BLEEXTADVRPTAPPENDAD|BLEEXTADVRPTGETSPACE|BLEEXTADVRPTADDUUID16|BLEEXTADVRPTADDUUID128|BLEPAIRINGSTATICPASSKEY)\b' |
| 45 | + scope: entity.name.function.smartbasic |
| 46 | + |
| 47 | + # Keywords3: SmartBASIC function ending on '$' |
| 48 | + - match: "(?i)\\b(LEFT|RIGHT|MID|STRESCAPE|STRESCAPEEX|SYSINFO|STRHEXIZE|STRDEHEXIZE|STRSPLITLEFT|VERBOSEERR|BLEGETADVERTISINGADDRESS|BLEGETDEVICENAME)\\b\\s*(\\$)\\s*" |
| 49 | + captures: |
| 50 | + 1: entity.name.function.smartbasic |
| 51 | + 2: entity.name.function.smartbasic |
| 52 | + |
| 53 | + # Keywords3: SmartBASIC subroutines |
| 54 | + - match: '(?i)\b(RESETLASTERROR|STRDEESCAPE|STRSHIFTLEFT|CIRCBUFDESTROY|STRMOVE|STREXCHANGE|TIMERSTART|TIMERCANCEL|UARTCLOSE|UARTSETRTS|UARTBREAK|UARTFLUSH|FCLOSE|BLECONFIGDCDC|BLECONFIGHFCLOCK|BLEVSPCLOSE|BLEVSPFLUSH|BLEVSPUARTBRIDGE|BLEGATTCCLOSE|SPICLOSE|GPIOWRITE|AUXCLOSE|AUXSETRTS|AUXBREAK|AUXFLUSH|RESET|ASSERTBL652|ASSERTBL653|ASSERTBL654|RANDSEED|BLEWHITELISTDESTROY|I2CCLOSE|FLASHCLOSE|NFCCLOSE)\b' |
| 55 | + scope: entity.name.function.smartbasic |
| 56 | + |
| 57 | + # Keywords4: SmartBASIC event and message ids |
| 58 | + - match: '(?i)\b(EVTMR0|EVTMR1|EVTMR2|EVTMR3|EVTMR4|EVTMR5|EVTMR6|EVTMR7|EVAUXRX|EVVSPRX|EVAUXCTS|EVUARTRX|EVUARTCTS|EVAUXBREAK|EVGPIOCHAN0|EVGPIOCHAN1|EVGPIOCHAN2|EVGPIOCHAN3|EVGPIOCHAN4|EVGPIOCHAN5|EVGPIOCHAN6|EVGPIOCHAN7|EVNOTIFYBUF|EVUARTBREAK|EVVSPRXOVRN|EVATTRNOTIFY|EVAUXTXEMPTY|EVVSPTXEMPTY|EVDETECTCHAN0|EVUARTTXEMPTY|EVBLE_ADV_REPORT|EVBLE_FAST_PAGED|EVBLE_ADV_TIMEOUT|EVBLE_EXTADVNOMEM|EVBLE_CONN_TIMEOUT|EVBLE_SCAN_ABORTED|EVBLE_SCAN_TIMEOUT|EVBLE_EXTADVDROPPED|EVNFC|EVBLEMSG|EVDISCON|EVMSGAPP|EVAUTHVAL|EVCHARHVC|EVCHARVAL|EVATTRREAD|EVAUTHCCCD|EVAUTHDESC|EVAUTHSCCD|EVCHARCCCD|EVCHARDESC|EVCHARSCCD|EVCONNRSSI|EVDISCCHAR|EVDISCDESC|EVFINDCHAR|EVFINDDESC|EVATTRWRITE|EVAUTHVALEX|EVCHARVALUE|EVGATTCTOUT|EVQSPIERASED|EVBLEAUTHINFO|EVBLE_AUTHKEY|EVBLE_PASSKEY|EVDISCPRIMSVC|EVATTRIBUTEMTU|EVATTRNOTIFYEX|EVCONNPARAMREQ|EVLESCKEYPRESS|EVPACKETLENGTH|EVSPISLAVETXRX|EVBLESECREQUEST|EVBLE_EXTADV_END|EVBLE_EXTADV_RPT|EVBLE_EXTSCN_RPT|EVTXPOWERLIMITED|EVBLE_PHY_REQUEST|EVBLE_PHY_UPDATED|EVBLEOVERWRITEBOND|EVPACKETLENGTHLIMITED|EVSPISLAVERXBUFFERFULL|EVBLE_PING_AUTH_TIMEOUT|EVSPISLAVETXBUFFEREMPTY|EVSPISLAVEBUFFERCONFIGURED|EVBLE_EXTADV_RPT_INCOMPLETE)\b' |
| 59 | + scope: constant.language.smartbasic |
| 60 | + |
| 61 | + # Keywords4: SmartBASIC variable types |
| 62 | + - match: '(?i)\b(STRING|INTEGER|FLOAT)\b' |
| 63 | + scope: storage.type.smartbasic |
| 64 | + |
| 65 | + # Numbers |
| 66 | + - match: '\b(-)?[0-9.]+\b' |
| 67 | + scope: constant.numeric.smartbasic |
| 68 | + |
| 69 | + double_quoted_string: |
| 70 | + - meta_scope: string.quoted.double.smartbasic |
| 71 | + - match: '\\.' |
| 72 | + scope: constant.character.escape.smartbasic |
| 73 | + - match: '"' |
| 74 | + scope: punctuation.definition.string.end.smartbasic |
| 75 | + pop: true |
| 76 | + |
| 77 | + line_comment: |
| 78 | + - meta_scope: comment.line.smartbasic |
| 79 | + - match: $ |
| 80 | + pop: true |
0 commit comments