Rule-based static analyzer for introductory languages