16 lines
585 B
Erlang
16 lines
585 B
Erlang
handle(S, false, I, O) when (((S >= $a) and (S =< $z)) or ((S >= $A) and (S =< $Z))) ->
|
|
O(S),
|
|
handle(I(), false, I, O);
|
|
handle(S, T, I, O) when (((S >= $a) and (S =< $z)) or ((S >= $A) and (S =< $Z))) ->
|
|
D = handle(I(), rec, I, O),
|
|
O(S),
|
|
case T of true -> handle(D, T, I, O); _ -> D end;
|
|
handle(S, rec, _, _) -> S;
|
|
handle($., _, _, O) -> O($.), done;
|
|
handle(eof, _, _, _) -> done;
|
|
handle(S, T, I, O) -> O(S), handle(I(), not T, I, O).
|
|
|
|
main([]) ->
|
|
I = fun() -> hd(io:get_chars([], 1)) end,
|
|
O = fun(S) -> io:put_chars([S]) end,
|
|
handle(I(), false, I, O).
|