Browse Source

cid2yml add inherent grammar

master
heck 5 years ago
parent
commit
f87d42898c
  1. 41
      gen/gen_cid/cid_2_yml.py

41
gen/gen_cid/cid_2_yml.py

@ -1,14 +1,33 @@
# -*- coding: utf-8 -*-
from . import utils
def generate_yml(cid):
def generate_yml(cid, module_name):
ret = ""
ret += generate_functions(cid)
ret += generate_structs(cid)
ret += generate_enums(cid)
ret += _grammar_header()
ret += "module " + module_name + " {\n"
ret += _generate_functions(cid)
ret += _generate_structs(cid)
ret += _generate_enums(cid)
ret += "}"
return ret
def generate_functions(cid):
def _grammar_header():
grammar = """
decl method @name;
decl struct @name;
decl field @name;
decl enum @name;
decl item @name;
"""
return grammar
def _generate_functions(cid):
data_root = cid["functions"]
# Main
@ -41,7 +60,8 @@ def generate_functions(cid):
return ret
def generate_structs(cid):
def _generate_structs(cid):
data_root = cid["types"]
# Main
@ -59,7 +79,7 @@ def generate_structs(cid):
# Sub
tmpl_sub = ""
tmpl_sub+=' field {name} type="{type}";'
tmpl_sub += ' field {name} type="{type}";'
kind_sub = "CursorKind.FIELD_DECL"
def format_func_sub(tmpl, item):
@ -71,7 +91,8 @@ def generate_structs(cid):
return ret
def generate_enums(cid):
def _generate_enums(cid):
data_root = cid["types"]
# Main
@ -89,7 +110,7 @@ def generate_enums(cid):
# Sub
tmpl_sub = ""
tmpl_sub+= ' item {name} value={value};'
tmpl_sub += ' item {name} value={value};'
kind_sub = "CursorKind.ENUM_CONSTANT_DECL"
def format_func_sub(tmpl, item):
@ -101,6 +122,7 @@ def generate_enums(cid):
return ret
def _format(data, tmpl_main, kind_main, func_main, tmpl_sub, kind_sub, func_sub):
ret = ""
@ -116,6 +138,7 @@ def _format(data, tmpl_main, kind_main, func_main, tmpl_sub, kind_sub, func_sub)
return ret
def _format_subitems(data, tmpl, kind, func):
ret = ""

Loading…
Cancel
Save