public void analizeExpresiones()
 {
     foreach (Regex TempRegex in Expresiones)
     {
         TempRegex.createRegexAFN();
         TempRegex.graphAFN();
         TempRegex.graphAFD();
     }
     Console.WriteLine("dsad");
 }
        public static IEnumerable <SnapshotHelper> GetTokens(SnapshotSpan span)
        {
            string            TempRegex; // temp var string
            ITextSnapshotLine containingLine = span.Start.GetContainingLine();
            int    curLoc        = containingLine.Start.Position;
            string formattedLine = containingLine.GetText();

            int   commentMatch = int.MaxValue;
            Regex reg          = new Regex(CommentRegex);

            foreach (Match match in reg.Matches(formattedLine))
            {
                commentMatch = match.Index < commentMatch ? match.Index : commentMatch;
                yield return(new SnapshotHelper(new SnapshotSpan(new SnapshotPoint(span.Snapshot, match.Index + curLoc), match.Length), Merlin32TokenTypes.Merlin32Comment));
            }

            reg = new Regex(TextRegex);
            foreach (Match match in reg.Matches(formattedLine))
            {
                if (match.Index < commentMatch)
                {
                    yield return(new SnapshotHelper(new SnapshotSpan(new SnapshotPoint(span.Snapshot, match.Index + curLoc), match.Length), Merlin32TokenTypes.Merlin32Text));
                }
            }

            // OG NEW
            // OPCODES
            TempRegex = "";
            foreach (Merlin32Opcodes token in Enum.GetValues(typeof(Merlin32Opcodes)))
            {
                TempRegex += token.ToString() + ("|");
            }
            // we remove the last "|" added
            TempRegex    = TempRegex.Remove(TempRegex.LastIndexOf("|", StringComparison.Ordinal));
            _opcodeRegex = string.Format(RegexBoilerplate, Opcode, TempRegex);

            reg = new Regex(_opcodeRegex, RegexOptions.IgnoreCase);
            Match opcodeMatch = reg.Match(formattedLine);

            if (opcodeMatch.Success)
            {
                foreach (Capture opcode in opcodeMatch.Groups[Opcode].Captures)
                {
                    // An opcode after within a comment doesn't get a SnapShotSpan...
                    if (opcode.Index < commentMatch)
                    {
                        yield return(new SnapshotHelper(new SnapshotSpan(new SnapshotPoint(span.Snapshot, opcode.Index + curLoc), opcode.Length), Merlin32TokenTypes.Merlin32Opcode));
                    }
                }
            }

            // OG NEW
            // DIRECTIVES
            TempRegex = "";
            string elupDirective = Resources.directives.ELUP;

            foreach (Merlin32Directives token in Enum.GetValues(typeof(Merlin32Directives)))
            {
                if (token.ToString() != elupDirective)
                {
                    TempRegex += token.ToString() + ("|");
                }
            }
            // we remove the last "|" added
            TempRegex       = TempRegex.Remove(TempRegex.LastIndexOf("|", StringComparison.Ordinal));
            _directiveRegex = string.Format(RegexBoilerplate, Directive, TempRegex);

            reg = new Regex(_directiveRegex, RegexOptions.IgnoreCase);
            Match directiveMatch = reg.Match(formattedLine);

            if (directiveMatch.Success)
            {
                foreach (Capture directive in directiveMatch.Groups[Directive].Captures)
                {
                    if (directive.Index < commentMatch)
                    {
                        yield return(new SnapshotHelper(new SnapshotSpan(new SnapshotPoint(span.Snapshot, directive.Index + curLoc), directive.Length), Merlin32TokenTypes.Merlin32Directive));
                    }
                }
            }

            // We also need to check for special ELUP directive...
            reg = new Regex(Resources.directives.ELUPRegex);
            Match elupMatch = reg.Match(formattedLine);

            if (elupMatch.Success)
            {
                foreach (Capture elup in elupMatch.Groups[Elup].Captures)
                {
                    if (elup.Index < commentMatch)
                    {
                        yield return(new SnapshotHelper(new SnapshotSpan(new SnapshotPoint(span.Snapshot, elup.Index + curLoc), elup.Length), Merlin32TokenTypes.Merlin32Directive));
                    }
                }
            }

            // OG NEW
            // DATADEFINES
            TempRegex = "";
            foreach (Merlin32DataDefines token in Enum.GetValues(typeof(Merlin32DataDefines)))
            {
                TempRegex += token.ToString() + ("|");
            }
            // we remove the last "|" added
            TempRegex  = TempRegex.Remove(TempRegex.LastIndexOf("|", StringComparison.Ordinal));
            _dataRegex = string.Format(RegexBoilerplate, Data, TempRegex);

            reg = new Regex(_dataRegex, RegexOptions.IgnoreCase);
            Match dataMatch = reg.Match(formattedLine);

            if (dataMatch.Success)
            {
                foreach (Capture data in dataMatch.Groups[Data].Captures)
                {
                    if (data.Index < commentMatch)
                    {
                        yield return(new SnapshotHelper(new SnapshotSpan(new SnapshotPoint(span.Snapshot, data.Index + curLoc), data.Length), Merlin32TokenTypes.Merlin32DataDefine));
                    }
                }
            }
        }