feat: add ast_checker mappings for Python3 and C

This commit is contained in:
2026-05-25 20:35:56 -06:00
parent 9c6c8c6406
commit 3b4dfe2fe2
4 changed files with 121 additions and 0 deletions

0
ast_checker/__init__.py Normal file
View File

View File

@@ -0,0 +1,37 @@
from tree_sitter import Language
from .c import C_MAPPING
from .python import PYTHON_MAPPING
_MAPPINGS = {
"Python3": PYTHON_MAPPING,
"C": C_MAPPING,
}
_LANGUAGES: dict[str, Language] = {}
def _init_languages():
try:
import tree_sitter_python as tspython
_LANGUAGES["Python3"] = Language(tspython.language())
except ImportError:
pass
try:
import tree_sitter_c as tsc
_LANGUAGES["C"] = Language(tsc.language())
except ImportError:
pass
_init_languages()
def get_mapping(language: str) -> dict:
return _MAPPINGS.get(language, {})
def get_language(language: str) -> Language | None:
return _LANGUAGES.get(language)

39
ast_checker/mappings/c.py Normal file
View File

@@ -0,0 +1,39 @@
C_MAPPING = {
"for_loop": "for_statement",
"while_loop": "while_statement",
"do_while": "do_statement",
"if_statement": "if_statement",
"else_clause": "else_clause",
"break": "break_statement",
"continue": "continue_statement",
"function_definition": "function_definition",
"return": "return_statement",
"switch_statement": "switch_statement",
"case_statement": "case_statement",
"assignment": "assignment_expression",
"struct": "struct_specifier",
"include": "preproc_include",
"+": "+",
"-": "-",
"*": "*",
"/": "/",
"%": "%",
"+=": "+=",
"-=": "-=",
"*=": "*=",
"/=": "/=",
"%=": "%=",
"==": "==",
"!=": "!=",
">": ">",
">=": ">=",
"<": "<",
"<=": "<=",
"and": "&&",
"or": "||",
"not": "!",
"&": "&",
"|": "|",
"++": "++",
"--": "--",
}

View File

@@ -0,0 +1,45 @@
PYTHON_MAPPING = {
"for_loop": "for_statement",
"while_loop": "while_statement",
"if_statement": "if_statement",
"else_clause": "else_clause",
"elif_clause": "elif_clause",
"break": "break_statement",
"continue": "continue_statement",
"function_definition": "function_definition",
"return": "return_statement",
"try_except": "try_statement",
"with_statement": "with_statement",
"list_comprehension": "list_comprehension",
"list_literal": "list",
"dict_literal": "dictionary",
"set_literal": "set",
"f_string": "format_string",
"import": "import_statement",
"import_from": "import_from_statement",
"assignment": "assignment",
"class_definition": "class_definition",
"+": "+",
"-": "-",
"*": "*",
"/": "/",
"//": "//",
"%": "%",
"**": "**",
"+=": "+=",
"-=": "-=",
"*=": "*=",
"/=": "/=",
"%=": "%=",
"==": "==",
"!=": "!=",
">": ">",
">=": ">=",
"<": "<",
"<=": "<=",
"and": "and",
"or": "or",
"not": "not",
"&": "&",
"|": "|",
}