@@ -0,0 +1,3 @@ | |||||
[submodule "bitshift/parser/pylj"] | |||||
path = bitshift/parser/pylj | |||||
url = git@github.com:musiKk/plyj.git |
@@ -4,13 +4,3 @@ Module to contain definitions of all Flask variables required by the app module. | |||||
DEBUG = True | DEBUG = True | ||||
SECRET_KEY = "\x89\x87\x9a9\xab{\xda\xfe.28\xb4\x18\x01\x95]]\xd2\xeaen\xe0Ot" | SECRET_KEY = "\x89\x87\x9a9\xab{\xda\xfe.28\xb4\x18\x01\x95]]\xd2\xeaen\xe0Ot" | ||||
LANG_PYTHON = 0 | |||||
LANG_C = 1 | |||||
LANG_JAVA = 2 | |||||
PYG_IDS = { | |||||
"Python": LANG_PYTHON, | |||||
"C": LANG_C, | |||||
"JAVA": LANG_JAVA | |||||
} |
@@ -0,0 +1,2 @@ | |||||
LANGS = ["Python", "C"] |
@@ -1,7 +1,6 @@ | |||||
from .python import parse_py | from .python import parse_py | ||||
from .c import parse_c | from .c import parse_c | ||||
from .java import parse_java | |||||
from bitshift.config import LANG_PYTHON, LANG_C, LANG_JAVA, PYG_IDS | |||||
from ..languages import LANGS | |||||
import pygments.lexers as pgl | import pygments.lexers as pgl | ||||
_all__ = ["parse"] | _all__ = ["parse"] | ||||
@@ -21,9 +20,9 @@ def _lang(codelet): | |||||
if codelet.filename is not None: | if codelet.filename is not None: | ||||
return pgl.guess_lexer_for_filename(codelet.filename).name | return pgl.guess_lexer_for_filename(codelet.filename).name | ||||
return PYG_IDS[pgl.guess_lexer(codelet.code)] | |||||
return LANGS.index(pgl.guess_lexer(codelet.code)) | |||||
def parser(codelet): | |||||
def parse(codelet): | |||||
""" | """ | ||||
Dispatch codelet to correct parser by language of code. | Dispatch codelet to correct parser by language of code. | ||||
@@ -34,10 +33,8 @@ def parser(codelet): | |||||
lang = _lang(codelet) | lang = _lang(codelet) | ||||
if lang == LANG_PYTHON: | |||||
if lang == LANGS.index("Python"): | |||||
parse_py(codelet) | parse_py(codelet) | ||||
elif lang == LANG_C: | |||||
elif lang == LANGS.index("C"): | |||||
parse_c(codelet) | parse_c(codelet) | ||||
elif lang == LANG_JAVA: | |||||
parse_java(codelet) | |||||
@@ -1,6 +1,6 @@ | |||||
from pycparser import c_parser, c_ast | from pycparser import c_parser, c_ast | ||||
class CTreeCutter(c_ast.NodeVisitor): | |||||
class _TreeCutter(c_ast.NodeVisitor): | |||||
""" | """ | ||||
Local node visitor for c abstract syntax trees. | Local node visitor for c abstract syntax trees. | ||||
@@ -18,7 +18,7 @@ class CTreeCutter(c_ast.NodeVisitor): | |||||
def __init__(self): | def __init__(self): | ||||
""" | """ | ||||
Create a CTreeCutter instance. | |||||
Create a _TreeCutter instance. | |||||
""" | """ | ||||
self.accum = {'vars': {}, 'functions': {}, 'structs': {}} | self.accum = {'vars': {}, 'functions': {}, 'structs': {}} | ||||
@@ -101,6 +101,6 @@ def parse_c(codelet): | |||||
""" | """ | ||||
tree = c_parser.CParser().parse(codelet.code) | tree = c_parser.CParser().parse(codelet.code) | ||||
cutter = CTreeCutter() | |||||
cutter = _TreeCutter() | |||||
cutter.visit(tree) | cutter.visit(tree) | ||||
codelet.symbols = cutter.accum | codelet.symbols = cutter.accum |
@@ -1,3 +0,0 @@ | |||||
def parse_java(): | |||||
pass |
@@ -0,0 +1 @@ | |||||
Subproject commit 323dd4e266b47579aef2347e68214a6fbe083add |
@@ -1,6 +1,6 @@ | |||||
import ast | import ast | ||||
class PyTreeCutter(ast.NodeVisitor): | |||||
class _TreeCutter(ast.NodeVisitor): | |||||
""" | """ | ||||
Local node visitor for python abstract syntax trees. | Local node visitor for python abstract syntax trees. | ||||
@@ -18,7 +18,7 @@ class PyTreeCutter(ast.NodeVisitor): | |||||
def __init__(self): | def __init__(self): | ||||
""" | """ | ||||
Create a PyTreeCutter instance. | |||||
Create a _TreeCutter instance. | |||||
""" | """ | ||||
self.accum = {'vars': {}, 'functions': {}, 'classes': {}} | self.accum = {'vars': {}, 'functions': {}, 'classes': {}} | ||||
@@ -121,6 +121,6 @@ def parse_py(codelet): | |||||
""" | """ | ||||
tree = ast.parse(codelet.code) | tree = ast.parse(codelet.code) | ||||
cutter = PyTreeCutter() | |||||
cutter = _TreeCutter() | |||||
cutter.visit(tree) | cutter.visit(tree) | ||||
codelet.symbols = cutter.accum | codelet.symbols = cutter.accum |