private void ParseAssignStatement() { if (IsSecondTokenUniOp()) { object[] uniParse = (object[])ParseExpression(); _compileCommands.AddLast(uniParse); return; } var token = GetNext(); // type or variable-name Symbol lValue; if (token.Type == TokenType.Identifier) { lValue = _symbolTable.GetSymbol(token.Value); if (lValue == null) { _symbolTable.Define(token.Value, TokenType.Integer); lValue = _symbolTable.GetSymbol(token.Value); } } else { throw new Exception("Missing identifier"); } Match(TokenType.Equals); object compileExpression = ParseExpression(); _compileCommands.AddLast(new [] { "$assignment", lValue.Name, compileExpression }); Match(TokenType.EOL); }