I assume the production:
ws = { ws_single, comment };
should be
ws = { ws_single | comment };
I.e., vertical bar, not comma as whitespace should be zero or more (single whitespace characters or comments), not zero or more (single whitespace characters alternating with comments).
I assume the production:
ws = { ws_single, comment };should be
ws = { ws_single | comment };I.e., vertical bar, not comma as whitespace should be zero or more (single whitespace characters or comments), not zero or more (single whitespace characters alternating with comments).