Skip to content

Commit

Permalink
fix: max cols and function naming
Browse files Browse the repository at this point in the history
  • Loading branch information
Andree37 committed May 30, 2023
1 parent 9ce6675 commit 6d73cf0
Showing 1 changed file with 15 additions and 12 deletions.
27 changes: 15 additions & 12 deletions examples/generate_ast.py → examples/construct_ast_from_scratch.py
@@ -1,13 +1,11 @@
# -----------------------------------------------------------------
# pycparser: generate_ast.py
# pycparser: construct_ast_from_scratch.py
#
# Tiny example of writing an AST from scratch to C code.
#
# Andre Ribeiro [https://github.com/Andree37]
# License: BSD
# -----------------------------------------------------------------
from __future__ import print_function

from pycparser import c_ast, c_generator


Expand All @@ -17,15 +15,20 @@
# }


def create_your_ast():
def empty_main_function_ast():
constant_zero = c_ast.Constant(type='int', value='0')
return_node = c_ast.Return(expr=constant_zero)
compound_node = c_ast.Compound(block_items=[return_node])
type_decl_node = c_ast.TypeDecl(declname='main', quals=[], type=c_ast.IdentifierType(names=['int']), align=[])
func_decl_node = c_ast.FuncDecl(args=c_ast.ParamList([]), type=type_decl_node)
func_def_node = c_ast.Decl(name='main', quals=[], storage=[], funcspec=[], type=func_decl_node, init=None,
type_decl_node = c_ast.TypeDecl(declname='main', quals=[],
type=c_ast.IdentifierType(names=['int']),
align=[])
func_decl_node = c_ast.FuncDecl(args=c_ast.ParamList([]),
type=type_decl_node)
func_def_node = c_ast.Decl(name='main', quals=[], storage=[], funcspec=[],
type=func_decl_node, init=None,
bitsize=None, align=[])
main_func_node = c_ast.FuncDef(decl=func_def_node, param_decls=None, body=compound_node)
main_func_node = c_ast.FuncDef(decl=func_def_node, param_decls=None,
body=compound_node)

return main_func_node

Expand All @@ -36,9 +39,9 @@ def generate_c_code(my_ast):


if __name__ == '__main__':
ast = create_your_ast()
main_function_ast = empty_main_function_ast()
print("|----------------------------------------|")
ast.show(offset=2)
main_function_ast.show(offset=2)
print("|----------------------------------------|")
c_code = generate_c_code(ast)
print("C code: \n%s" % c_code)
main_c_code = generate_c_code(main_function_ast)
print("C code: \n%s" % main_c_code)

0 comments on commit 6d73cf0

Please sign in to comment.