Beispiel #1
0
        private void HandleConstructionAtPosition(CompositeConstruction comCon, string name, ref int position)
        {
            Macross currentMacros = table.Get(name);

            if (currentMacros.Name == "break")
            {
                comCon.AddUnit(
                    new StaticText(comCon, fileData.Substring(currentPosition, position - currentPosition)));
                TextUnit comp = new BreakConstruction(comCon, fileData);
                comCon.AddUnit(comp);
                currentPosition = position + name.Length;
                position        = currentPosition;
                return;
            }
            int    macrosDataEndPos = ParseUtilites.GetMacrosCloseBracketPosAfterMacroSep(fileData, position);
            string macrosData       = ParseUtilites.GetMacrossData(fileData, position, macrosDataEndPos);

            comCon.AddUnit(
                new StaticText(comCon, fileData.Substring(currentPosition, position - currentPosition)));
            if (currentMacros.IsCompositeMacross() && currentMacros.Name != "#elseif" && currentMacros.Name != "#else")
            {
                currentPosition = macrosDataEndPos + 1;
                TextUnit compositePart = PredefinedMacros.GetMacro(comCon, name, fileData, macrosData);
                comCon.AddUnit(compositePart);
                CompositeConstruction comp = (CompositeConstruction)compositePart;
                comp.StartPositionInFile = position;
                comp.Accept(this);
                position = currentPosition;
            }
            else
            {
                currentPosition = macrosDataEndPos + 1;
                if (currentMacros is UserDefinedMacross)
                {
                    UserDefinedMacross userDefined = (UserDefinedMacross)currentMacros;
                    TextUnit           comp        = new UserDefinedMacrosConstruction(comCon, userDefined, fileData, macrosData);
                    comCon.AddUnit(comp);
                    position = currentPosition;
                }
                else
                {
                    TextUnit comp = PredefinedMacros.GetMacro(comCon, name, fileData, macrosData);
                    comCon.AddUnit(comp);
                    position = currentPosition;
                }
            }
        }
Beispiel #2
0
 public UserDefinedMacrosConstruction(TextUnit father, UserDefinedMacross macross, string fileData, string macroData)
     : base(father, fileData)
 {
     arguments     = macroData;
     actualMacross = macross;
 }