wip: working on dynamic linking
- Feat: add analyzers for: - external functions - reference - structures - type definitions - Feat: add new nodes to debug print (ast)
This commit is contained in:
@@ -32,6 +32,52 @@ void print_node(fzl_node_t *node, int level)
|
||||
|
||||
switch (node->type)
|
||||
{
|
||||
case FZL_NODETYPE_EXTERN:
|
||||
printf("%s Extern bindings to library '%s':\n", levelbuf,
|
||||
node->ext.libname);
|
||||
printf("-%s Types:\n", levelbuf);
|
||||
for (size_t i = 0; i < node->ext.typedefs_count; i++)
|
||||
print_node(node->ext.typedefs[i], level + 2);
|
||||
printf("-%s Functions:\n", levelbuf);
|
||||
for (size_t i = 0; i < node->ext.fns_count; i++)
|
||||
print_node(node->ext.fns[i], level + 2);
|
||||
break;
|
||||
|
||||
case FZL_NODETYPE_EXTERN_FN:
|
||||
printf("%s External function '%s' (original name %s), rettype '%s':\n",
|
||||
levelbuf, node->ext_fn.name, node->ext_fn.original_name,
|
||||
(char *)node->ext_fn.type->value);
|
||||
printf("-%s Arguments:\n", levelbuf);
|
||||
for (size_t i = 0; i < node->ext_fn.args_count; i++)
|
||||
print_node(node->ext_fn.args[i], level + 2);
|
||||
break;
|
||||
|
||||
case FZL_NODETYPE_REFERENCE:
|
||||
printf("%s Reference (pointer type) to '%s'\n", levelbuf,
|
||||
(char *)node->token->value);
|
||||
break;
|
||||
|
||||
case FZL_NODETYPE_STRUCT:
|
||||
printf("%s Structure '%s' (original name %s):\n", levelbuf,
|
||||
(char *)node->token->value, node->structure.original_name);
|
||||
for (size_t i = 0; i < node->structure.entries_count; i++)
|
||||
print_node(node->structure.entries[i], level + 1);
|
||||
break;
|
||||
|
||||
case FZL_NODETYPE_ALIAS:
|
||||
printf("%s Type alias to '%s'\n", levelbuf, (char *)node->token->value);
|
||||
break;
|
||||
|
||||
case FZL_NODETYPE_HANDLE:
|
||||
printf("%s Opaque pointer (handle)\n", levelbuf);
|
||||
break;
|
||||
|
||||
case FZL_NODETYPE_TYPEDEF:
|
||||
printf("%s Type definition '%s':\n", levelbuf,
|
||||
node->typedefinition.typename);
|
||||
print_node(node->typedefinition.type, level + 1);
|
||||
break;
|
||||
|
||||
case FZL_NODETYPE_UNARY_MINUS:
|
||||
printf("%s Unary '-':\n", levelbuf);
|
||||
print_node(node->unary_op.operand, level + 1);
|
||||
|
||||
Reference in New Issue
Block a user