Lines Matching refs:grammar
15 """Generates language headers from a JSON grammar file"""
40 """The grammar for an extended instruction set"""
81 def generate(self, grammar):
82 """Returns a string that is the language-specific header for the given grammar"""
85 if grammar.copyright:
86 parts.extend(["{}{}".format(self.comment_prefix(), f) for f in grammar.copyright])
89 guard = 'SPIRV_EXTINST_{}_H_'.format(grammar.name)
97 if grammar.version:
98 parts.append(self.const_definition(grammar.name, 'Version', grammar.version))
100 if grammar.revision is not None:
101 parts.append(self.const_definition(grammar.name, 'Revision', grammar.revision))
105 if grammar.instructions:
106 parts.append(self.enum_prefix(grammar.name, 'Instructions'))
107 for inst in grammar.instructions:
108 parts.append(self.enum_value(grammar.name, inst['opname'], inst['opcode']))
109 parts.append(self.enum_end(grammar.name, 'Instructions'))
112 if grammar.operand_kinds:
113 for kind in grammar.operand_kinds:
114 parts.append(self.enum_prefix(grammar.name, kind['kind']))
116 parts.append(self.enum_value(grammar.name, e['enumerant'], e['value']))
117 parts.append(self.enum_end(grammar.name, kind['kind']))
160 parser = argparse.ArgumentParser(description='Generate language headers from a JSON grammar')
162 parser.add_argument('--extinst-grammar', metavar='<path>',
164 help='input JSON grammar file for extended instruction set')
173 grammar = ExtInstGrammar(name = grammar_name,
181 f.write(CGenerator().generate(grammar))