Exemple #1
0
        internal T AttachWhitespace <T>(T syntaxNode, Whitespace2Collection whitespace2Set,
                                        WhitespaceKindLookup whitespaceLookup, LanguagePart languagePart)
            where T : SyntaxNode
        {
            var ret               = syntaxNode;
            var whitespaceList    = whitespace2Set.Where(x => x.LanguagePart == languagePart);
            var missingWhitespace = whitespaceLookup.NotUsedInWhitespaceList(whitespaceList);

            whitespaceList = whitespaceList
                             .Union(missingWhitespace
                                    .Select(x => new Whitespace2(languagePart, x)));
            foreach (var whitespace in whitespaceList)
            {
                ret = AttachWhitespaceItem(ret, whitespace, whitespaceLookup);
            }
            // Not sure the functional approah is best here
            ret = CheckToken <T>(ret,
                                 x => x.GetLastToken(),
                                 t => t.TrailingTrivia,
                                 s => SyntaxFactory.ParseTrailingTrivia(s),
                                 (t, trivia) => t.WithTrailingTrivia(trivia),
                                 whitespace2Set.ForceTrailing);
            ret = CheckToken <T>(ret,
                                 x => x.GetFirstToken(),
                                 t => t.LeadingTrivia,
                                 s => SyntaxFactory.ParseLeadingTrivia(s),
                                 (t, trivia) => t.WithLeadingTrivia(trivia),
                                 whitespace2Set.ForceLeading);
            return(ret);
        }
Exemple #2
0
        internal void StoreWhitespace(IDom newItem, SyntaxNode syntaxNode, LanguagePart languagePart, WhitespaceKindLookup whitespaceLookup)
        {
            if (syntaxNode == null)
            {
                return;
            }

            // For now, all expressions are held as strings, so we just care about first/last
            var nodeAsTypeSyntax = syntaxNode as TypeSyntax;

            if (nodeAsTypeSyntax != null)
            {
                StoreWhitespaceForType(newItem, nodeAsTypeSyntax, languagePart);
                return;
            }
            else
            {
                // For now, all expressions are held as strings, so we just care about first/last
                var nodeAsExpressionSyntax = syntaxNode as ExpressionSyntax;
                if (nodeAsExpressionSyntax != null)
                {
                    StoreWhitespaceForExpression(newItem, nodeAsExpressionSyntax, languagePart);
                    //return;
                }
            }

            var lookForIdentifier = whitespaceLookup.Lookup(LanguageElement.Identifier) != SyntaxKind.None;

            lookForIdentifier = StoreWhitespaceForChildren(newItem, syntaxNode,
                                                           languagePart, whitespaceLookup, lookForIdentifier);
            if (lookForIdentifier)
            {
                StoreWhitespaceForIdentifierNode(newItem, syntaxNode, languagePart);
            }
        }
 public Whitespace2 this[LanguagePart languagePart, LanguageElement languageElement]
 {
     get
     {
         return(list
                .Where(x => x.LanguageElement == languageElement &&
                       x.LanguagePart == languagePart)
                .FirstOrDefault());
     }
     set
     {
         var old = this[languagePart, languageElement];
         var pos = -1;
         if (old != null)
         {
             pos = list.IndexOf(old);
         }
         if (pos < 0)
         {
             list.Add(value);
         }
         else
         {
             list.RemoveAt(pos);
             list.Insert(pos, value);
         }
     }
 }
 public Whitespace2(LanguagePart languagePart, LanguageElement languageElement,
                    string leadingWS, string trailingWS, string trailingComment)
 {
     LanguagePart       = languagePart;
     LanguageElement    = languageElement;
     LeadingWhitespace  = leadingWS;
     TrailingWhitespace = trailingWS;
     TrailingComment    = trailingComment;
 }
Exemple #5
0
        private void SetWhitespaceForSemiColon(ForStatementSyntax syntax, int semiColonNumber,
                                               RDomForStatement newItem, LanguagePart languagePart)
        {
            var token = semiColonNumber == 1
                         ? syntax.FirstSemicolonToken
                         : syntax.SecondSemicolonToken;
            var whitespace = new Whitespace2(languagePart, LanguageElement.EndOfLine,
                                             token.LeadingTrivia.ToString(), token.TrailingTrivia.ToString(), null);

            newItem.Whitespace2Set.Add(whitespace);
        }
