Comma quibbling: Difference between revisions
Content deleted Content added
Add Quackery |
Not a robot (talk | contribs) Add Cowgol |
||
Line 1,092: | Line 1,092: | ||
</lang> |
</lang> |
||
{{out}} |
{{out}} |
||
<pre>{} |
|||
{ABC} |
|||
{ABC and DEF} |
|||
{ABC, DEF, G and H}</pre> |
|||
=={{header|Cowgol}}== |
|||
<lang cowgol>include "cowgol.coh"; |
|||
sub quibble(words: [[uint8]], |
|||
length: intptr, |
|||
buf: [uint8]): |
|||
(out: [uint8]) is |
|||
sub append(s: [uint8]) is |
|||
while [s] != 0 loop |
|||
[buf] := [s]; |
|||
buf := @next buf; |
|||
s := @next s; |
|||
end loop; |
|||
end sub; |
|||
out := buf; |
|||
append("{"); |
|||
while length > 0 loop |
|||
append([words]); |
|||
words := @next words; |
|||
case length is |
|||
when 1: break; |
|||
when 2: append(" and "); |
|||
when else: append(", "); |
|||
end case; |
|||
length := length - 1; |
|||
end loop; |
|||
append("}"); |
|||
[buf] := 0; |
|||
end sub; |
|||
var w1: [uint8][] := {}; |
|||
var w2: [uint8][] := {"ABC"}; |
|||
var w3: [uint8][] := {"ABC","DEF"}; |
|||
var w4: [uint8][] := {"ABC","DEF","G","H"}; |
|||
print(quibble(&w1[0], @sizeof w1, LOMEM)); print_nl(); |
|||
print(quibble(&w2[0], @sizeof w2, LOMEM)); print_nl(); |
|||
print(quibble(&w3[0], @sizeof w3, LOMEM)); print_nl(); |
|||
print(quibble(&w4[0], @sizeof w4, LOMEM)); print_nl(); |
|||
</lang> |
|||
{{out}} |
|||
<pre>{} |
<pre>{} |
||
{ABC} |
{ABC} |