diff --git a/src/parser/event_parser/grammar/mod.rs b/src/parser/event_parser/grammar/mod.rs
index 67773453be2..6e4f7209604 100644
--- a/src/parser/event_parser/grammar/mod.rs
+++ b/src/parser/event_parser/grammar/mod.rs
@@ -46,39 +46,6 @@ fn alias(p: &mut Parser) -> bool {
     true //FIXME: return false if three are errors
 }
 
-fn repeat<F: FnMut(&mut Parser) -> bool>(p: &mut Parser, mut f: F) {
-    loop {
-        let pos = p.pos();
-        if !f(p) {
-            return
-        }
-        if pos == p.pos() {
-            panic!("Infinite loop in parser")
-        }
-    }
-}
-
-fn comma_list<F: Fn(&mut Parser) -> bool>(p: &mut Parser, end: SyntaxKind, f: F) {
-    repeat(p, |p| {
-        if p.current() == end {
-            return false
-        }
-        let pos = p.pos();
-        f(p);
-        if p.pos() == pos {
-            return false
-        }
-
-        if p.current() == end {
-            p.eat(COMMA);
-        } else {
-            p.expect(COMMA);
-        }
-         true
-    })
-}
-
-
 impl<'p> Parser<'p> {
     fn at<L: Lookahead>(&self, l: L) -> bool {
         l.is_ahead(self)
diff --git a/src/parser/event_parser/parser.rs b/src/parser/event_parser/parser.rs
index 2cbe370be4f..18231e493ae 100644
--- a/src/parser/event_parser/parser.rs
+++ b/src/parser/event_parser/parser.rs
@@ -105,9 +105,6 @@ pub(crate) struct Parser<'t> {
     curly_limit: Option<i32>,
 }
 
-#[derive(Debug, Clone, Copy, PartialEq, Eq)]
-pub(crate) struct Pos(u32);
-
 impl<'t> Parser<'t> {
     pub(crate) fn new(text: &'t str, raw_tokens: &'t [Token]) -> Parser<'t> {
         let mut tokens = Vec::new();
@@ -133,10 +130,6 @@ impl<'t> Parser<'t> {
         }
     }
 
-    pub(crate) fn pos(&self) -> Pos {
-        Pos(self.pos as u32)
-    }
-
     pub(crate) fn into_events(self) -> Vec<Event> {
         assert!(self.curly_limit.is_none());
         assert_eq!(self.current(), EOF);