Alas two things other than the AST affect the number of literals. First is the specialSelectors; these are used for sends only. So if a method only sends one of the special selectors the selector will not occur in the method as a literal. Second is the bytecode set. While we only have one set now, Sista is introducing another, and Newspeak has its own. In the current set, -1, 0, 1 & 2 and true and false have bytecodes to push these literals, so they don't occur as literals in methods. In both the Sista and the Newspeak sets there are bytecodes that encode a much wider range of integers and characters as bytecodes (a push literal bytecode takes 1 byte for the bytecode and 4 or 8 bytes for the literal; a bytecode for the 16-bit integer range takes 3 bytes).
Another thing that affects the number of literals is the compiler's decision to include selectors for optimized methods such as ifTrue: et al (which I think is a very good thing).
If you could ask the back end which literal would be encoded as a literal (and if course the question is asked when bytecode is generated) you could get a more accurate count.
HTH