public LetStatement ParseStatement(List <Token> lTokens) { TokensStack sTokens = new TokensStack(); for (int i = lTokens.Count - 1; i >= 0; i--) { sTokens.Push(lTokens[i]); } LetStatement s = new LetStatement(); s.Parse(sTokens); return(s); }
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); }
public List <LetStatement> ParseAssignments(List <string> lLines) { List <LetStatement> lParsed = new List <LetStatement>(); List <Token> lTokens = Tokenize(lLines); TokensStack sTokens = new TokensStack(); for (int i = lTokens.Count - 1; i >= 0; i--) { sTokens.Push(lTokens[i]); } while (sTokens.Count > 0) { LetStatement ls = new LetStatement(); ls.Parse(sTokens); lParsed.Add(ls); } return(lParsed); }
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); }
static void TestSimplifyLetStatement() { List <VarDeclaration> varDecs = new List <VarDeclaration>(); char chr = 'a'; while (chr <= 'g') { VarDeclaration varDec = new VarDeclaration(null, "" + chr); varDecs.Add(varDec); chr++; } VarDeclaration x = new VarDeclaration(null, "x"); varDecs.Add(x); string strExpression = "(((a + b) - (c - d)) + (e - (f + g)))"; Compiler c = new Compiler(); List <Token> tokensList = c.Tokenize(strExpression, 0); TokensStack tokens = new TokensStack(); for (int i = tokensList.Count - 1; i >= 0; i--) { tokens.Push(tokensList[i]); } LetStatement example = new LetStatement(); Expression expression = Expression.Create(tokens); expression.Parse(tokens); LetStatement let = new LetStatement(); let.Variable = "x"; let.Value = expression; List <LetStatement> letStatements = c.SimplifyExpressions(let, varDecs); for (int i = 0; i < letStatements.Count; i++) { Console.WriteLine(letStatements[i]); } Console.WriteLine("Simplifying Expressions completetd"); }