コード例 #1
0
ファイル: Parser.cs プロジェクト: mitchfizz05/mcc
        public McFunction Parse(string id, string code = null)
        {
            if (code == null)
            {
                // Load file from path in build environment
                string path = Environment.GetPath(id, "mcfunction");
                code = File.ReadAllText(path);
            }

            McFunction = new McFunction(id);

            // Iterate over lines in file
            foreach (string line in code.Split('\n'))
            {
                // Break command up into arguments
                var parts = CommandParser.Parse(line);

                if (parts == null)
                {
                    continue;
                }

                // Parse command into arguments
                var cmd = new Command.Command();
                foreach (string part in parts)
                {
                    Argument argument = new Argument();
                    argument.Tokens.Add(new TextToken(part));

                    // Run argument through filters
                    foreach (IParseFilter filter in ParseFilters)
                    {
                        argument = filter.FilterArgument(argument);
                    }

                    if (argument != null)
                    {
                        cmd.Arguments.Add(argument);
                    }
                }

                // Run command through filters
                foreach (IParseFilter filter in ParseFilters)
                {
                    cmd = filter.Filter(cmd);
                }

                McFunction.Commands.Add(cmd);
            }

            return(McFunction);
        }
コード例 #2
0
ファイル: ImportCommand.cs プロジェクト: mitchfizz05/mcc
        public ApplyResult Apply(BuildEnvironment env, Command command)
        {
            string id   = command.Arguments[1].GetAsText();
            string path = env.GetPath(id, "mcfunction");

            Logger.Debug($"Importing {id}...");

            var        parser     = new Parser.Parser(env);
            McFunction mcFunction = parser.Parse(id);

            mcFunction.Compile(env, false);

            return(new ApplyResult(true, mcFunction.Commands));
        }