Пример #1
0
 static bool Test4()
 {
     try
     {
         Compiler      c          = new Compiler();
         List <string> lCodeLines = c.ReadFile(@"GCDErr.Jack");
         List <Token>  lTokens    = c.Tokenize(lCodeLines);
     }
     catch (SyntaxErrorException e)
     {
         return(true);
     }
     return(false);
 }
Пример #2
0
        private static bool TestParse()
        {
            try
            {
                Compiler      sc      = new Compiler();
                List <string> lLines  = sc.ReadFile(@"Program.Jack");
                List <Token>  lTokens = sc.Tokenize(lLines);
                TokensStack   sTokens = new TokensStack();
                for (int i = lTokens.Count - 1; i >= 0; i--)
                {
                    sTokens.Push(lTokens[i]);
                }
                JackProgram prog = new JackProgram();
                prog.Parse(sTokens);
                string sAfterParsing = prog.ToString();
                sAfterParsing = sAfterParsing.Replace(" ", "");
                sAfterParsing = sAfterParsing.Replace("\t", "");
                sAfterParsing = sAfterParsing.Replace("\n", "");
                sAfterParsing = sAfterParsing.ToLower();

                string sAllTokens = "";
                foreach (Token t in lTokens)
                {
                    sAllTokens += GetName(t).ToLower();
                }


                for (int i = 0; i < sAllTokens.Length; i++)
                {
                    if (sAllTokens[i] != sAfterParsing[i])
                    {
                        return(false);
                    }
                }
                return(true);
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }
            return(false);
        }
Пример #3
0
        static bool Test3()
        {
            Compiler      c          = new Compiler();
            List <string> lCodeLines = c.ReadFile(@"BinarySearch.Jack");
            List <Token>  lTokens    = c.Tokenize(lCodeLines);
            Token         t          = lTokens[0];

            if (t.ToString() != "function" || !(t is Statement))
            {
                return(false);
            }
            t = lTokens[20];
            if (t.ToString() != "end" || !(t is Identifier) || t.Line != 2 || t.Position != 9)
            {
                return(false);
            }
            t = lTokens[50];
            if (t.ToString() != "+" || !(t is Operator) || t.Line != 9 || t.Position != 22)
            {
                return(false);
            }
            return(true);
        }
Пример #4
0
        static bool Test2()
        {
            Compiler      c          = new Compiler();
            List <string> lCodeLines = c.ReadFile(@"Fib.Jack");
            List <Token>  lTokens    = c.Tokenize(lCodeLines);
            Token         t          = lTokens[0];

            if (t.ToString() != "function" || !(t is Statement))
            {
                return(false);
            }
            t = lTokens[20];
            if (t.ToString() != "2" || !(t is Number) || t.Line != 5 || t.Position != 8)
            {
                return(false);
            }
            t = lTokens[50];
            if (t.ToString() != "}" || !(t is Parentheses) || t.Line != 12 || t.Position != 0)
            {
                return(false);
            }
            return(true);
        }
Пример #5
0
        static bool Test1()
        {
            Compiler      c          = new Compiler();
            List <string> lCodeLines = c.ReadFile(@"GCD.Jack");
            List <Token>  lTokens    = c.Tokenize(lCodeLines);
            Token         t          = lTokens[0];

            if (t.ToString() != "function" || !(t is Statement))
            {
                return(false);
            }
            t = lTokens[20];
            if (t.ToString() != "=" || t.Line != 3 || t.Position != 11)
            {
                return(false);
            }
            t = lTokens[50];
            if (t.ToString() != "}" || !(t is Parentheses) || t.Line != 7 || t.Position != 1)
            {
                return(false);
            }
            return(true);
        }