---input--- true. stop :- !. of (fun F) :- pi x\ of x => of (F x). match (uvar as Y) :- print Y. ---tokens--- 'true' Text '.' Operator '\n' Text.Whitespace 'stop' Text ' ' Text.Whitespace ':-' Keyword.Declaration ' ' Text.Whitespace '!' Keyword.Declaration '.' Operator '\n' Text.Whitespace 'of' Text ' ' Text.Whitespace '(' Text 'fun' Text ' ' Text.Whitespace 'F' Name.Variable ')' Operator ' ' Text.Whitespace ':-' Keyword.Declaration ' ' Text.Whitespace 'pi' Keyword.Declaration ' ' Text.Whitespace 'x' Name.Variable '\\' Text ' ' Text.Whitespace 'of' Text ' ' Text.Whitespace 'x' Text ' ' Text.Whitespace '=>' Keyword.Declaration ' ' Text.Whitespace 'of' Text ' ' Text.Whitespace '(' Text 'F' Name.Variable ' ' Text.Whitespace 'x' Text ')' Operator '.' Operator '\n' Text.Whitespace 'match' Text ' ' Text.Whitespace '(' Text 'uvar' Keyword.Declaration ' ' Text.Whitespace 'as' Keyword.Declaration ' ' Text.Whitespace 'Y' Name.Variable ')' Operator ' ' Text.Whitespace ':-' Keyword.Declaration ' ' Text.Whitespace 'print' Text ' ' Text.Whitespace 'Y' Name.Variable '.' Operator '\n' Text.Whitespace