FYI, rustc
can dump AST after parsing:
const X: i32 = -123456i32;
$ rustc -Z ast-json c.rs
{“module”:{“inner”:{“lo”:0,“hi”:26},“items”:[{“ident”:"",“attrs”:[{“node”:{“id”:{"_field0":921},“style”:“Outer”,“value”:{“node”:{“variant”:“MetaWord”,“fields”:[“prelude_import”]},“span”:{“lo”:0,“hi”:0}},“is_sugared_doc”:false},“span”:{“lo”:0,“hi”:0}}],“id”:2,“node”:{“variant”:“ItemUse”,“fields”:[{“node”:{“variant”:“ViewPathGlob”,“fields”:[{“span”:{“lo”:0,“hi”:0},“global”:false,“segments”:[{“identifier”:“std”,“parameters”:{“variant”:“AngleBracketed”,“fields”:[{“lifetimes”:[],“types”:[],“bindings”:[]}]}},{“identifier”:“prelude”,“parameters”:{“variant”:“AngleBracketed”,“fields”:[{“lifetimes”:[],“types”:[],“bindings”:[]}]}},{“identifier”:“v1”,“parameters”:{“variant”:“AngleBracketed”,“fields”:[{“lifetimes”:[],“types”:[],“bindings”:[]}]}}]}]},“span”:{“lo”:0,“hi”:0}}]},“vis”:“Inherited”,“span”:{“lo”:0,“hi”:0}},{“ident”:“std”,“attrs”:[{“node”:{“id”:{"_field0":0},“style”:“Outer”,“value”:{“node”:{“variant”:“MetaWord”,“fields”:[“macro_use”]},“span”:{“lo”:0,“hi”:0}},“is_sugared_doc”:false},“span”:{“lo”:0,“hi”:0}}],“id”:3,“node”:{“variant”:“ItemExternCrate”,“fields”:[“std”]},“vis”:“Inherited”,“span”:{“lo”:0,“hi”:0}},{“ident”:“X”,“attrs”:[],“id”:4,“node”:{“variant”:“ItemConst”,“fields”:[{“id”:5,“node”:{“variant”:“TyPath”,“fields”:[null,{“span”:{“lo”:9,“hi”:12},“global”:false,“segments”:[{“identifier”:“i32”,“parameters”:{“variant”:“AngleBracketed”,“fields”:[{“lifetimes”:[],“types”:[],“bindings”:[]}]}}]}]},“span”:{“lo”:9,“hi”:12}},{“id”:6,“node”:{“variant”:“ExprUnary”,“fields”:[“UnNeg”,{“id”:7,“node”:{“variant”:“ExprLit”,“fields”:[{“node”:{“variant”:“LitInt”,“fields”:[123456,{“variant”:“SignedIntLit”,“fields”:[“TyI32”,“Plus”]}]},“span”:{“lo”:16,“hi”:25}}]},“span”:{“lo”:16,“hi”:25},“attrs”:null}]},“span”:{“lo”:15,“hi”:25},“attrs”:null}]},“vis”:“Inherited”,“span”:{“lo”:0,“hi”:26}}]},“attrs”:[],“config”:[{“node”:{“variant”:“MetaNameValue”,“fields”:[“target_os”,{“node”:{“variant”:“LitStr”,“fields”:[“linux”,“CookedStr”]},“span”:{“lo”:0,“hi”:0}}]},“span”:{“lo”:0,“hi”:0}},{“node”:{“variant”:“MetaNameValue”,“fields”:[“target_family”,{“node”:{“variant”:“LitStr”,“fields”:[“unix”,“CookedStr”]},“span”:{“lo”:0,“hi”:0}}]},“span”:{“lo”:0,“hi”:0}},{“node”:{“variant”:“MetaNameValue”,“fields”:[“target_arch”,{“node”:{“variant”:“LitStr”,“fields”:[“x86_64”,“CookedStr”]},“span”:{“lo”:0,“hi”:0}}]},“span”:{“lo”:0,“hi”:0}},{“node”:{“variant”:“MetaNameValue”,“fields”:[“target_endian”,{“node”:{“variant”:“LitStr”,“fields”:[“little”,“CookedStr”]},“span”:{“lo”:0,“hi”:0}}]},“span”:{“lo”:0,“hi”:0}},{“node”:{“variant”:“MetaNameValue”,“fields”:[“target_pointer_width”,{“node”:{“variant”:“LitStr”,“fields”:[“64”,“CookedStr”]},“span”:{“lo”:0,“hi”:0}}]},“span”:{“lo”:0,“hi”:0}},{“node”:{“variant”:“MetaNameValue”,“fields”:[“target_env”,{“node”:{“variant”:“LitStr”,“fields”:[“gnu”,“CookedStr”]},“span”:{“lo”:0,“hi”:0}}]},“span”:{“lo”:0,“hi”:0}},{“node”:{“variant”:“MetaNameValue”,“fields”:[“target_vendor”,{“node”:{“variant”:“LitStr”,“fields”:[“unknown”,“CookedStr”]},“span”:{“lo”:0,“hi”:0}}]},“span”:{“lo”:0,“hi”:0}},{“node”:{“variant”:“MetaWord”,“fields”:[“unix”]},“span”:{“lo”:0,“hi”:0}},{“node”:{“variant”:“MetaWord”,“fields”:[“target_thread_local”]},“span”:{“lo”:0,“hi”:0}},{“node”:{“variant”:“MetaWord”,“fields”:[“debug_assertions”]},“span”:{“lo”:0,“hi”:0}},{“node”:{“variant”:“MetaNameValue”,“fields”:[“target_feature”,{“node”:{“variant”:“LitStr”,“fields”:[“sse”,“CookedStr”]},“span”:{“lo”:0,“hi”:0}}]},“span”:{“lo”:0,“hi”:0}},{“node”:{“variant”:“MetaNameValue”,“fields”:[“target_feature”,{“node”:{“variant”:“LitStr”,“fields”:[“sse2”,“CookedStr”]},“span”:{“lo”:0,“hi”:0}}]},“span”:{“lo”:0,“hi”:0}}],“span”:{“lo”:0,“hi”:25},“exported_macros”:[]}
$ rustc --version
rustc 1.8.0-dev (5d6e8fced 2016-01-26)