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(); }
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); }
internal static WordCollection MakeWords(Int32 count) { WordCollection words = new WordCollection(); words.Add(Word.Zero, count); return(words); }
public Word Add(string text) { Word xw = new Word(); xw.Row = this; xw.Text = text; mWords.Add(xw); return(xw); }
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); } }
// 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; }
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, "設定した値が取得できる"); }
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 には、参照するラベルとそのアドレスを入れるオフセットが入る"); }
//#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); }