Пример #1
0
 private LexicalAnalyzer setLines(LexicalAnalyzer lex)
 {
     for (int ctr = 0; ctr < lex.tokens.Count; ctr++)
     {
         for (int i = 0; i < lex.linetokens.Count; i++)
         {
             if (ctr + 1 <= lex.linetokens[i])
             {
                 lex.tokens[ctr].setLines(i + 1);
                 break;
             }
         }
     }
     return(lex);
 }
Пример #2
0
        public LexicalAnalyzer Start(string code, LexicalAnalyzer lex)
        {
            Tokens t = new Tokens();

            while (!code.Equals(""))
            {
                if (lex.isSpace(code, toks))
                {
                    code = code.Remove(0, lex.ctra);
                    toks--;
                }
                else if (lex.ReservedWords(code))
                {
                    code = code.Remove(0, lex.ctra);
                }
                else if (lex.Comment(code))
                {
                    code = code.Remove(0, lex.ctra);
                }
                else if (lex.ReservedSymbols(code))
                {
                    code = code.Remove(0, lex.ctra);
                }
                else if (lex.hasLiterals(code))
                {
                    code = code.Remove(0, lex.ctra);
                }
                else if (lex.hasIdentifier(code))
                {
                    code = code.Remove(0, lex.ctra);
                }
                else
                {
                    t = new Tokens();
                    if (lex.choice != 0)
                    {
                        switch (lex.choice)
                        {
                        case 1:
                            lex.ctra = GetCtr(code, 1);
                            break;
                        }
                    }
                    if (lex.ctra == 0 && code.Length != 1)
                    {
                        lex.ctra = GetCtr(code);
                    }
                    else if (lex.ctra == 0 && code.Length == 1)
                    {
                        lex.ctra = 1;
                    }
                    else if (lex.ctra >= code.Length)
                    {
                        lex.ctra = code.Length;
                    }
                    t.setTokens("INVALID");
                    t.setLexemes(code.Substring(0, lex.ctra));
                    lex.tokens.Add(t);
                    code = code.Remove(0, lex.ctra);
                }
                toks++;
            }


            lex.linetokens.Add(toks);
            lex = setLines(lex);

            return(lex);
        }
Пример #3
0
        //INITIALIZATION
        public LexicalAnalyzer InitializeAnalyzer(string txt, LexicalAnalyzer lex)
        {
            Boolean hastoken = false;
            Tokens  t        = new Tokens();

            //txt = txt.TrimStart();
            lex.token.Clear();
            lex.invalid = 0;
            lex.valid   = 0;
            while (txt != "")
            {
                if (hastoken = lex.GetTokenLines(txt, tokens))
                {
                    txt = txt.Remove(0, lex.ctr);
                    tokens--;
                }
                else if (hastoken = lex.GetReservedWords(txt))
                {
                    txt = txt.Remove(0, lex.ctr);
                }
                else if (hastoken = lex.GetReservedSymbols(txt))
                {
                    txt = txt.Remove(0, lex.ctr);
                }
                else if (hastoken = lex.GetLiterals(txt))
                {
                    txt = txt.Remove(0, lex.ctr);
                }
                else if (hastoken = lex.GetIdentifiers(txt))
                {
                    txt = txt.Remove(0, lex.ctr);
                }
                else
                {
                    t = new Tokens();
                    lex.invalid++;
                    // lex.token.Add("INVALID");
                    if (lex.state != 0)
                    {
                        switch (lex.state)
                        {
                        case 1:
                            lex.ctr = GetCtr(txt, 1);
                            break;
                        }
                    }
                    if (lex.ctr == 0 && txt.Length != 1)
                    {
                        lex.ctr = GetCtr(txt);
                    }
                    else if (lex.ctr == 0 && txt.Length == 1)
                    {
                        lex.ctr = 1;
                    }
                    else if (lex.ctr >= txt.Length)
                    {
                        lex.ctr = txt.Length;
                    }
                    t.setTokens("INVALID");
                    t.setLexemes(txt.Substring(0, lex.ctr));
                    lex.token.Add(t);
                    txt = txt.Remove(0, lex.ctr);
                }
                tokens++;
                //txt = txt.TrimStart();
            }
            lex.linetokens.Add(tokens);
            lex = setLines(lex);

            return(lex);
        }