def insert_id(self, sname, skind, skinds, stype):
index = self.lookup_symbol(sname, skinds)<EOL>if index == None:<EOL><INDENT>index = self.insert_symbol(sname, skind, stype)<EOL>return index<EOL><DEDENT>else:<EOL><INDENT>raise SemanticException("<STR_LIT>" % sname)<EOL><DEDENT>
Inserts a new identifier at the end of the symbol table, if possible.
           Returns symbol index, or raises an exception if the symbol alredy exists
           sname   - symbol name
           skind   - symbol kind
           skinds  - symbol kinds to check for
           stype   - symbol type