Is it difficult, it is possible and yes it would be a bad idea.
I'll start with the bad idea bit. If it requires any direct change to the trans module, then you would have to redo your changes to any new version of Cerberus; and you would only be able to do it with those targets that support C++.
To do it requires that you are familiar with how parser, translators and garbage collector work to add additional custom types, along with support functions that can do assignment and casting.
The general idea is to create an extern of the type to inject into the cpp code. You do this the same way as you would bind externa classes.
e.g.
Code:
Extern
Class Long="long"
End
Then extend the CppTranslator to add functions to do casting, etc.
You then have to make sure that the new type is handled by the garbage collector.
For a very old example for Monkey X that shows the main concepts of the above. See
wxMonkey.
wxMonkey will never work as it requires passing Void as method and function parameter, which the parser will no long allow.
There is possibly another way where you could try wrapping long in a generic class, but you may still get issues with trying to use it.