Ejemplo n.º 1
0
        private static void Main(string[] args)
        {
            var lists = new List<WordCollection>();
            var subject = new WordCollection();

            subject.Add(new Word("I"));
            subject.Add(new Word("They"));
            subject.Add(new Word("She"));
            subject.Add(new Word("Jerry"));
            subject.Type = "SUBJECT";

            var verb = new WordCollection();
            verb.Add(new Word("is"));
            verb.Add(new Word("eat"));
            verb.Add(new Word("book"));
            verb.Type = "VERB";

            var noun = new WordCollection();

            noun.Add(new Word("cake"));
            noun.Add(new Word("rice"));
            noun.Type = "NOUN";

            ConstantValue.GetGrammars().ForEach(c =>
                {
                    foreach (var symbol in c.Value.Split('+'))
                    {
                        var trimedSymbol = symbol.Trim();
                        if (HasDefiniton(trimedSymbol))
                        {
                            trimedSymbol = trimedSymbol.Split('(')[0];
                        }
                        if (trimedSymbol == "NOUN")
                        {
                            lists.Add(noun);
                        }
                        else if (trimedSymbol == "SUBJECT")
                        {
                            lists.Add(subject);
                        }
                        else if (trimedSymbol == "VERB")
                        {
                            lists.Add(verb);
                        }
                        else
                        {
                            lists.Add(new WordCollection() {new Word(trimedSymbol)});
                        }
                    }
                    new ListGenerator(lists).Generate().ForEach(Console.WriteLine);
                    Console.WriteLine("---");
                    lists.Clear();
                });

            Console.ReadKey();
        }
Ejemplo n.º 2
0
        public WordCollection Read()
        {
            var result          = new WordCollection();
            var containerReader = new ContainerReader();

            var text = containerReader.Read(ContainerName.MORPHOLOGICAL);


            var splitText = text.Split(Environment.NewLine.ToCharArray()).Where(t => !string.IsNullOrEmpty(t)).Where(t => (t.Trim()[0] != '#'));


            foreach (var row in splitText)
            {
                var cols = row.Split('\t');


                var newWord = new Word()
                {
                    Text        = cols[0],
                    Root        = new Word(cols[1]),
                    Morphologic = cols[2].Split('+').Select(m => new MorphologicItem(m)).ToList()
                };


                result.Add(newWord);
            }



            return(result);
        }
Ejemplo n.º 3
0
        internal static WordCollection MakeWords(Int32 count)
        {
            WordCollection words = new WordCollection();

            words.Add(Word.Zero, count);
            return(words);
        }
Ejemplo n.º 4
0
        public Word Add(string text)
        {
            Word xw = new Word();

            xw.Row  = this;
            xw.Text = text;
            mWords.Add(xw);
            return(xw);
        }
Ejemplo n.º 5
0
        private decimal creditvalue = 0.01m; //TODO Segun IP creditvalue puede variar

        public void AddItem(Word word)
        {
            Word w = WordCollection.Where(p => p.Character == word.Character).FirstOrDefault();

            //Evitar duplicados en las palabras memorizadas
            if (w == null)
            {
                WordCollection.Add(word);
            }
        }
Ejemplo n.º 6
0
        // Action when user click Add button
        private void AddAction()
        {
            WordModel word = new WordModel(Word, Definition, Part);

            settings.WordsAmount += 1;
            WordCollection.Add(word);
            dataAccess.SaveWord(word);

            // this is for update the search request
            SearchRequest = _searchRequest;
        }
Ejemplo n.º 7
0
        public void Indexer_Value()
        {
            MemoryOffset Index = MemoryOffset.Zero;

            m_words.Add(Word.Zero);

            Word wordSet = new Word(0x1234);

            m_words[Index] = wordSet;

            Word wordGot = m_words[Index];

            WordTest.Check(wordSet, wordGot, "設定した値が取得できる");
        }
Ejemplo n.º 8
0
        public void Make()
        {
            Label          referringLabel = new Label("LBL001");
            WordCollection actualWords    = new WordCollection();

            // actualWords に 1 語追加して、語のオフセットを初期値の 0 以外の値にする。
            MemoryOffset wordOffset = new MemoryOffset(1);
            Word         addedWord  = new Word(0x55AA);

            actualWords.Add(addedWord);

            LabelReference actualLabelRef = LabelReference.Make(referringLabel, actualWords);

            Word[] expectedWords = TestUtils.MakeArray(addedWord, Word.Zero);
            TestUtils.CheckEnumerable(
                expectedWords, actualWords,
                "オブジェクトコードに、参照するラベルのアドレスを入れる場所として、値が 0 の語が追加される");

            LabelReference expectedLabelRef = LabelReference.MakeForUnitTest(referringLabel, wordOffset);

            Check(
                expectedLabelRef, actualLabelRef,
                "作成された labelRef には、参照するラベルとそのアドレスを入れるオフセットが入る");
        }
