Esempio n. 1
0
        public override IDerivation Expand(DerivationContext aContext)
        {
            IDerivation        lExpandList    = RightPhrase.Expand(aContext);
            List <IDerivation> lReplacePoints = PlaceHolders.GetList(Name);

            foreach (TextDerivation lPoint in lReplacePoints)
            {
                if (Add)
                {
                    lPoint.Text += lExpandList.ToString();
                }
                else
                {
                    lPoint.Text = lExpandList.ToString();
                }
            }
            return(lExpandList);
        }
Esempio n. 2
0
        public virtual IDerivation Visit(PlaceHolderAssignPhrase aPlaceHolderAssignPhrase, DerivationContext aContext)
        {
            IDerivation        lExpandList    = aPlaceHolderAssignPhrase.RightPhrase.Accept(aContext);
            List <IDerivation> lReplacePoints = PlaceHolders.GetList(aPlaceHolderAssignPhrase.Name);

            foreach (TextDerivation lPoint in lReplacePoints)
            {
                if (aPlaceHolderAssignPhrase.Add)
                {
                    lPoint.Text += lExpandList.ToString();
                }
                else
                {
                    lPoint.Text = lExpandList.ToString();
                }
            }
            return(lExpandList);
        }
Esempio n. 3
0
        /// <summary>
        /// Генерирует один текст
        /// </summary>
        /// <returns></returns>
        private string GenerateSingleText()
        {
            //Clear
            //  RuleProtocol = new DictionaryDerivation(true, new DerivationContext(this));
            mGrammar.SysTrans.Clear();
            StopGenerate = false;

            mGrammar.AllNonTerminals.Clear();
            VisitorExpandBase.PlaceHolders.Clear();

            if (File.Exists(ConfigFilePath))
            {
                ConfigXml = new XmlParser(ConfigFilePath);
            }

            IDerivation lDerivation = null;

            switch (Mode)
            {
            case eGenerationMode.RecursiveTopDown:
                lDerivation = ExpandNonTerminal(mGrammar.MainSymbol);
                break;

            case eGenerationMode.IterativeTopDown:
                lDerivation = GenerateIterativeTopDown();
                break;

            case eGenerationMode.IterativeLeftRight:
                lDerivation = GenerateIterativeLeftRight(mGrammar.MainSymbol.Context);
                break;
            }
            if (Grammar.SpecGraphBuilder != null)
            {
                Grammar.SpecGraphBuilder.RootObject = lDerivation;
            }
            //convert generated tree to text
            string lGeneratedText = lDerivation.ToString();

            //save it
            ResultSaver.Save(lGeneratedText);
            mGrammar.MainSymbol.Context.DerivationXml.Save("c://derivationXml.xml");

            IsEnumFinished = CounterDictionary.Increase();
            StopGenerate   = false;

            return(lGeneratedText);
        }