added rules for identifier names, and in process realized algorithm is very very wrong