Ejemplo n.º 9
0
        //#define FOO (~~)     id to wc
        //#define BAR($1) (~~)     idwithargs to wc(replaced)
        //#diseble FOOBAR
        //#dim piyo, i
        //#dims puyo, j
        //static List<string> keywordsList = new List<string>();

        private void analyzeSharpDefine(StringStream st, ScriptPosition position)
        {
            //LexicalAnalyzer.SkipWhiteSpace(st);呼び出し前に行う。
            var srcID = LexicalAnalyzer.ReadSingleIdentifier(st);

            if (srcID == null)
            {
                throw new CodeEE("置換元の識別子がありません", position);
            }
            if (Config.ICVariable)
            {
                srcID = srcID.ToUpper();
            }

            //ここで名称重複判定しないと、大変なことになる
            var errMes   = "";
            var errLevel = -1;

            idDic.CheckUserMacroName(ref errMes, ref errLevel, srcID);
            if (errLevel >= 0)
            {
                ParserMediator.Warn(errMes, position, errLevel);
                if (errLevel >= 2)
                {
                    noError = false;
                    return;
                }
            }

            var hasArg = st.Current == '('; //引数を指定する場合には直後に(が続いていなければならない。ホワイトスペースも禁止。
            //1808a3 代入演算子許可(関数宣言用)
            var wc = LexicalAnalyzer.Analyse(st, LexEndWith.EoL, LexAnalyzeFlag.AllowAssignment);

            if (wc.EOL)
            {
                //throw new CodeEE("置換先の式がありません", position);
                //1808a3 空マクロの許可
                var nullmac = new DefineMacro(srcID, new WordCollection(), 0);
                idDic.AddMacro(nullmac);
                return;
            }

            var argID = new List <string>();

            if (hasArg)         //関数型マクロの引数解析
            {
                wc.ShiftNext(); //'('を読み飛ばす
                if (wc.Current.Type == ')')
                {
                    throw new CodeEE("関数型マクロの引数を0個にすることはできません", position);
                }
                while (!wc.EOL)
                {
                    var word = wc.Current as IdentifierWord;
                    if (word == null)
                    {
                        throw new CodeEE("置換元の引数指定の書式が間違っています", position);
                    }
                    word.SetIsMacro();
                    var id = word.Code;
                    if (argID.Contains(id))
                    {
                        throw new CodeEE("置換元の引数に同じ文字が2回以上使われています", position);
                    }
                    argID.Add(id);
                    wc.ShiftNext();
                    if (wc.Current.Type == ',')
                    {
                        wc.ShiftNext();
                        continue;
                    }
                    if (wc.Current.Type == ')')
                    {
                        break;
                    }
                    throw new CodeEE("置換元の引数指定の書式が間違っています", position);
                }
                if (wc.EOL)
                {
                    throw new CodeEE("')'が閉じられていません", position);
                }

                wc.ShiftNext();
            }
            if (wc.EOL)
            {
                throw new CodeEE("置換先の式がありません", position);
            }
            var destWc = new WordCollection();

            while (!wc.EOL)
            {
                destWc.Add(wc.Current);
                wc.ShiftNext();
            }
            if (hasArg) //関数型マクロの引数セット
            {
                while (!destWc.EOL)
                {
                    var word = destWc.Current as IdentifierWord;
                    if (word == null)
                    {
                        destWc.ShiftNext();
                        continue;
                    }
                    for (var i = 0; i < argID.Count; i++)
                    {
                        if (string.Equals(word.Code, argID[i], Config.SCVariable))
                        {
                            destWc.Remove();
                            destWc.Insert(new MacroWord(i));
                            break;
                        }
                    }
                    destWc.ShiftNext();
                }
                destWc.Pointer = 0;
            }
            if (hasArg) //1808a3 関数型マクロの封印
            {
                throw new CodeEE("関数型マクロは宣言できません", position);
            }
            var mac = new DefineMacro(srcID, destWc, argID.Count);

            idDic.AddMacro(mac);
        }