fork download
  1. : ?>
  2. BEGIN
  3. SOURCE >IN @ /STRING 2DUP
  4. S" <?" SEARCH NIP
  5. IF
  6. NIP OVER -
  7. DUP 2 + >IN +!
  8. STATE @ IF
  9. POSTPONE SLITERAL
  10. ['] TYPE COMPILE,
  11. ELSE
  12. TYPE
  13. THEN
  14. TRUE
  15. ELSE
  16. DROP
  17. STATE @ IF
  18. POSTPONE SLITERAL
  19. ['] TYPE COMPILE,
  20. ['] CR COMPILE,
  21. ELSE
  22. TYPE CR
  23. THEN
  24. REFILL 0=
  25. THEN
  26. UNTIL
  27. ; IMMEDIATE
  28.  
  29. : EMIT-CASE ( c -- )
  30. ?> case '<? EMIT ?> ': <?
  31. ;
  32.  
  33. : EMIT-CASES
  34. [CHAR] A 1- [CHAR] Z DO
  35. 4 SPACES
  36. I EMIT-CASE
  37. [CHAR] a [CHAR] A - I + EMIT-CASE
  38. ?> ++id;<? CR
  39. 1 -LOOP
  40. [CHAR] 0 [CHAR] 9 DO
  41. 4 SPACES
  42. I EMIT-CASE
  43. ?> ++id;<? CR
  44. 1 -LOOP
  45. ;
  46.  
  47. ?>
  48. switch (*p) {
  49. <? EMIT-CASES ?> }
  50.  
Success #stdin #stdout 0s 22520KB
stdin
Standard input is empty
stdout
switch (*p) {
    case 'Z': case 'z': ++id;
    case 'Y': case 'y': ++id;
    case 'X': case 'x': ++id;
    case 'W': case 'w': ++id;
    case 'V': case 'v': ++id;
    case 'U': case 'u': ++id;
    case 'T': case 't': ++id;
    case 'S': case 's': ++id;
    case 'R': case 'r': ++id;
    case 'Q': case 'q': ++id;
    case 'P': case 'p': ++id;
    case 'O': case 'o': ++id;
    case 'N': case 'n': ++id;
    case 'M': case 'm': ++id;
    case 'L': case 'l': ++id;
    case 'K': case 'k': ++id;
    case 'J': case 'j': ++id;
    case 'I': case 'i': ++id;
    case 'H': case 'h': ++id;
    case 'G': case 'g': ++id;
    case 'F': case 'f': ++id;
    case 'E': case 'e': ++id;
    case 'D': case 'd': ++id;
    case 'C': case 'c': ++id;
    case 'B': case 'b': ++id;
    case 'A': case 'a': ++id;
    case '9': ++id;
    case '8': ++id;
    case '7': ++id;
    case '6': ++id;
    case '5': ++id;
    case '4': ++id;
    case '3': ++id;
    case '2': ++id;
    case '1': ++id;
}