Exemplo n.º 1
0
        public int ValidSentence(string Sentence, int line)
        {
            // Regex regexReadLine = new Regex(@""+ MReadline +@"|(\w+\s+(\=)\s" + MReadline + @")");
            int    res = 0;
            string Mgrammarsentence     = string.Empty;
            Regex  regexComment         = new Regex(@"//\s+\b[a-zA-z]\w+");
            Regex  regexNamespace       = new Regex(@"" + MNamespace + @"\s\w+$");
            Regex  regexClass           = new Regex(@"" + MClass + @"\s\w+$");
            Regex  regexStatic          = new Regex(@"" + MStatic + @"\s" + MVoid + @"\s" + MMain + "$");
            Regex  regexDeclareVariable = new Regex(@"((" + MInt + @")|(" + MString + @"))+\s[a-z]\w+$");
            Regex  regexIntAsig         = new Regex(@"\w+\s+(\=)+\s+(\d|" + MInt + @"\(" + MReadline + @"\))$");
            Regex  regexStringAsig      = new Regex(@"\w+\s+(\=)+\s+(\'[\w\s\:\-\,]*\')$");
            Regex  regexConsole         = new Regex(@"" + MConsole + @"\s(\(\'[\w\s\:\-\,]*\'\))|(\(\'[\w\s\:\-\,]*\'\,\s\w+\))$");
            Regex  regexReadLine        = new Regex(@"" + MReadline + "");
            //  Regex regexReadLineAsig = new Regex(@"(\w+\s+(\=)\s" + MInt + @"\(" + MReadline + @"\))");
            Regex regexSwitch        = new Regex(@"" + MSwitch + @"+(\(\w+\))$");
            Regex regexCase          = new Regex(@"" + MCase + @"\s(\'\w+\'|\d)\:$");
            Regex regexBreak         = new Regex(@"" + MBreak + "");
            Regex regexDefault       = new Regex(@"" + MDefault + @"\:$");
            Regex rgexif             = new Regex(@"" + MIf + @"\s+(\w+|\d)+\s+(\=\=|\!\=|\>|\<)+\s+(\w+|\d)\:$");
            Regex regexDo            = new Regex(@"" + MDo + "");
            Regex regexWhile         = new Regex(@"" + MWhile + @"[\(][a-zA-z]\w+[\)]");
            Regex regexBraketopen    = new Regex(@"\{");
            Regex regexBraketclose   = new Regex(@"\}");
            Regex regexOperationAsig = new Regex(@"\w+\s+(\=)+\s+(\d|\w+)+\s+(\*|-|\/|\+)+\s+(\d|\w+)$");

            switch (Sentence)
            {
            case var vv when regexBraketopen.IsMatch(Sentence):
                Mgrammarsentence = "[Abre llave]";

                res = 3;
                break;

            case var vv when regexBraketclose.IsMatch(Sentence):
                Mgrammarsentence = "[Cierra llave]";

                res = 4;
                break;

            case var vv when regexComment.IsMatch(Sentence):
                Mgrammarsentence = "[un comentario]";

                res = 2;
                break;

            case var vv when regexReadLine.IsMatch(Sentence):
                Mgrammarsentence = "[Declaracion la sentencia ReadLine]";

                res = 1;
                break;

            case var vv when regexNamespace.IsMatch(Sentence):
                Mgrammarsentence = "[Declaracion del mnamespace]";

                numNamespace += 1;
                res           = 1;
                break;

            case var vv when regexClass.IsMatch(Sentence):
                Mgrammarsentence = "[Declaracion de mclase]";

                listmclass.Add(Sentence);
                numclass += 1;
                res       = 1;
                break;

            case var vv when regexStatic.IsMatch(Sentence):
                Mgrammarsentence = "[Declaracion de metodo principal mstatic]";

                method.Add(Sentence);
                numMethod += 1;
                res        = 1;
                break;

            case var vv when regexDeclareVariable.IsMatch(Sentence):
                Mgrammarsentence = "[Declaracion de variable]";

                declareVariable.Add(Sentence);
                numVaribles += 1;
                res          = 1;
                break;

            case var vv when regexIntAsig.IsMatch(Sentence):
                Mgrammarsentence = "[Asignacion de variable entero]";

                string[] mvar1 = Sentence.Split(' ');
                asigVariable.Add(mvar1[0]);
                res = 1;
                break;

            case var vv when regexStringAsig.IsMatch(Sentence):
                Mgrammarsentence = "[Asignacion de variable string]";

                string[] mvar2 = Sentence.Split(' ');
                asigVariable.Add(mvar2[0]);
                res = 1;
                break;

            case var vv when regexOperationAsig.IsMatch(Sentence):
                Mgrammarsentence = "[Asignacion y operacion de varibles,Enteros]";

                string[] mvar3 = Sentence.Split(' ');
                asigVariable.Add(mvar3[0]);
                res = 1;
                break;

            //   case var vv when regexReadLineAsig.IsMatch(Sentence):
            //     Mgrammarsentence = "[Asignacion y convertir a int]";
            //    string[] mvar4 = Sentence.Split(' ');
            //   asigVariable.Add(mvar4[0]);
            //   res = 1;
            // break;
            case var vv when regexConsole.IsMatch(Sentence):
                Mgrammarsentence = "[Declaracion de la sentencia ->" + Sentence + "]";

                res = 1;
                break;

            case var vv when regexSwitch.IsMatch(Sentence):
                Mgrammarsentence = "[Declaracion del control ->" + Sentence + "]";

                res = 1;
                break;

            case var vv when regexCase.IsMatch(Sentence):
                Mgrammarsentence = "[Declaracion del opcion ->" + Sentence + "]";

                res = 1;
                break;

            case var vv when regexDefault.IsMatch(Sentence):
                Mgrammarsentence = "[Declaracion del opcion ->" + Sentence + "]";

                res = 1;
                break;

            case var vv when regexBreak.IsMatch(Sentence):
                Mgrammarsentence = "[Declaracion del interruptor ->" + Sentence + "]";

                res = 1;
                break;

            case var vv when rgexif.IsMatch(Sentence):
                Mgrammarsentence = "[Declaracion del controlador " + Sentence + "]";

                res = 1;
                break;

            case var vv when regexDo.IsMatch(Sentence):
                Mgrammarsentence = "[Declaracion del incio de bucle -> " + Sentence + "]";

                res = 1;
                break;

            case var vv when regexWhile.IsMatch(Sentence):
                Mgrammarsentence = "[Declaracion del bucle ->" + Sentence + "]";

                res = 1;
                break;

            default:
                ErrorLog.AddError("-> Error en: [" + Sentence + "] ->linea: " + line);
                Mgrammarsentence = "[Declaracion desconocida del lenguaje.!]";
                res = 0;
                break;
            }

            TokenMewtow.AddListSentence(line + ";" + Mgrammarsentence + ";" + Sentence);
            return(res);
        }