[Yunq] Move to using jinja for codegen.
This commit is contained in:
parent
3faa19e4cb
commit
963cc0b4fa
8 changed files with 283 additions and 411 deletions
21
yunq/yunq.py
21
yunq/yunq.py
|
|
@ -1,8 +1,10 @@
|
|||
#! /usr/bin/python
|
||||
#! python3
|
||||
import os
|
||||
import pathlib
|
||||
import sys
|
||||
|
||||
from codegen_message import *
|
||||
from jinja2 import Environment, FileSystemLoader
|
||||
|
||||
from parser import *
|
||||
|
||||
def main():
|
||||
|
|
@ -20,11 +22,22 @@ def main():
|
|||
ast = parser.parse()
|
||||
type_check(ast)
|
||||
|
||||
messages = [m for m in ast if type(m) is Message]
|
||||
interfaces = [i for i in ast if type(i) is Interface]
|
||||
|
||||
jinja_env = Environment(loader=FileSystemLoader(pathlib.Path(__file__).parent.resolve()))
|
||||
|
||||
message_header_tmpl = jinja_env.get_template("message.h.jinja")
|
||||
with open(filename + '.h', mode='w') as f:
|
||||
f.write(generate_message_header(ast))
|
||||
message_header = message_header_tmpl.render(messages=messages)
|
||||
f.write(message_header)
|
||||
|
||||
message_impl_tmpl = jinja_env.get_template("message.cpp.jinja")
|
||||
message_impl_tmpl.globals['Type'] = Type
|
||||
with open(filename + '.cpp', mode='w') as f:
|
||||
f.write(generate_message_impl(filename, ast))
|
||||
message_impl = message_impl_tmpl.render(file=filename, messages=messages)
|
||||
f.write(message_impl)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue