Ejemplo n.º 1
0
        protected override IParsedElement TryParseElement(List <string> lines, int index, out int end)
        {
            end = index + 1;
            var text = lines[index].Trim();

            while (text.EndsWith(","))
            {
                text = $"{text} {lines[end++].Trim()}";
            }

            var test = NormalizeType.Replace(text, string.Empty);

            if (!FuncRegex.IsMatch(test) || VoidFuncRegex.IsMatch(test))
            {
                return(null);
            }

            var cppTypeMatch = FuncTypeRegex.Match(test);

            if (!cppTypeMatch.Success)
            {
                return(null);
            }

            var nameMatch = FuncNameRegex.Match(test);

            if (!nameMatch.Success)
            {
                return(null);
            }

            var paramsMatch = ParamsRegex.Match(test);

            if (!paramsMatch.Success)
            {
                return(null);
            }

            var netType = cppTypeMatch.Value;

            netType = GetKnownTypeOrDefault(netType);

            var field = new ParsedFunc
            {
                Type      = netType,
                CppType   = cppTypeMatch.Value,
                Name      = ToTitleCase(nameMatch.Value),
                CppName   = nameMatch.Value,
                Params    = TryParseParams(paramsMatch.Value),
                CppParams = paramsMatch.Value,
                //Comment = coment
            };

            return(field);
        }
Ejemplo n.º 2
0
        protected override PreParsedElement TryParseElement(PreParsedElement preParsedElement, string templateName)
        {
            var test = preParsedElement.CppText;

            if (!FuncRegex.IsMatch(test))// || VoidFuncRegex.IsMatch(test))
            {
                return(null);
            }

            var cppTypeMatch = FuncTypeRegex.Match(test);

            if (!cppTypeMatch.Success)
            {
                return(null);
            }

            var nameMatch = FuncNameRegex.Match(test);

            if (!nameMatch.Success)
            {
                return(null);
            }

            var paramsMatch = ParamsRegex.Match(test);

            if (!paramsMatch.Success)
            {
                return(null);
            }


            try
            {
                var field = new ParsedFunc();
                field.Type        = GetKnownTypeOrDefault(cppTypeMatch.Value, templateName);
                field.Name        = CashParser.ToTitleCase(nameMatch.Value);
                field.CppName     = nameMatch.Value;
                field.Params      = TryParseParams(paramsMatch.Value);
                field.Comment     = preParsedElement.Comment;
                field.MainComment = preParsedElement.MainComment;
                return(field);
            }
            catch (Exception e)
            {
            }

            var error = new ParsedFunc();

            error.Comment = "Parsing error: { preParsedElement.CppText}";
            return(error);
        }