annotate meta_connector/meta_connector.py @ 26:b9f88346cecd support auto stub generation

generate stub
author Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
date Mon, 02 Nov 2015 04:02:13 +0900
parents 9a1cce532f29
children 894a300f199f
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5
7af72e3e4b62 add name base meta connector
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 #!/usr/bin/env python3
7af72e3e4b62 add name base meta connector
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
2 # -*- coding: utf-8 -*-
7af72e3e4b62 add name base meta connector
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
3
7af72e3e4b62 add name base meta connector
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
4 import sys
7af72e3e4b62 add name base meta connector
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
5 import argparse
7af72e3e4b62 add name base meta connector
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
6 import re
7af72e3e4b62 add name base meta connector
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
7
7af72e3e4b62 add name base meta connector
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
8 # parse arguments and return arguments list.
7af72e3e4b62 add name base meta connector
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
9 def get_args():
7af72e3e4b62 add name base meta connector
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
10 parser = argparse.ArgumentParser(
7af72e3e4b62 add name base meta connector
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
11 formatter_class=argparse.RawDescriptionHelpFormatter,
7af72e3e4b62 add name base meta connector
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
12 description="""\
25
9a1cce532f29 fix meta connection bugs
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 24
diff changeset
13 Parse meta connect syntax and create stub. Default output is stdout.
5
7af72e3e4b62 add name base meta connector
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
14
7af72e3e4b62 add name base meta connector
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
15 sample)
8
ae45108716a2 fix usage
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
16 __code code0(struct Data data1, ...){
ae45108716a2 fix usage
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
17 goto code1(data1, data2, ...);
5
7af72e3e4b62 add name base meta connector
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
18 \t|
7af72e3e4b62 add name base meta connector
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
19 \tV
8
ae45108716a2 fix usage
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
20 __code code0(struct Context* context, struct Data data1, ...){
ae45108716a2 fix usage
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
21 goto meta_code1(context, data1, data2, ..., Code1);
5
7af72e3e4b62 add name base meta connector
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
22 """)
7af72e3e4b62 add name base meta connector
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
23 parser.add_argument('input_file',\
7af72e3e4b62 add name base meta connector
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
24 nargs=None,\
7af72e3e4b62 add name base meta connector
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
25 type=str,\
7af72e3e4b62 add name base meta connector
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
26 help='input file path.')
7af72e3e4b62 add name base meta connector
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
27 parser.add_argument('-o', dest='output',\
7af72e3e4b62 add name base meta connector
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
28 nargs=1,\
7af72e3e4b62 add name base meta connector
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
29 type=str,\
7af72e3e4b62 add name base meta connector
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
30 metavar='<file>',\
7af72e3e4b62 add name base meta connector
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
31 help='write output to <file>')
7af72e3e4b62 add name base meta connector
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
32
7af72e3e4b62 add name base meta connector
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
33 return parser.parse_args()
7af72e3e4b62 add name base meta connector
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
34
7af72e3e4b62 add name base meta connector
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
35 # parse input file and create meta connection list
7af72e3e4b62 add name base meta connector
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
36 def parse_meta_syntax(lines,file):
7af72e3e4b62 add name base meta connector
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
37 comment_out = False
7af72e3e4b62 add name base meta connector
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
38 caller_name = ''
6
d9f74f325135 name base: fix meta_stub bug.
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
39 isMetaOrStub = False
20
e06b47585c4f generate default meta code segment
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 19
diff changeset
40 defaultMetaIsNotExist = True
5
7af72e3e4b62 add name base meta connector
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
41 for i,l in enumerate(lines):
7af72e3e4b62 add name base meta connector
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
42
7af72e3e4b62 add name base meta connector
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
43 regexed_l = re.search(r"[a-zA-Z0-9_]+ *\(",l)
7af72e3e4b62 add name base meta connector
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
44 # get caller code segment name
24
569b28c699d9 create stub
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 23
diff changeset
45 if re.search(r"^ *__code",l) is not None: # code segment declarations.
17
77c1716f7aff fix meta connection at no arg code segments
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
46 isMetaOrStub = False
5
7af72e3e4b62 add name base meta connector
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
47 caller_name = regexed_l.group(0).rstrip('(')
24
569b28c699d9 create stub
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 23
diff changeset
48 args = get_args_from_line(l)
20
e06b47585c4f generate default meta code segment
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 19
diff changeset
49 if caller_name == 'meta':
e06b47585c4f generate default meta code segment
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 19
diff changeset
50 defaultMetaIsNotExist = False
24
569b28c699d9 create stub
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 23
diff changeset
51 if re.search(r"^ *meta_*|stub$",caller_name) is not None: # meta code segments or stubs
6
d9f74f325135 name base: fix meta_stub bug.
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
52 isMetaOrStub = True
24
569b28c699d9 create stub
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 23
diff changeset
53 elif not cs_search(lines, caller_name+'_stub'): # normal code segments which do not have a stub.
569b28c699d9 create stub
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 23
diff changeset
54 create_stub(file, caller_name, args.strip(','))
569b28c699d9 create stub
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 23
diff changeset
55
569b28c699d9 create stub
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 23
diff changeset
56 if re.search(r"struct Context\* context",l) is None: # add context to arguments list if it didn't have.
9
185d545a9a8e context generation
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 8
diff changeset
57 file.write("/*-- generated by script */\n")
185d545a9a8e context generation
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 8
diff changeset
58 file.write('// '+l)
24
569b28c699d9 create stub
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 23
diff changeset
59 file.write('__code {0:s}(struct Context* context{1:s}) {{\n'.format(caller_name, args))
22
c32994789739 allow to write context in arguments list at code segment declaration.
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 20
diff changeset
60 else:
c32994789739 allow to write context in arguments list at code segment declaration.
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 20
diff changeset
61 file.write(l)
24
569b28c699d9 create stub
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 23
diff changeset
62 elif not isMetaOrStub and regexed_l is not None and re.search(r"^ *goto",l): # code segment transition.
5
7af72e3e4b62 add name base meta connector
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
63 callee_name = regexed_l.group(0).rstrip('(')
16
f748d295b08f fix start_code bug
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 15
diff changeset
64 if callee_name == 'start_code' or re.match('meta_|meta$',callee_name):
10
eec116fe2387 default meta connection
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
65 file.write(l)
23
e22a82d584c6 minor fix
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 22
diff changeset
66 elif re.search(r"\(context", l) is None:
25
9a1cce532f29 fix meta connection bugs
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 24
diff changeset
67 connect_meta(file, lines, l, caller_name, callee_name)
9a1cce532f29 fix meta connection bugs
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 24
diff changeset
68 # file.write("/*-- connected by script */\n")
9a1cce532f29 fix meta connection bugs
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 24
diff changeset
69 # file.write('// '+l)
9a1cce532f29 fix meta connection bugs
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 24
diff changeset
70 # meta_name = 'meta_'+caller_name if cs_search(lines, 'meta_'+callee_name) else 'meta'
9a1cce532f29 fix meta connection bugs
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 24
diff changeset
71 # file.write("goto {0:s}(context{1:s}, {2:s});\n".format(meta_name, args,\
9a1cce532f29 fix meta connection bugs
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 24
diff changeset
72 # callee_name.capitalize()))
23
e22a82d584c6 minor fix
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 22
diff changeset
73 else:
e22a82d584c6 minor fix
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 22
diff changeset
74 file.write(l)
5
7af72e3e4b62 add name base meta connector
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
75 else:
7af72e3e4b62 add name base meta connector
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
76 file.write(l)
20
e06b47585c4f generate default meta code segment
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 19
diff changeset
77 if defaultMetaIsNotExist:
e06b47585c4f generate default meta code segment
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 19
diff changeset
78 create_default_metacs(file)
e06b47585c4f generate default meta code segment
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 19
diff changeset
79
e06b47585c4f generate default meta code segment
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 19
diff changeset
80 def create_default_metacs(file):
e06b47585c4f generate default meta code segment
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 19
diff changeset
81 file.write('''
e06b47585c4f generate default meta code segment
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 19
diff changeset
82 __code meta(struct Context* context, enum Code next) {
e06b47585c4f generate default meta code segment
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 19
diff changeset
83 goto (context->code[next])(context);
e06b47585c4f generate default meta code segment
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 19
diff changeset
84 }
e06b47585c4f generate default meta code segment
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 19
diff changeset
85 ''')
5
7af72e3e4b62 add name base meta connector
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
86
19
e11ec04d2cd8 minor fix
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
87 def get_args_from_line(line):
e11ec04d2cd8 minor fix
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
88 args = line.split('(')[1].rsplit(')')[0].strip()
e11ec04d2cd8 minor fix
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
89 args = ', ' + args if args else ''
e11ec04d2cd8 minor fix
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
90 return args
e11ec04d2cd8 minor fix
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
91
e11ec04d2cd8 minor fix
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
92
24
569b28c699d9 create stub
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 23
diff changeset
93 def create_stub(file, name, args):
22
c32994789739 allow to write context in arguments list at code segment declaration.
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 20
diff changeset
94 file.write('''__code {0:s}_stub(struct Context* context) {{
c32994789739 allow to write context in arguments list at code segment declaration.
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 20
diff changeset
95 goto {0:s}(context'''.format(name))
24
569b28c699d9 create stub
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 23
diff changeset
96 for arg in args_str2args_list(args):
569b28c699d9 create stub
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 23
diff changeset
97 file.write(', &context->data['+arg.capitalize()+']->'+arg)
22
c32994789739 allow to write context in arguments list at code segment declaration.
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 20
diff changeset
98 file.write(');\n}\n')
c32994789739 allow to write context in arguments list at code segment declaration.
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 20
diff changeset
99
25
9a1cce532f29 fix meta connection bugs
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 24
diff changeset
100 def connect_meta(file, lines, l, caller_name, callee_name):
26
b9f88346cecd generate stub
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
101 meta_name = 'meta_'+caller_name if cs_search(lines, 'meta_'+caller_name) else 'meta'
25
9a1cce532f29 fix meta connection bugs
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 24
diff changeset
102 args = get_args_from_line(l)
9a1cce532f29 fix meta connection bugs
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 24
diff changeset
103 file.write("/*-- connected by script */\n")
9a1cce532f29 fix meta connection bugs
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 24
diff changeset
104 file.write('// '+l)
9a1cce532f29 fix meta connection bugs
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 24
diff changeset
105 file.write("goto {0:s}(context".format(meta_name))
9a1cce532f29 fix meta connection bugs
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 24
diff changeset
106 for arg in args_str2args_list(args):
9a1cce532f29 fix meta connection bugs
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 24
diff changeset
107 file.write(', '+arg)
9a1cce532f29 fix meta connection bugs
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 24
diff changeset
108 file.write(', '+callee_name.capitalize()+');\n')
9a1cce532f29 fix meta connection bugs
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 24
diff changeset
109
24
569b28c699d9 create stub
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 23
diff changeset
110 def args_str2args_list(args_str):
569b28c699d9 create stub
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 23
diff changeset
111 args_list = []
569b28c699d9 create stub
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 23
diff changeset
112 temporary_list = args_str.split()
569b28c699d9 create stub
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 23
diff changeset
113 for i,arg in enumerate(temporary_list):
569b28c699d9 create stub
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 23
diff changeset
114 if re.search(r"context,*", arg) is not None:
569b28c699d9 create stub
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 23
diff changeset
115 continue
25
9a1cce532f29 fix meta connection bugs
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 24
diff changeset
116 if re.search(r"[a-zA-Z0-9_] *,$", arg) is not None or i == len(temporary_list)-1:
24
569b28c699d9 create stub
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 23
diff changeset
117 args_list.append(arg.strip(','))
569b28c699d9 create stub
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 23
diff changeset
118 return args_list
569b28c699d9 create stub
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 23
diff changeset
119
6
d9f74f325135 name base: fix meta_stub bug.
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
120 # search meta code segment.
24
569b28c699d9 create stub
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 23
diff changeset
121 # It returns true when cs was found.
6
d9f74f325135 name base: fix meta_stub bug.
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
122 # Find it : __code meta_'name'
22
c32994789739 allow to write context in arguments list at code segment declaration.
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 20
diff changeset
123 def cs_search(lines, name):
6
d9f74f325135 name base: fix meta_stub bug.
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
124 for l in lines:
22
c32994789739 allow to write context in arguments list at code segment declaration.
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 20
diff changeset
125 if re.search(r"^ *__code {0:s}\(".format(name),l) is not None:
6
d9f74f325135 name base: fix meta_stub bug.
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
126 return True
d9f74f325135 name base: fix meta_stub bug.
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
127 return False
d9f74f325135 name base: fix meta_stub bug.
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
128
5
7af72e3e4b62 add name base meta connector
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
129 def main():
7af72e3e4b62 add name base meta connector
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
130 args = get_args()
7af72e3e4b62 add name base meta connector
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
131 output = sys.stdout
7af72e3e4b62 add name base meta connector
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
132 try:
7af72e3e4b62 add name base meta connector
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
133 f = open(args.input_file,'r')
7af72e3e4b62 add name base meta connector
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
134 except IOError:
7af72e3e4b62 add name base meta connector
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
135 print("cannot open file %s" % input_file)
7af72e3e4b62 add name base meta connector
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
136 if args.output is not None:
7af72e3e4b62 add name base meta connector
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
137 try:
7af72e3e4b62 add name base meta connector
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
138 output = open(args.output[0],'w')
7af72e3e4b62 add name base meta connector
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
139 except IOError:
7af72e3e4b62 add name base meta connector
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
140 print("cannot open file %s" % args.output)
7af72e3e4b62 add name base meta connector
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
141 lines = f.readlines()
7af72e3e4b62 add name base meta connector
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
142 connect_list = parse_meta_syntax(lines, output)
7af72e3e4b62 add name base meta connector
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
143 main()