В моей программе я использую функцию Format()
- с ' SymbolInfo ', которая возвращает информацию о символах в строке JSON:
Dim json_text = Format(file_name & "|Global+Tokens", "SymbolInfo")
Итак, json_text
выглядит как
{"target":"*sr:\\test",
"symbol_kind":"Global+Tokens",
"module_kind":"Macro",
"module_name":"*sr:\\test",
"user_defined":true,
"last_read_error":"",
"known":true,
"language":0,
"loaded":false,
"revision":1,
"hidden_len":0,
"hidden_lines":0,
"visible_len":125,
"visible_lines":10,
"tokens":[
{"token":"...","at":[first,line,column,length,depth,back,count]},...]
Теперь я хотел бы понять значение глубины. К сожалению, у меня нет кода метода SymbolInfo
и т. Д.
Я уже пробовал следующий простой пример:
'#Language "WWB.NET"
Sub Main()
Analyze "*sr:\test"
End Sub
Private Sub Analyze(file_name As String)
'Get the json containing the tokens information
Dim json_text = Format(file_name & "|Global+Tokens", "SymbolInfo")
Debug.Print json_text
End Sub
Файл sr: \ test
True = True
Class abc
True = True
End Class
Function test1
True = True
True = True
True = True
End Function
Debug.Print json_text
{"target":"*sr:\\test",
"symbol_kind":"Global+Tokens",
"module_kind":"Macro",
"module_name":"*sr:\\test",
"user_defined":true,
"last_read_error":"",
"known":true,
"language":0,
"loaded":false,
"revision":1,
"hidden_len":0,
"hidden_lines":0,
"visible_len":125,
"visible_lines":10,
"tokens":[
{"token":"True",
"at":[0,1,0,4,6,0,4]},
{"token":"=",
"at":[5,1,5,1,6,-1,4]},
{"token":"True",
"at":[7,1,7,4,6,-2,4]},
{"token":"~eol",
"at":[11,1,11,0,6,-3,4]},
{"token":"~eol",
"at":[13,2,0,0,4,-4,31]},
{"token":"Class",
"at":[15,3,0,5,5,0,9]},
{"token":"~id",
"at":[21,3,6,3,6,0,1]},
{"token":"~eol",
"at":[24,3,9,0,5,-2,9]},
{"token":"True",
"at":[27,4,1,4,7,0,4]},
{"token":"=",
"at":[32,4,6,1,7,-1,4]},
{"token":"True",
"at":[34,4,8,4,7,-2,4]},
{"token":"~eol",
"at":[38,4,12,0,7,-3,4]},
{"token":"End Class",
"at":[40,5,0,3,5,-7,9]},
{"token":"~eol",
"at":[49,5,9,0,5,-8,9]},
{"token":"Function",
"at":[51,6,0,8,5,0,17]},
{"token":"~id",
"at":[60,6,9,4,6,0,1]},
{"token":"~eol",
"at":[64,6,13,0,5,-2,17]},
{"token":"True",
"at":[67,7,1,4,12,0,1]},
{"token":"=",
"at":[72,7,6,1,9,-1,3]},
{"token":"True",
"at":[74,7,8,4,14,0,1]},
{"token":"~eol",
"at":[78,7,12,0,7,-3,4]},
{"token":"True",
"at":[82,8,2,4,12,0,1]},
{"token":"=",
"at":[87,8,7,1,9,-1,3]},
{"token":"True",
"at":[89,8,9,4,14,0,1]},
{"token":"~eol",
"at":[93,8,13,0,7,-3,4]},
{"token":"True",
"at":[98,9,3,4,12,0,1]},
{"token":"=",
"at":[103,9,8,1,9,-1,3]},
{"token":"True",
"at":[105,9,10,4,14,0,1]},
{"token":"~eol",
"at":[109,9,14,0,7,-3,4]},
{"token":"End Function",
"at":[111,10,0,3,5,-15,17]},
{"token":"~eol",
"at":[123,10,12,0,5,-16,17]}]}
Например, я запутался, потому что, если я посмотрю на True=True
, я получу другие (не согласованные?) Результаты:
Если «True = True
» находится за пределами «Класс - Конечный класс» / «Функция - Конечная функция» -> глубина: 6-6-6
Если «True = True
» находится внутри «Класс - Класс конца» -> глубина: 7-7-7
Если «True = True
» находится внутри «Функция - Конечная функция» -> глубина: 12-9-14