示例#1
0
        private List <VPPMakro> ParseDefines(VPPTextParser parser)
        {
            int defIndex;

            List <VPPMakro> ret = new();

            while ((defIndex = parser.Seek("#define")) != -1)
            {
                parser.Eat("#define");
                parser.EatWhiteSpace();
                string var = parser.EatWord();
                parser.EatWhiteSpaceUntilNewLine();

                if (parser.Is('('))
                {
                    ret.Add(ParseFuncDefine(defIndex, var, parser));

                    continue;
                }

                string value = "1";

                if (parser.Is('\n'))
                {
                    parser.Eat('\n');
                    parser.RemoveReverse(defIndex);
                }
                else
                {
                    value = parser.EatUntilWhitespace();
                    parser.RemoveReverse(defIndex);
                }

                ret.Add(
                    new VPPTextMakro(var, value, new List <VPPMakroParameter>())
                    );
            }

            return(ret);
        }