hello William,

> #old:
>     rule  TOP {<line>* %% \n  }
>     token line { <col>* %% ',' }
> #new:
>   rule  TOP {<line>*  }
>   token line { <col>* %% ',' \n }

ohhh ... indeed! when i fixed the code on Ralph's instructions, i
finally was able to slurp a whole file and discovered a emtpy entry at
the end of the flow so i realize that \n is actually a terminator, not
a separator.

> class CSV_as_table {
>     method TOP ($/)  { make $/<line>.map: *.made }
>     method line ($/) { make $/<col>.map: *.made }
>     method col:sym<bare>   ($/) { make ~$/ }
>     #method col:sym<quoted> ($_) { .make: ~S:g/'""'/"/ }
>     method col:sym<quoted> ($/) { make $/.subst(/'""'/, '"', :global) }
> }

nice :)

but as i said earlier, i really prefer the short one.

> been interesting nevertheless. Here's a related link to a one-liner that
> uses Raku's Text::CSV module:
> https://unix.stackexchange.com/a/670358/227738

This grammar really was an exercice. I also wrote a really simple csv2tsv
in C which is really fast and was actually simpler to write.

regards,
marc

Reply via email to