Fix #41, optimize variable parser