Transpile ;# into your language
brainfuck, 126 bytes

+++[-&gt;+++++&lt;]&gt;[-&gt;++++&gt;+++&lt;&lt;],[+&lt;++++++[-&lt;++++&gt;&gt;------&lt;]&gt;[&lt;]&lt;&lt;[&gt;&gt;&gt;&gt;&gt;[--&lt;--.++&gt;]&lt;+.-&lt;.&lt;&lt;&lt;&lt;]&gt;[-&gt;&gt;-&lt;&lt;]&gt;&gt;[[-]&lt;]&gt;[&gt;&gt;++++[--&gt;]&lt;[&lt;]],]


Try it online!

The output program will fail in the TIO implementation if the ;# output exceeds 65536 characters.  I also made a 130-byte version which outputs [+] instead of &lt;, avoiding this problem:

++[------&gt;++&gt;+&lt;&lt;]&gt;+++++&lt;,[+&lt;++++++[-&lt;++++&gt;&gt;------&lt;]&gt;[&lt;]&lt;&lt;[&gt;&gt;&gt;&gt;&gt;[--&lt;.&gt;]&lt;+++.---&lt;.&gt;.&lt;++.--&lt;&lt;&lt;&lt;]&gt;[-&gt;&gt;-&lt;&lt;]&gt;&gt;[[-]&lt;]&gt;[&gt;&gt;++++[--&gt;]&lt;[&lt;]],]


Explanation

+++[-&gt;+++++&lt;]&gt;[-&gt;++++&gt;+++&lt;&lt;]        initialize tape with 60 and 45
,[                                  for each input byte:
  +&lt;++++++[-&lt;++++&gt;&gt;------&lt;]         subtract 35 (#) from byte
  &gt;[&lt;]&lt;&lt;[                           if byte was #
         &gt;&gt;&gt;&gt;&gt;[--&lt;--.++&gt;]           output + (43) a number of times equal to accumulator
         &lt;+.-&lt;.&lt;&lt;&lt;&lt;                 output . (46) and &lt; (60)
  ]
  &gt;[-&gt;&gt;-&lt;&lt;]&gt;&gt;                       subtract 24 from what's left of byte
  [[-]&lt;]                            check difference and clear if nonzero
  &gt;[                                if byte was originally 59 (;)
   &gt;&gt;++++[--&gt;]&lt;[&lt;]                  add 4 to accumulator cell, then subtract 2 if nonzero. Since BF cells are mod 256, this creates an accumulator mod 127.
  ]
,]