Exemple #6
0
        private void StoreWhitespaceForIdentifierNode(IDom newItem, SyntaxNode syntaxNode,
                                                      LanguagePart languagePart)
        {
            // assume if it was a token we already found it
            var idNode = syntaxNode.ChildNodes().OfType <NameSyntax>().FirstOrDefault();

            if (idNode != null)
            {
                StoreWhitespaceForFirstAndLastToken(newItem, idNode,
                                                    languagePart, LanguageElement.Identifier);
            }
        }
Exemple #7
0
        internal void StoreWhitespaceForToken(IDom newItem, SyntaxToken token,
                                              LanguagePart languagePart, LanguageElement languageElement)
        {
            if (languagePart == LanguagePart.None)
            {
                languagePart = LanguagePart.Current;
            }
            var newWS = new Whitespace2(languagePart, languageElement);

            newWS.LeadingWhitespace  = GetLeadingWhitespaceForToken(token.LeadingTrivia);
            newWS.TrailingWhitespace = GetTrailingWhitespaceForToken(token.TrailingTrivia);
            // TODO: Add EOL comments here
            newItem.Whitespace2Set[languagePart, languageElement] = newWS;
        }
Exemple #8
0
        public void StoreWhitespaceForFirstAndLastToken(IDom newItem, SyntaxNode node,
                                                        LanguagePart languagePart,
                                                        LanguageElement languageElement)
        {
            if (languagePart == LanguagePart.None)
            {
                languagePart = LanguagePart.Current;
            }
            var newWS      = new Whitespace2(languagePart, languageElement);
            var firstToken = node.GetFirstToken();
            var lastToken  = node.GetLastToken();

            newWS.LeadingWhitespace  = GetLeadingWhitespaceForToken(firstToken.LeadingTrivia);
            newWS.TrailingWhitespace = GetTrailingWhitespaceForToken(lastToken.TrailingTrivia);
            // TODO: Add EOL comments here
            newItem.Whitespace2Set[languagePart, languageElement] = newWS;
        }
Exemple #9
0
        private bool StoreWhitespaceForChildren(IDom newItem, SyntaxNode syntaxNode,
                                                LanguagePart languagePart, WhitespaceKindLookup whitespaceLookup, bool lookForIdentifier)
        {
            foreach (var token in syntaxNode.ChildTokens())
            {
                var kind            = token.CSharpKind();
                var languageElement = whitespaceLookup.Lookup(kind);
                if (languageElement == LanguageElement.Identifier)
                {
                    lookForIdentifier = false;
                }
                if (languageElement != LanguageElement.NotApplicable)
                {
                    StoreWhitespaceForToken(newItem, token, languagePart, languageElement);
                }
            }

            return(lookForIdentifier);
        }
 public Whitespace2(LanguagePart languagePart, LanguageElement languageElement)
 {
     LanguagePart    = languagePart;
     LanguageElement = languageElement;
 }
Exemple #11
0
 public WordCard()
 {
     this.EnglishWord = null;
     this.RussianWord = null;
     this.typeL       = LanguagePart.Прочие;
 }
Exemple #12
0
 public WordCard(String english, List <String> russian, LanguagePart typeL)
 {
     this.EnglishWord = english;
     this.RussianWord = russian;
     this.typeL       = typeL;
 }
 public void StoreWhitespaceForFirstAndLastToken(IDom newItem, SyntaxNode node,
                                                 LanguagePart languagePart,
                                                 LanguageElement languageElement)
 {
     triviaManager.StoreWhitespaceForFirstAndLastToken(newItem, node, languagePart, languageElement);
 }
 public void StoreWhitespaceForToken(IDom newItem, SyntaxToken token,
                                     LanguagePart languagePart, LanguageElement languageElement)
 {
     triviaManager.StoreWhitespaceForToken(newItem, token, languagePart, languageElement);
 }
Exemple #15
0
 private void StoreWhitespaceForType(IDom newItem, TypeSyntax nodeAsTypeSyntax, LanguagePart languagePart)
 {
     StoreWhitespaceForFirstAndLastToken(newItem, nodeAsTypeSyntax, languagePart, LanguageElement.LastToken);
 }
Exemple #16
0
 public static T AttachWhitespace <T>(T syntaxNode, Whitespace2Collection whitespace2Set, WhitespaceKindLookup whitespaceLookup, LanguagePart languagePart)
     where T : SyntaxNode
 {
     return(triviaManager.AttachWhitespace(syntaxNode, whitespace2Set, whitespaceLookup, languagePart));
 }
