public void Run(Options options) { _grammar = Utils.LoadGrammar(options.Grammar); Directory.CreateDirectory(options.Output); foreach (var instruction in _grammar.OperandKinds) { switch (instruction.Value.Category) { case SpirvOperandCategory.BitEnum: { var text = new FlagTemplate(instruction.Value).TransformText(); Utils.SaveText(Path.Combine(options.Output, instruction.Value.Name + ".cs"), text); break; } case SpirvOperandCategory.ValueEnum: { var text = new EnumTemplate(instruction.Value).TransformText(); Utils.SaveText(Path.Combine(options.Output, instruction.Value.Name + ".cs"), text); break; } } } { var text = new NestedInstruction(_grammar.Instructions.Select(_ => _.Value).Where(_ => _nestedInstructions.Contains(_.Name))).TransformText(); Utils.SaveText(Path.Combine(options.Output, "NestedInstruction.cs"), text); } }
public void Run(Options options) { _grammar = Utils.LoadGrammar(options.Grammar); BuildNodeFactory(); //if (instruction.Value.Name.StartsWith("OpType")) // Console.WriteLine($"{instruction.Value.Name},"); //Console.WriteLine($"_factories[(int)Op.{instruction.Value.Name}] = () => new {instruction.Value.Name}();"); }
public void Run(Options options) { _grammar = Utils.LoadGrammar(options.Grammar); var text = new NodeVisitor(_grammar).TransformText(); if (!string.IsNullOrWhiteSpace(options.Output)) { Utils.SaveText(options.Output, text); } else { Console.WriteLine(text); } }
public void Run(Options options) { _grammar = Utils.LoadGrammar(options.Grammar); Directory.CreateDirectory(options.Output); foreach (var instruction in _grammar.Instructions) { var spirvInstruction = instruction.Value; //if (spirvInstruction.Kind == InstructionKind.Function || // spirvInstruction.Kind == InstructionKind.Executable) { var text = new InstructionTemplate(spirvInstruction).TransformText(); Utils.SaveText(Path.Combine(options.Output, spirvInstruction.Name + ".cs"), text); } } }
public void Run(Options options) { _grammar = Utils.LoadGrammar(options.Grammar); var text = new ShaderToScriptConverterTemplate(_grammar).TransformText(); if (!string.IsNullOrWhiteSpace(options.Output)) { Utils.SaveText(options.Output, text); } else { Console.WriteLine(text); } }
public void Run(Options options) { _operands = Utils.LoadOperands(options.Input); ////var enumerable = _operands.operand_kinds.Select(_=>_.kind); //var enumerable = _operands.operand_kinds.Select(_ => _.category); //foreach (var kind in enumerable.Distinct().OrderBy(_=>_)) //{ // Console.WriteLine($" {kind},"); // Console.WriteLine($" case \"{kind}\": return SpirvOperandKind.{kind};"); //} foreach (var operandKind in _operands.operand_kinds) { var kind = GetKind(operandKind.kind); _operandKindCategories.Add(kind, GetOperandCategory(operandKind.category)); } if (options.Rebuild) { _grammar = new SpirvInstructions(); } else { _grammar = Utils.LoadGrammar(options.Output); } foreach (var instruction in _operands.instructions) { if (!_grammar.Instructions.ContainsKey(instruction.opcode)) { _grammar.Instructions.Add(instruction.opcode, CreateInstruction(instruction)); } } foreach (var operandKind in _operands.operand_kinds) { var spirvOperandKind = GetKind(operandKind.kind); if (!_grammar.OperandKinds.ContainsKey(spirvOperandKind)) { _grammar.OperandKinds.Add(spirvOperandKind, GetOperandDescription(operandKind)); } } Utils.SaveGrammar(options.Output, _grammar); }
public void Run(Options options) { _grammar = Utils.LoadGrammar(options.Grammar); Directory.CreateDirectory(options.Output); foreach (var instruction in _grammar.Instructions) { var spirvInstruction = instruction.Value; if (spirvInstruction.Kind != InstructionKind.Type) { var text = new NodeTemplate(spirvInstruction).TransformText(); Utils.SaveText(Path.Combine(options.Output, spirvInstruction.Name.Substring(2) + ".cs"), text); Console.WriteLine($" case Op.{spirvInstruction.Name}: return new {spirvInstruction.Name.Substring(2)}();"); } else { var text = new TypeTemplate(spirvInstruction).TransformText(); Utils.SaveText(Path.Combine(options.Output, spirvInstruction.Name.Substring(2) + ".cs"), text); //Console.WriteLine($" case Op.{spirvInstruction.Name}: return new {spirvInstruction.Name.Substring(2)}();"); } } }
public NodeVisitor(SpirvInstructions grammar) { _grammar = grammar; }
public SpirvInstructionsBuilderTemplate(SpirvInstructions grammar) { _grammar = grammar; }
public ShaderToScriptConverterTemplate(SpirvInstructions grammar) { _grammar = grammar; }