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);
            }
        }
Beispiel #2
0
        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);
            }
        }
Beispiel #4
0
 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);
         }
     }
 }
Beispiel #5
0
        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)}();");
         }
     }
 }
Beispiel #8
0
 public NodeVisitor(SpirvInstructions grammar)
 {
     _grammar = grammar;
 }
Beispiel #9
0
 public SpirvInstructionsBuilderTemplate(SpirvInstructions grammar)
 {
     _grammar = grammar;
 }
Beispiel #10
0
 public ShaderToScriptConverterTemplate(SpirvInstructions grammar)
 {
     _grammar = grammar;
 }