Exemple #17
0
 private void StoreWhitespaceForExpression(IDom newItem, ExpressionSyntax syntaxNode,
                                           LanguagePart languagePart)
 {
     StoreWhitespaceForFirstAndLastToken(newItem, syntaxNode,
                                         languagePart, LanguageElement.Expression);
 }
 public void StoreWhitespace(IDom newItem, SyntaxNode syntaxNode, LanguagePart languagePart, WhitespaceKindLookup whitespaceLookup)
 {
     triviaManager.StoreWhitespace(newItem, syntaxNode, languagePart, whitespaceLookup);
 }
Exemple #19
0
        public Form2()
        {
            Random r = new Random();

            this.Size = new Size(330, 330);
            this.Text = "Словарь";

            InitializeComponent();

            #region UI elements
            l1 = new Label()
            {
                Text     = "Выберите режим теста: ",
                Location = new Point(10, 10),
                AutoSize = true,
                Size     = new Size(150, 30)
            };
            Controls.Add(l1);


            r1 = new RadioButton()
            {
                Text = "Перевод с русского на английский",
                Left = l1.Left,
                Top  = l1.Top + 25,
            };
            r1.AutoSize = true;
            r1.Checked  = true;
            this.Controls.Add(r1);

            r2 = new RadioButton()
            {
                Text = "Перевод с английского на русский",
                Left = l1.Left,
                Top  = r1.Top + 25,
            };

            r2.AutoSize = true;
            this.Controls.Add(r2);

            r3 = new RadioButton()
            {
                Text = "Тестовый: случайные слова",
                Left = l1.Left,
                Top  = r2.Top + 25,
            };

            r3.AutoSize = true;
            this.Controls.Add(r3);

            r4 = new RadioButton()
            {
                Text = "Тестовый: слова, с наибольшим количеством ошибок",
                Left = l1.Left,
                Top  = r3.Top + 25,
            };

            r4.AutoSize = true;
            this.Controls.Add(r4);

            t1 = new TextBox()
            {
                Left = l1.Left,
                Top  = l1.Bottom + 60,
                Size = new Size(100, 60)
            };
            t1.Visible = false;
            Controls.Add(t1);


            bt1 = new Button()
            {
                Text = "Принять",
                Left = t1.Left + 120,
                Top  = t1.Top,
                Size = new Size(60, 25)
            };

            bt1.Visible = false;
            this.Controls.Add(bt1);
            bt1.Click += ButtonClick1;

            setInvisible(true);



            bt2 = new Button()
            {
                Text = "Начать",
                Left = t1.Left + 100,
                Top  = t1.Top + 70,
                Size = new Size(60, 25)
            };

            this.Controls.Add(bt2);
            bt2.Click += ButtonClick2;

            l2 = new Label()
            {
                Top      = l1.Bottom + 100,
                Left     = t1.Left,
                AutoSize = true,
                Size     = new Size(150, 30)
            };
            Controls.Add(l2);

            bt3 = new Button()
            {
                Text = "Завершить",
                Left = 220,
                Top  = 250,
                Size = new Size(80, 25)
            };

            bt3.Visible = false;
            this.Controls.Add(bt3);
            bt3.Click += ButtonClick3;

            bt4 = new Button()
            {
                Text = "Назад",
                Left = 220,
                Top  = 250,
                Size = new Size(80, 25)
            };

            bt4.Visible = false;
            this.Controls.Add(bt4);
            bt4.Click += ButtonClick4;

            #endregion

            void ButtonClick1(object sender, EventArgs e)
            {
                if (r1.Checked == true)
                {
                    l1.Text = @"


Введите руссое слово: ";
                    if (rusTranslation(t1.Text) != null)
                    {
                        l2.Text = "Английский перевод: " + rusTranslation(t1.Text) + " (" + langType(rusTranslation(t1.Text)) + ")";
                    }
                    else
                    {
                        l2.Text = "Слово не найдено";
                    }
                }
                else if (r2.Checked == true)
                {
                    l1.Text = @"


Введите английское  слово: ";
                    if (engTranslation(t1.Text) != null)
                    {
                        l2.Text = "Русский перевод: " + engTranslation(t1.Text) + " (" + langType(t1.Text) + ")";
                    }
                    else
                    {
                        l2.Text = "Слово не найдено";
                    }
                }
                else
                {
                    if (tmp.translationCheck(t1.Text))
                    {
                        l2.Text = "Правильно!";
                        right++;
                    }
                    else
                    {
                        l2.Text = "Не правильно!";
                        wrong++;
                    }
                    if (r4.Checked == true)
                    {
                        if (words2.Count != 0)
                        {
                            s = words2.Dequeue();
                        }
                        else
                        {
                            t1.Visible  = false;
                            bt1.Visible = false;
                            s           = "";
                        }
                    }

                    else
                    {
                        randomList();
                        int i = r.Next(0, words.Count - 1);
                        s = (String)words[i];
                    }
                    if ((this.Owner as Form1).dic.TryGetValue(s, out tmp))
                    {
                        l1.Text = @"Английское слово: " + tmp.EnglishWord + @" (" + langType(tmp.EnglishWord) + @")


Введите русский перевод: ";
                    }
                    else
                    {
                        l1.Text = "Слова закончились";
                    }
                }
            }

            void ButtonClick2(object sender, EventArgs e)
            {
                wrong   = 0;
                right   = 0;
                l2.Text = "";
                if (r1.Checked == true)
                {
                    l1.Text     = @"


Введите руссое слово: ";
                    bt4.Visible = true;
                }
                else if (r2.Checked == true)
                {
                    l1.Text     = @"


Введите английское  слово: ";
                    bt4.Visible = true;
                }
                else
                {
                    if (r4.Checked == true)
                    {
                        mostErrorList();
                        s = words2.Dequeue();
                    }
                    else
                    {
                        randomList();
                        int i = r.Next(0, words.Count - 1);
                        s = (String)words[i];
                    }
                    (this.Owner as Form1).dic.TryGetValue(s, out tmp);
                    l1.Text     = @"Английское слово: " + tmp.EnglishWord + @" (" + langType(tmp.EnglishWord) + @")


Введите русский перевод: ";
                    bt3.Visible = true;
                }


                setInvisible(false);

                t1.Visible  = true;
                bt1.Visible = true;
                bt2.Visible = false;


                t1.Visible = true;
            }

            void ButtonClick3(object sender, EventArgs e)
            {
                setInvisible(true);
                bt1.Visible = false;
                bt2.Visible = true;
                t1.Visible  = false;
                bt3.Visible = false;
                l1.Text     = "Выберите режим:";
                l2.Text     = @"

       

              
СТАТИСТИКА

Число правильных ответов: " + right + @"

Число ошибок: " + wrong;
            }

            void ButtonClick4(object sender, EventArgs e)
            {
                setInvisible(true);
                bt1.Visible = false;
                t1.Visible  = false;
                bt2.Visible = true;
                l1.Text     = "Выберите режим:";
                l2.Text     = "";
                bt4.Visible = false;
            }

            #region functions
            void mostErrorList()
            {
                double erAvg = (from n2 in (this.Owner as Form1).dic.Values select n2.Error).Average();

                foreach (WordCard s in (this.Owner as Form1).dic.Values)
                {
                    if (s.Error >= erAvg)
                    {
                        words2.Enqueue(s.EnglishWord);
                    }
                }
            }

            void randomList()
            {
                foreach (string s in (this.Owner as Form1).dic.Keys)
                {
                    words.Add(s);
                }
            }

            String rusTranslation(String rus)
            {
                foreach (WordCard wc in (this.Owner as Form1).dic.Values)
                {
                    bool flag = false;
                    foreach (String s in wc.RussianWord)
                    {
                        if (s == rus)
                        {
                            flag = true;
                        }
                    }
                    if (flag)
                    {
                        return(wc.EnglishWord);
                    }
                }

                return(null);
            }

            String langType(String eng)
            {
                LanguagePart tmp = LanguagePart.Прочие;

                foreach (WordCard wc in (this.Owner as Form1).dic.Values)
                {
                    if (wc.EnglishWord == eng)
                    {
                        tmp = wc.langPart;
                    }
                }

                switch (tmp)
                {
                case LanguagePart.Глагол: return("Глагол"); break;

                case LanguagePart.Существительное: return("Существительное"); break;

                case LanguagePart.Прилагательное: return("Прилагательное"); break;

                case LanguagePart.Наречие: return("Наречие"); break;

                case LanguagePart.Прочие: return("Прочие"); break;
                }
                return(null);
            }

            String engTranslation(String eng)
            {
                foreach (string s in (this.Owner as Form1).dic.Keys)
                {
                    if (eng == s)
                    {
                        if (!(this.Owner as Form1).dic.TryGetValue(s, out tmp))
                        {
                            l2.Text = "Слово не найдено";
                        }

                        else
                        {
                            String russian = "";

                            foreach (String pair in tmp.RussianWord)
                            {
                                russian = russian + pair + ", ";
                            }
                            return(russian);
                        }
                    }
                }

                return(null);
            }

            #endregion
        }