#脚本语言 #语言服务器 #实验性 #协议 #文档 #quick-bms

nightly bin+lib quickbms-lsp

为 QuickBMS 脚本语言提供的实验性语言服务器协议

3 个不稳定版本

0.1.1 2021 年 5 月 21 日
0.1.0 2021 年 5 月 17 日
0.0.1 2021 年 5 月 8 日

430 in 文本编辑器

MIT 许可证

135KB
4K SLoC

C 3.5K SLoC Rust 553 SLoC // 0.1% comments Shell 18 SLoC

QuickBMS-lsp quickbms-lsp

这是一个为脚本语言 QuickBMS 提供的实验性语言服务器。

An example of the hover documentation for the "print" keyword being shown in Visual Studio Code for a hello world program.

An example of the goto references function for a "GreetWorld" function being shown in Visual Studio Code for a functions example script.

语言服务器端点

以下是当前支持的语言服务器端点。

  • initialize
  • textDocument/didOpen
  • textDocument/didChange
  • textDocument/documentSymbol
  • textDocument/hover
  • textDocument/definition
  • textDocument/references
    • 目前仅支持函数

QuickBMS 命令

以下 QuickBMS 命令目前由语言服务器支持。

  • QuickBMSverVERSION
  • FindLocVAR TYPE STRING [FILENUM] [ERR_VALUE] [END_OFF]
  • For[VAR] [OP] [VALUE] [COND] [VAR]
  • Next[VAR] [OP] [VALUE]
  • GetVAR TYPE [FILENUM] [OFFSET]
  • GetDStringVAR LENGTH [FILENUM]
  • GoToOFFSET [FILENUM] [TYPE]
  • IDString[FILENUM] STRING
  • LogNAME OFFSET SIZE [FILENUM] [XSIZE]
  • ClogNAME OFFSET ZSIZE SIZE [FILENUM] [XSIZE]
  • MathVAR OP VAR
  • XMathVAR INSTR
  • OpenFOLDER NAME [FILENUM] [EXISTS]
  • SavePosVAR [FILENUM]
  • SetVAR [TYPE] VAR
  • Do
  • WhileVAR COND VAR
  • String VAR OP VAR
  • CleanExit
  • IfVAR COND VAR [...]
    • 支持所有比较运算符
  • [ElifVAR COND VAR]
  • [Else]
  • EndIf
  • GetCTVAR TYPE CHAR [FILENUM]
  • ComTypeALGO [DICT] [DICT_SIZE]
  • ReverseShortVAR [ENDIAN]
  • ReverseLongVAR [ENDIAN]
  • ReverseLongLongVAR [ENDIAN]
  • EndianTYPE [VAR]
  • FileXORSEQ [OFFSET] [FILENUM]
  • FileRotSEQ [OFFSET] [FILENUM]
  • FileCryptSEQ [OFFSET] [FILENUM]
  • StrlenVAR VAR [SIZE]
  • GetVarChrVAR VAR OFFSET [TYPE]
  • PutVarChrVAR OFFSET VAR [TYPE]
  • Debug[MODE]
  • PaddingVAR [FILENUM] [BASE_OFF]
  • Append[DIRECTION]
  • EncryptionALGO KEY [IVEC] [MODE] [KEYLEN]
  • PrintMESSAGE
  • GetArrayVAR ARRAY VAR_IDX
  • PutArrayARRAY VAR_IDX VAR
  • SortArrayARRAY [ALL]
  • SearchArrayVAR ARRAY VAR
  • CallFunctionNAME [KEEP_VAR] [ARG1] [ARG2] ... [ARGn]
  • StartFunctionNAME
  • EndFunction
  • ScanDirPATH NAME SIZE [FILTER]
  • CallDLLDLLNAME FUNC/OFF CONV RET [ARG1] [ARG2] ... [ARGn]
  • PutVAR TYPE [FILENUM]
  • PutDStringVAR LENGTH [FILENUM]
  • PutCTVAR TYPE CHAR [FILENUM]
  • GetBitsVAR BITS [FILENUM]
  • PutBitsVAR BITS [FILENUM]
  • IncludeFILENAME
  • NameCRCVAR CRC [LISTFILE] [TYPE] [POLYNOMIAL] [PARAMETERS]
  • CodepageVAR
  • 系统日志NAME OFFSET SIZE [TYPE] [FILENUM] [标签]
  • 重新导入[MODE]
  • 标签NAME
  • 中断[NAME]
  • 继续[NAME]

依赖项

~6-8.5MB
~185K SLoC