-
-
Save zurk/8f7dd974347925ae62c31d9441491613 to your computer and use it in GitHub Desktop.
Example for bblfsh identifiers with empty tokens.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import lib1 | |
import lib2.lib21 | |
import lib3 as lib3_alias | |
from lib4 import lib41 | |
from lib5.lib51 import lib511 | |
from lib6 import lib61 as lib611 | |
var1 = None | |
var2 = None | |
class class1: | |
var11 = None | |
def __init__(self): | |
self.var101 = None | |
def func11(self): | |
class1.var111 = None | |
self.var112 = None | |
var113 = None | |
def func12(): | |
def func121(): | |
pass | |
class class2: | |
var21 = None | |
def func21(self): | |
None | |
def func22(self, arg1): | |
None | |
def func23(): | |
None | |
class class3: | |
pass |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<lib1>: ['IMPORT', 'PATHNAME', 'IDENTIFIER'] | |
<lib2.lib21>: ['IMPORT', 'PATHNAME', 'IDENTIFIER'] | |
<lib3>: ['IMPORT', 'PATHNAME', 'IDENTIFIER'] | |
<lib3_alias>: ['IMPORT', 'ALIAS', 'IDENTIFIER'] | |
<lib4>: ['IMPORT', 'PATHNAME', 'IDENTIFIER'] | |
<lib41>: ['IMPORT', 'PATHNAME', 'IDENTIFIER'] | |
<lib5.lib51>: ['IMPORT', 'PATHNAME', 'IDENTIFIER'] | |
<lib511>: ['IMPORT', 'PATHNAME', 'IDENTIFIER'] | |
<lib6>: ['IMPORT', 'PATHNAME', 'IDENTIFIER'] | |
<lib61>: ['IMPORT', 'PATHNAME', 'IDENTIFIER'] | |
<lib611>: ['IMPORT', 'ALIAS', 'IDENTIFIER'] | |
<var1>: ['LEFT', 'IDENTIFIER', 'EXPRESSION'] | |
<var2>: ['LEFT', 'IDENTIFIER', 'EXPRESSION'] | |
<class1>: ['ENTRY', 'DECLARATION', 'IDENTIFIER', 'STATEMENT'] | |
<var11>: ['LEFT', 'IDENTIFIER', 'EXPRESSION'] | |
<__init__>: ['FUNCTION', 'DECLARATION', 'NAME', 'IDENTIFIER'] | |
<>: ['FUNCTION', 'DECLARATION', 'ARGUMENT', 'NAME', 'IDENTIFIER'] | |
<self>: ['FUNCTION', 'DECLARATION', 'ARGUMENT', 'NAME', 'IDENTIFIER'] | |
<var101>: ['IDENTIFIER', 'EXPRESSION', 'LEFT'] | |
<self>: ['IDENTIFIER', 'QUALIFIED', 'IDENTIFIER', 'EXPRESSION'] | |
<func11>: ['FUNCTION', 'DECLARATION', 'NAME', 'IDENTIFIER'] | |
<>: ['FUNCTION', 'DECLARATION', 'ARGUMENT', 'NAME', 'IDENTIFIER'] | |
<self>: ['FUNCTION', 'DECLARATION', 'ARGUMENT', 'NAME', 'IDENTIFIER'] | |
<var111>: ['IDENTIFIER', 'EXPRESSION', 'LEFT'] | |
<class1>: ['IDENTIFIER', 'QUALIFIED', 'IDENTIFIER', 'EXPRESSION'] | |
<var112>: ['IDENTIFIER', 'EXPRESSION', 'LEFT'] | |
<self>: ['IDENTIFIER', 'QUALIFIED', 'IDENTIFIER', 'EXPRESSION'] | |
<var113>: ['LEFT', 'IDENTIFIER', 'EXPRESSION'] | |
<func12>: ['FUNCTION', 'DECLARATION', 'NAME', 'IDENTIFIER'] | |
<func121>: ['FUNCTION', 'DECLARATION', 'NAME', 'IDENTIFIER'] | |
<>: ['FUNCTION', 'DECLARATION', 'ARGUMENT', 'NAME', 'IDENTIFIER'] | |
<>: ['FUNCTION', 'DECLARATION', 'ARGUMENT', 'NAME', 'IDENTIFIER'] | |
<class2>: ['ENTRY', 'DECLARATION', 'IDENTIFIER', 'STATEMENT'] | |
<var21>: ['LEFT', 'IDENTIFIER', 'EXPRESSION'] | |
<func21>: ['FUNCTION', 'DECLARATION', 'NAME', 'IDENTIFIER'] | |
<>: ['FUNCTION', 'DECLARATION', 'ARGUMENT', 'NAME', 'IDENTIFIER'] | |
<self>: ['FUNCTION', 'DECLARATION', 'ARGUMENT', 'NAME', 'IDENTIFIER'] | |
<func22>: ['FUNCTION', 'DECLARATION', 'NAME', 'IDENTIFIER'] | |
<>: ['FUNCTION', 'DECLARATION', 'ARGUMENT', 'NAME', 'IDENTIFIER'] | |
<self>: ['FUNCTION', 'DECLARATION', 'ARGUMENT', 'NAME', 'IDENTIFIER'] | |
<arg1>: ['FUNCTION', 'DECLARATION', 'ARGUMENT', 'NAME', 'IDENTIFIER'] | |
<func23>: ['FUNCTION', 'DECLARATION', 'NAME', 'IDENTIFIER'] | |
<>: ['FUNCTION', 'DECLARATION', 'ARGUMENT', 'NAME', 'IDENTIFIER'] | |
<class3>: ['ENTRY', 'DECLARATION', 'IDENTIFIER', 'STATEMENT'] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import bblfsh | |
from bblfsh import BblfshClient | |
client = BblfshClient("0.0.0.0:9432") | |
filepath = "./example.py" | |
import importlib | |
DESCRIPTOR = importlib.import_module( | |
"bblfsh.gopkg.in.bblfsh.sdk.%s.uast.generated_pb2" % bblfsh.sdkversion.VERSION).DESCRIPTOR | |
Node = importlib.import_module( | |
"bblfsh.gopkg.in.bblfsh.sdk.%s.uast.generated_pb2" % bblfsh.sdkversion.VERSION).Node | |
def _role_id(role_name): | |
return DESCRIPTOR.enum_types_by_name["Role"].values_by_name[role_name].number | |
def _role_name(role_id): | |
return DESCRIPTOR.enum_types_by_name["Role"].values_by_number[role_id].name | |
response = client.parse(filepath) | |
# Get all Simple Identifiers in UAST | |
tokens = [] | |
for node in bblfsh.filter(response.uast, "//*[@roleIdentifier]"): | |
#if node.token == '': | |
# print(node) | |
tokens.append((node.token, [_role_name(k) for k in node.roles])) | |
print('\n'.join("<{}>:{} {}".format(t, " "* (12-len(t)), r) for t,r in tokens)) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment