Reclasify Ident and Span as being from proc_macro2
diff --git a/codegen/src/gen.rs b/codegen/src/gen.rs
index 4d18776..f852308 100644
--- a/codegen/src/gen.rs
+++ b/codegen/src/gen.rs
@@ -374,6 +374,9 @@
                     },
                 )
             }
+            types::Type::Ext(t) if super::TERMINAL_TYPES.contains(&&t[..]) => {
+                Some(simple_visit(t, kind, name))
+            }
             types::Type::Ext(_) | types::Type::Std(_) => None,
         }
     }
@@ -633,10 +636,23 @@
         .unwrap();
 }
 
+const TERMINAL_TYPES: &[&str] = &["Span", "Ident"];
+
 pub fn generate(defs: &types::Definitions) {
+    let mut defs = defs.clone();
+
+    for &tt in TERMINAL_TYPES {
+        defs.insert(types::Node::Struct(types::Struct::new(
+                    tt.to_string(),
+                    types::Features::default(),
+                    vec![],
+                    true)
+        ));
+    }
+
     let mut state = codegen::State::default();
     for s in &defs.types {
-        codegen::generate(&mut state, s, defs);
+        codegen::generate(&mut state, s, &defs);
     }
 
     let full_macro = quote! {