Έχοντας βρεί τις δεσμευμένες λέξεις από ένα άλλο project είπα να φτοιάξω έναν λεκτικό αναλυτή για SQL και να χρωματίζω τι λέξεις και τους τελεστές.
Έχω κάνει κάτι που δουλεύει μεν σωστά αλλά είναι τραγικά αργό

Δεν γνωρίζω καλά το RichTextBox Και σκέφτηκα ότι κάτι μου διαφεύγει οπότε σας παραθέτω τι κάνω.
Κάθε φορά που αλλάζει κάτι στον editor(OnTextChanged) , διατρέχω όλο το κείμενο ψάχνοντας για αναγνωρίσιμες λεκτικές μονάδες τις οποίες και αποθηκεύω σε ένα SortedList(aka Lex (key,value)-->(StartingIndex λεκτικής μονάδας, EndinxIndex λεκτικής μονάδας) . Μόλις τελειώσω,διατρέχω την λίστα και για κάθε λεκτική μονάδα αποφασίζω το χρώμα της. Οι αλλαγές γίνονται σε ένα dummy RichTextBox και μόλις τελειώσουν το περιεχόμενό του αντιγράφεται αυτούσιο στο κανονικό μου RichTextBox. Αυτό το κάνω γιατί παρατηρείται Flickering κατά την αλλαγή χρωμάτων.
Από ότι παρατήρησα αυτό που αργεί είναι η απαρίθμηση των λεκτικών μονάδων και ο χρωματισμός τους που γίνεται σε αυτή τη συνάρτηση.
private void PaintLexWords()
{
dummyEditor.Select(0, dummyEditor.Text.Length);
dummyEditor.SelectionColor = Color.Black;
dummyEditor.Select(cursorPos, 0);
foreach (int index in Lex.Keys)
{
string token = dummyEditor.Text.Substring(index, Convert.ToInt32(Lex[index]) - index);
dummyEditor.Select(index, Convert.ToInt32(Lex[index]) - index);
dummyEditor.SelectionColor = GetTokenColor(token);
dummyEditor.Select(cursorPos, 0);
dummyEditor.SelectionColor = _defaultColor;
}
}Έχετε καμοιά ιδέα

Βασικά αυτά τα καταραμένα τα strings (με μονά και διπλά "αυτάκια") είναι που δημιουργούν προβλήματα και με αναγκάζουν να διατρέχω όλο τον editor Κάθε φορά.