     <percent-comment> = <'%'> <{!'\n' #'[\\S\\s]'}> <'\n'>
 
     (* Variations are contained in parens, and can be nested recursively. *)
-    <variation> = <'('> movetext <')'>
+    <variation> = <'('> moves <')'>
 
     nag = ('$' #'[0-9]+') | '!' | '?' | '!!' | '??' | '!?' | '?!'
 
     (* Game termination markers, '1-0', '0-1', '1/2-1/2' or '*', where *)
     (* the asterisk indicates an incomplete game or an unknown result. *)
-    termination-marker = white-wins | black-wins | draw | unknown-result
-    white-wins = <'1-0'>
-    black-wins = <'0-1'>
-    draw = <'1/2-1/2'>
-    unknown-result = <'*'>
+    termination-marker = '1-0' | '0-1' | '1/2-1/2' | '*'
 
     (* Strings are a little messy, since they are surrounded by double *)
     (* quotes, but we also allows a double quote within the string if *)

  (ip/parser
    "
    (* A PGN game consists of PGN headers followed by the move text. *)
    game = headers <whitespace> movetext
    headers = {header [<whitespace>]}

    (* Each header consists of a header name and a corresponding value, *)


    (* Movetext consists of moves (symbols), numbers, periods, comments,    *)
    (* variations, numeric annotation glyphs, and game termination markers. *)
    moves = {(termination-marker / <number> / <'.'> / symbol / comment / variation / nag / semicolon-comment / percent-comment / <whitespace>)}

    (* Comments are arbitrary strings surrounded by curly braces. *)
    comment = <'{'> comment-content <'}'>
