Python 0
I posted eariler but I used conditionals.
Here's to using no conditionals and no tokens, just keywords
def g(x): return ([[lambda : g(sum(int(y) for y in list(str(x)))),lambda: 0][[False,True].index(x in[0,1,2,4,5,7,8])], lambda: 1][[False,True].index((lambda y: y in[3,6,9])(x))])()
uses the trick that multiple of 3s have digits which add to 3
Edit: Removed unnecessary lambda
def g(x):return([[lambda: g(sum(int(y) for y in list(str(x)))),lambda:0][[False,True].index(x in[0,1,2,4,5,7,8])], lambda:1][[False,True].index(x in[3,6,9])])()
Edit: Golfed further (117 chars) still no tokens
exec"g=`x:(((`:g(sum(int(y)for y in str(x)),`:0)[x in[0,1,2,4,5,7,8]],`:1)[x in[3,6,9]])()".replace('`','lambda ')
Killed direct access for python's nifty getitem Longer at 132 char
exec"g={0}x:((({0}:g(sum(int(y)for y in str(x))),{0}:0{1}0,1,2,4,5,7,8]),{0}:1{1}3,6,9]))()".format('lambda ',').__getitem__(x in[')
http://www.codeskulptor.org/#user34_uUl7SwOBJb_0.py