Esempio n. 1
0
        public void GetSymbol()       //метод класса лексический анализатор
        {
            intFSourceColSelection++; // продвигаем номер колонки
            if (intFSourceColSelection > strFSource[intFSourceRowSelection].Length - 1)
            {
                intFSourceRowSelection++;
                if (intFSourceRowSelection <= strFSource.Length - 1)
                {
                    intFSourceColSelection = -1;
                    chrFSelection          = '\0';
                    enumFSelectionCharType = TCharType.EndRow;
                    enumFState             = TState.Continue;
                }
                else
                {
                    chrFSelection          = '\0';
                    enumFSelectionCharType = TCharType.EndText;
                    enumFState             = TState.Finish;
                }
            }
            else
            {
                chrFSelection = strFSource[intFSourceRowSelection][intFSourceColSelection]; //классификация прочитанной литеры
                if (chrFSelection == ' ')
                {
                    enumFSelectionCharType = TCharType.Space;
                }
                else if (chrFSelection >= 'a' && chrFSelection <= 'd')
                {
                    enumFSelectionCharType = TCharType.Letter;
                }
                else if (chrFSelection == '0' || chrFSelection == '1')
                {
                    enumFSelectionCharType = TCharType.Digit;
                }
                else if (chrFSelection == '/')
                {
                    enumFSelectionCharType = TCharType.ReservedSymbol;
                }
                else if (chrFSelection == '*')
                {
                    enumFSelectionCharType = TCharType.ReservedSymbol;
                }

                else if (chrFSelection == ';' || chrFSelection == ',' || chrFSelection == '[' || chrFSelection == ']' || chrFSelection == '=' || chrFSelection == ':')
                {
                    enumFSelectionCharType = TCharType.ReservedSymbol;
                }
                else
                {
                    throw new System.Exception("Cимвол вне алфавита");
                }
                enumFState = TState.Continue;
            }
        }
Esempio n. 2
0
        public void GetSymbol()
        {
            intFSourceColSelection++;
            if (intFSourceColSelection > strFSource[intFSourceRowSelection].Length - 1)
            {
                intFSourceRowSelection++;
                if (intFSourceRowSelection <= strFSource.Length - 1)
                {
                    intFSourceColSelection = -1;
                    chrFSelection          = '\0';
                    enumFSelectionCharType = TCharType.EndRow;
                    enumFState             = TState.Continue;
                }
                else
                {
                    chrFSelection          = '\0';
                    enumFSelectionCharType = TCharType.EndText;
                    enumFState             = TState.Finish;
                }
            }
            else
            {
                chrFSelection = strFSource[intFSourceRowSelection][intFSourceColSelection];
                if (chrFSelection == ' ')
                {
                    enumFSelectionCharType = TCharType.Space;
                }
                else if (chrFSelection >= 'a' && chrFSelection <= 'd')
                {
                    enumFSelectionCharType = TCharType.Letter;
                }
                else if (chrFSelection == '0' || chrFSelection == '1')
                {
                    enumFSelectionCharType = TCharType.Digit;
                }
                else if (chrFSelection == '/')
                {
                    enumFSelectionCharType = TCharType.ReservedSymbol;
                }
                else if (chrFSelection == '*')
                {
                    enumFSelectionCharType = TCharType.ReservedSymbol;
                }
                else if (chrFSelection == 'S')
                {
                    enumFSelectionCharType = TCharType.ReservedSymbol;
                }
                else if (chrFSelection == 'A')
                {
                    enumFSelectionCharType = TCharType.ReservedSymbol;
                }
                else if (chrFSelection == 'B')
                {
                    enumFSelectionCharType = TCharType.ReservedSymbol;
                }
                else if (chrFSelection == '>' || chrFSelection == '<')
                {
                    enumFSelectionCharType = TCharType.ReservedSymbol;
                }
                else if (chrFSelection == '(' || chrFSelection == ')' || chrFSelection == ':' || chrFSelection == '-' || chrFSelection == ',' || chrFSelection == '.')
                {
                    enumFSelectionCharType = TCharType.ReservedSymbol;
                }

                else
                {
                    throw new System.Exception("Cимвол вне алфавита");
                }
                enumFState = TState.Continue;
            }
        }