-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathsmartbasic.sublime-syntax
80 lines (68 loc) · 9.29 KB
/
smartbasic.sublime-syntax
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
%YAML 1.2
---
# Sublime Text syntax file for SmartBASIC language
#
# SmartBASIC is an event-driven language made by Laird Connectivity for their
# family of embedded Bluetooth/BLE modules, e.g. BL65x, BT900, etc.
# See https://www.lairdconnect.com/wireless-modules/bluetooth-modules for details.
#
# This file was generated for BL654 with firmware version 29.5.7.2,
# but can also be used with other modules.
#
#
# See http://www.sublimetext.com/docs/3/syntax.html
# and https://www.sublimetext.com/docs/3/scope_naming.html
name: SmartBASIC
file_extensions: [sb, sblib]
scope: source.smartbasic
contexts:
main:
# Strings begin and end with quotes, and use backslashes as an escape
# character
- match: '"'
scope: punctuation.definition.string.begin.smartbasic
push: double_quoted_string
# Comments begin with a '//' and finish at the end of the line
- match: '//'
# scope: punctuation.definition.comment.smartbasic
scope: comment.line.smartbasic
push: line_comment
# Preprocessor: SmartBASIC preprocessor-like tokens
- match: "(?i)^\\s*(#)\\s*\\b(define|include|set|cmpif|cmpifand|if)\\b"
captures:
1: keyword.control.include.smartbasic
2: keyword.control.include.smartbasic
# Keywords1: SmartBASIC core tokens
- 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'
scope: keyword.control.conditional.smartbasic
# Keywords2: SmartBASIC functions
- 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'
scope: entity.name.function.smartbasic
# Keywords3: SmartBASIC function ending on '$'
- match: "(?i)\\b(LEFT|RIGHT|MID|STRESCAPE|STRESCAPEEX|SYSINFO|STRHEXIZE|STRDEHEXIZE|STRSPLITLEFT|VERBOSEERR|BLEGETADVERTISINGADDRESS|BLEGETDEVICENAME)\\b\\s*(\\$)\\s*"
captures:
1: entity.name.function.smartbasic
2: entity.name.function.smartbasic
# Keywords3: SmartBASIC subroutines
- 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'
scope: entity.name.function.smartbasic
# Keywords4: SmartBASIC event and message ids
- 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'
scope: constant.language.smartbasic
# Keywords4: SmartBASIC variable types
- match: '(?i)\b(STRING|INTEGER|FLOAT)\b'
scope: storage.type.smartbasic
# Numbers
- match: '\b(-)?[0-9.]+\b'
scope: constant.numeric.smartbasic
double_quoted_string:
- meta_scope: string.quoted.double.smartbasic
- match: '\\.'
scope: constant.character.escape.smartbasic
- match: '"'
scope: punctuation.definition.string.end.smartbasic
pop: true
line_comment:
- meta_scope: comment.line.smartbasic
- match: $
pop: true