コード例 #1
0
ファイル: Compiler.cs プロジェクト: boaz23/ECS
        private JackProgram Parse(TokensStack sTokens)
        {
            JackProgram program = new JackProgram();

            program.Parse(sTokens);
            return(program);
        }
コード例 #2
0
ファイル: Compiler.cs プロジェクト: boaz23/ECS
        public List <string> Compile(string sInputFile)
        {
            List <string> lCodeLines = ReadFile(sInputFile);
            List <Token>  lTokens    = Tokenize(lCodeLines);
            TokensStack   sTokens    = new TokensStack();

            for (int i = lTokens.Count - 1; i >= 0; i--)
            {
                sTokens.Push(lTokens[i]);
            }
            JackProgram program = Parse(sTokens);

            return(null);
        }
コード例 #3
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);
        }