Skip to content

Instantly share code, notes, and snippets.

@mtomwing
Created June 26, 2014 17:35
Show Gist options
  • Save mtomwing/8dc62258ca449e10a10b to your computer and use it in GitHub Desktop.
Save mtomwing/8dc62258ca449e10a10b to your computer and use it in GitHub Desktop.
PRODUCTIONS:
F : LPAREN E RPAREN
F : ID
T : F T'
E' : <empty>
E' : PLUS T E'
START_E : E
E : T E'
T' : TIMES F T'
T' : <empty>
CLOSURE([START_E : · E, <$>]) {
[F : · LPAREN E RPAREN, PLUS]
[F : · ID, TIMES]
[T : · F T', <$>]
[F : · ID, <$>]
[F : · LPAREN E RPAREN, TIMES]
[F : · LPAREN E RPAREN, <$>]
[F : · ID, PLUS]
[START_E : · E, <$>]
[E : · T E', <$>]
[T : · F T', PLUS]
}
NEXT:
[T : F · T', <$>]
[T' : · <empty>, <$>]
[T' : · <empty>, PLUS]
[T' : · TIMES F T', <$>]
[T' : · TIMES F T', PLUS]
[T : F · T', PLUS]
ALL CLOSURES
CLOSURE {
[F : · LPAREN E RPAREN, PLUS]
[F : · ID, TIMES]
[T : · F T', <$>]
[F : · ID, <$>]
[F : · LPAREN E RPAREN, TIMES]
[F : · LPAREN E RPAREN, <$>]
[F : · ID, PLUS]
[START_E : · E, <$>]
[E : · T E', <$>]
[T : · F T', PLUS]
}
CLOSURE {
[T : F · T', <$>]
[T' : · <empty>, <$>]
[T' : · <empty>, PLUS]
[T' : · TIMES F T', <$>]
[T' : · TIMES F T', PLUS]
[T : F · T', PLUS]
}
CLOSURE {
[F : LPAREN · E RPAREN, TIMES]
[F : · LPAREN E RPAREN, PLUS]
[T : · F T', RPAREN]
[F : · ID, TIMES]
[F : · LPAREN E RPAREN, RPAREN]
[F : LPAREN · E RPAREN, <$>]
[E : · T E', RPAREN]
[F : · LPAREN E RPAREN, TIMES]
[F : LPAREN · E RPAREN, PLUS]
[F : · ID, RPAREN]
[F : · ID, PLUS]
[T : · F T', PLUS]
}
CLOSURE {
[START_E : E ·, <$>]
}
CLOSURE {
[E' : · <empty>, <$>]
[E : T · E', <$>]
[E' : · PLUS T E', <$>]
}
CLOSURE {
[F : ID ·, <$>]
[F : ID ·, PLUS]
[F : ID ·, TIMES]
}
CLOSURE {
[T' : <empty> ·, <$>]
[T' : <empty> ·, PLUS]
}
CLOSURE {
[F : · LPAREN E RPAREN, PLUS]
[F : · ID, TIMES]
[F : · ID, <$>]
[T' : TIMES · F T', PLUS]
[T' : TIMES · F T', <$>]
[F : · LPAREN E RPAREN, TIMES]
[F : · LPAREN E RPAREN, <$>]
[F : · ID, PLUS]
}
CLOSURE {
[T : F T' ·, <$>]
[T : F T' ·, PLUS]
}
CLOSURE {
[T' : · TIMES F T', RPAREN]
[T : F · T', RPAREN]
[T' : · <empty>, RPAREN]
[T' : · <empty>, PLUS]
[T' : · TIMES F T', PLUS]
[T : F · T', PLUS]
}
CLOSURE {
[F : LPAREN · E RPAREN, TIMES]
[F : · LPAREN E RPAREN, PLUS]
[T : · F T', RPAREN]
[F : · ID, TIMES]
[F : · LPAREN E RPAREN, RPAREN]
[F : LPAREN · E RPAREN, RPAREN]
[E : · T E', RPAREN]
[F : · LPAREN E RPAREN, TIMES]
[F : LPAREN · E RPAREN, PLUS]
[F : · ID, RPAREN]
[F : · ID, PLUS]
[T : · F T', PLUS]
}
CLOSURE {
[F : LPAREN E · RPAREN, <$>]
[F : LPAREN E · RPAREN, PLUS]
[F : LPAREN E · RPAREN, TIMES]
}
CLOSURE {
[E' : · <empty>, RPAREN]
[E : T · E', RPAREN]
[E' : · PLUS T E', RPAREN]
}
CLOSURE {
[F : ID ·, PLUS]
[F : ID ·, RPAREN]
[F : ID ·, TIMES]
}
CLOSURE {
[E' : <empty> ·, <$>]
}
CLOSURE {
[F : · LPAREN E RPAREN, PLUS]
[F : · ID, TIMES]
[T : · F T', <$>]
[F : · ID, <$>]
[F : · LPAREN E RPAREN, TIMES]
[E' : PLUS · T E', <$>]
[F : · LPAREN E RPAREN, <$>]
[F : · ID, PLUS]
[T : · F T', PLUS]
}
CLOSURE {
[E : T E' ·, <$>]
}
CLOSURE {
[T' : TIMES F · T', <$>]
[T' : · <empty>, <$>]
[T' : · <empty>, PLUS]
[T' : · TIMES F T', <$>]
[T' : · TIMES F T', PLUS]
[T' : TIMES F · T', PLUS]
}
CLOSURE {
[T' : <empty> ·, PLUS]
[T' : <empty> ·, RPAREN]
}
CLOSURE {
[F : · LPAREN E RPAREN, PLUS]
[F : · LPAREN E RPAREN, RPAREN]
[F : · ID, TIMES]
[T' : TIMES · F T', PLUS]
[T' : TIMES · F T', RPAREN]
[F : · LPAREN E RPAREN, TIMES]
[F : · ID, RPAREN]
[F : · ID, PLUS]
}
CLOSURE {
[T : F T' ·, PLUS]
[T : F T' ·, RPAREN]
}
CLOSURE {
[F : LPAREN E · RPAREN, PLUS]
[F : LPAREN E · RPAREN, TIMES]
[F : LPAREN E · RPAREN, RPAREN]
}
CLOSURE {
[F : LPAREN E RPAREN ·, TIMES]
[F : LPAREN E RPAREN ·, <$>]
[F : LPAREN E RPAREN ·, PLUS]
}
CLOSURE {
[E' : <empty> ·, RPAREN]
}
CLOSURE {
[F : · LPAREN E RPAREN, PLUS]
[F : · LPAREN E RPAREN, RPAREN]
[T : · F T', RPAREN]
[F : · ID, TIMES]
[E' : PLUS · T E', RPAREN]
[F : · LPAREN E RPAREN, TIMES]
[F : · ID, RPAREN]
[F : · ID, PLUS]
[T : · F T', PLUS]
}
CLOSURE {
[E : T E' ·, RPAREN]
}
CLOSURE {
[E' : PLUS T · E', <$>]
[E' : · <empty>, <$>]
[E' : · PLUS T E', <$>]
}
CLOSURE {
[T' : TIMES F T' ·, <$>]
[T' : TIMES F T' ·, PLUS]
}
CLOSURE {
[T' : · TIMES F T', RPAREN]
[T' : · <empty>, PLUS]
[T' : · <empty>, RPAREN]
[T' : · TIMES F T', PLUS]
[T' : TIMES F · T', RPAREN]
[T' : TIMES F · T', PLUS]
}
CLOSURE {
[F : LPAREN E RPAREN ·, TIMES]
[F : LPAREN E RPAREN ·, PLUS]
[F : LPAREN E RPAREN ·, RPAREN]
}
CLOSURE {
[E' : PLUS T · E', RPAREN]
[E' : · <empty>, RPAREN]
[E' : · PLUS T E', RPAREN]
}
CLOSURE {
[E' : PLUS T E' ·, <$>]
}
CLOSURE {
[T' : TIMES F T' ·, PLUS]
[T' : TIMES F T' ·, RPAREN]
}
CLOSURE {
[E' : PLUS T E' ·, RPAREN]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment