├── tests ├── Burghard │ ├── endquitend.ws │ └── prime.ws ├── whitespacers │ ├── sudoku.in │ ├── sudoku.txt │ └── sudoku.ws ├── Vii5ard │ ├── nerd.ws │ ├── fibonacci.ws │ ├── c.ws │ ├── bf.ws │ ├── hanoi.ws │ ├── quine-2.ws │ └── quine.ws ├── rdebath │ ├── helloworld.ws │ ├── hello2.ws │ └── cellsize.ws ├── WSpace-0.3 │ ├── count.ws │ ├── hworld.ws │ ├── loctest.ws │ ├── name.ws │ ├── fact.ws │ ├── hanoi.ws │ └── calc.ws ├── AndrewKemp │ └── 99bottles.ws └── Tetris │ └── tetris.ws ├── .gitignore ├── io.h ├── wsc.sh ├── Makefile ├── README.md ├── gencode-deadfish-in-ws.c ├── command-list.txt ├── wsa.sed ├── gen-prime.c ├── blockquote.c ├── memory.h ├── wsa.l ├── ws_engine.h ├── ws_gencode.h ├── gen-99bottles.c └── ws2c.c /tests/Burghard/endquitend.ws: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | quit 5 | 6 | 7 | -------------------------------------------------------------------------------- /tests/whitespacers/sudoku.in: -------------------------------------------------------------------------------- 1 | 700000400 2 | 020070080 3 | 003008009 4 | 000500300 5 | 060020090 6 | 001007006 7 | 000300900 8 | 030040060 9 | 009001005 10 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | # Ignore everything 3 | /* 4 | # Except the source. 5 | !.gitignore 6 | !Makefile 7 | !*.l 8 | !*.awk 9 | !mkt 10 | !*.sh 11 | !*.txt 12 | !*.c 13 | !*.h 14 | !*.sed 15 | !/tests 16 | # But this is generated source. 17 | ws_engine_txt.h 18 | -------------------------------------------------------------------------------- /io.h: -------------------------------------------------------------------------------- 1 | 2 | ws_label(prints); 3 | 4 | ws_dup(); 5 | ws_jz(prints_end); 6 | ws_outc(); 7 | ws_jump(prints); 8 | 9 | ws_label(prints_end); 10 | ws_drop(); 11 | ws_return(); 12 | 13 | ws_label(printsln); 14 | ws_call(prints); 15 | ws_push(10); 16 | ws_outc(); 17 | ws_return(); 18 | 19 | -------------------------------------------------------------------------------- /wsc.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh - 2 | 3 | { 4 | # awk -f wsc.awk "$1" > /tmp/_wsc.c && 5 | ./ws2c -c "$1" > /tmp/_wsc.c && 6 | gcc -c -O3 $2 -o /tmp/_wsc.o /tmp/_wsc.c && 7 | gcc -O3 $3 -o /tmp/_wsc /tmp/_wsc.o 8 | } || exit 9 | # rm -f /tmp/_wsc.c ||: 10 | rm -f /tmp/_wsc.o ||: 11 | exec /tmp/_wsc 12 | -------------------------------------------------------------------------------- /tests/Vii5ard/nerd.ws: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /tests/rdebath/helloworld.ws: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | 2 | CFLAGS=-O3 -Wall -Wextra 3 | EXE=wsc ws2c wsa blockquote 4 | 5 | all: $(EXE) 6 | 7 | ws2c: ws2c.o 8 | 9 | ws2c.o: ws2c.c ws_engine.h ws_engine_txt.h 10 | 11 | ws_engine_txt.h: blockquote ws_engine.h 12 | ( echo 'char * header =' ;\ 13 | ./blockquote -f ws_engine.h ;\ 14 | echo ';' ) > ws_engine_txt.h 15 | 16 | clean: 17 | -rm -f $(EXE) 18 | -rm -f ws_engine_txt.h 19 | -rm -f ws2c.o 20 | 21 | -------------------------------------------------------------------------------- /tests/whitespacers/sudoku.txt: -------------------------------------------------------------------------------- 1 | WARNING 2 | 3 | This program and input takes a very long time to run on the original 4 | Haskell implementation. 5 | 6 | On my machine it was this long ... 7 | 8 | real 204m19.687s 9 | user 204m7.976s 10 | sys 0m4.932s 11 | 12 | My conversion to C is a lot quicker ... 13 | 14 | real 0m3.295s 15 | user 0m3.260s 16 | sys 0m0.000s 17 | 18 | and even running it in the interpreter is pretty good. 19 | 20 | real 0m6.371s 21 | user 0m6.364s 22 | sys 0m0.000s 23 | 24 | -------------------------------------------------------------------------------- /tests/Vii5ard/fibonacci.ws: -------------------------------------------------------------------------------- 1 | Ask the user how many 2 | fibonacci numbers 3 | they want from the sequence 4 | and print 5 | that many one number per line. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Whitespace 2 | 3 | * ws2c.c 4 | This is a compiler and interpreter of the Whitespace language. Both the interpreter and the compiler use the 5 | same execution engine (in ws_engine.h) 6 | * wsc.sh 7 | A small script to compile and run the C version. 8 | * gen-*.c 9 | These C program use the ws_gencode.h header to generate Whitespace code; I only wrote the deadfish one. 10 | Note that the language variant is very close to that generated by ws2c.c when it creates C code. 11 | * wsa*.* 12 | A couple of "quick hacks" to convert the input for other Whitespace assemblers for ws_gencode.h. 13 | * tests 14 | A small collection of test files. 15 | -------------------------------------------------------------------------------- /tests/WSpace-0.3/count.ws: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | -------------------------------------------------------------------------------- /tests/Vii5ard/c.ws: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | -------------------------------------------------------------------------------- /tests/Burghard/prime.ws: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | -------------------------------------------------------------------------------- /gencode-deadfish-in-ws.c: -------------------------------------------------------------------------------- 1 | 2 | #include "ws_gencode.h" 3 | 4 | ws_header(); 5 | 6 | ws_comment( "http://esolangs.org/wiki/Deadfish#Whitespace" 7 | "\n" "by Robert de Bath (2015)"); 8 | 9 | ws_push(0); // x 10 | ws_label(1); 11 | 12 | ws_push(62); 13 | ws_dup(); 14 | ws_outc(); 15 | ws_outc(); 16 | ws_push(32); 17 | ws_outc(); 18 | 19 | ws_dup(); 20 | ws_push(256); 21 | ws_sub(); 22 | ws_jz(2); 23 | 24 | ws_dup(); 25 | ws_push(-1); 26 | ws_sub(); 27 | ws_jz(2); 28 | ws_label(3); 29 | 30 | ws_push(0); 31 | ws_readc(); 32 | ws_push(0); 33 | ws_fetch(); 34 | 35 | ws_dup(); 36 | ws_push(105); // i 37 | ws_sub(); 38 | ws_jz(5); 39 | 40 | ws_dup(); 41 | ws_push(100); // d 42 | ws_sub(); 43 | ws_jz(6); 44 | 45 | ws_dup(); 46 | ws_push(115); // s 47 | ws_sub(); 48 | ws_jz(7); 49 | 50 | ws_dup(); 51 | ws_push(111); // o 52 | ws_sub(); 53 | ws_jz(4); 54 | 55 | ws_drop(); 56 | ws_push(10); 57 | ws_outc(); 58 | ws_jump(1); 59 | 60 | ws_label(2); 61 | ws_drop(); 62 | ws_push(0); 63 | ws_jump(3); 64 | 65 | ws_label(5); // i 66 | ws_drop(); 67 | ws_push(1); 68 | ws_add(); 69 | ws_jump(1); 70 | 71 | ws_label(6); // d 72 | ws_drop(); 73 | ws_push(-1); 74 | ws_add(); 75 | ws_jump(1); 76 | 77 | ws_label(7); // 2 78 | ws_drop(); 79 | ws_dup(); 80 | ws_mul(); 81 | ws_jump(1); 82 | 83 | ws_label(4); // o 84 | ws_drop(); 85 | ws_dup(); 86 | ws_outn(); 87 | ws_push(10); 88 | ws_outc(); 89 | ws_jump(1); 90 | 91 | ws_exit(); 92 | 93 | ws_trailer 94 | -------------------------------------------------------------------------------- /command-list.txt: -------------------------------------------------------------------------------- 1 | The number of permutations of three characters is 27, we have 24 instructions 2 | so there should be no need for more than three. However, we are tending to 3 | avoid linefeeds and we want to use the 'ss' short code. 4 | 5 | ss N push Push 6 | 7 | sts N N-pick Ref *** 0 pick == dup, like forth 8 | stl N leave Slide *** 9 | 10 | sls dup Dup as forth 11 | slt swap Swap as forth 12 | sll drop Discard as forth 13 | 14 | tsss add Plus as forth 15 | tsst sub Minus as forth 16 | tssl mul Times as forth 17 | 18 | tsts div Divide as forth 19 | tstt mod Modulo as forth 20 | 21 | tts store Store swaped relative to forth 22 | ttt fetch Retrieve as forth 23 | 24 | tlss outc OutputChar as forth emit 25 | tlst outn OutputNum 26 | 27 | tlts readc ReadChar reads into memory like forth "expect" but only one char at a time. 28 | tltt readn ReadNum 29 | 30 | lss L label Label 31 | lst L call Call 32 | lsl L jmp Jump 33 | 34 | lts L jz If-Zero 35 | ltt L jn If-Negative 36 | ltl ret Return 37 | 38 | lll quit End 39 | 40 | // *** These two added later -- V0.3 41 | // "N-pick (Copy/Ref) is just like Forth (excpet it uses a constant); 42 | // "N-slide" is a limited substitute for ROT. 43 | // The "N" must be positive so only valid forms are "stls" and "stss" 44 | 45 | // some suggestions... 46 | // stts pick 47 | // sttt roll 48 | // sttl depth 49 | // These codes make the language Turing complete without "fetch" and "store". 50 | // 51 | // ssl (N -- R) 'R' is a random value between 0 and N-1 inclusive 52 | // ssl (N 0 -- ) Init the pseudo random number generator with N 53 | // Zero means an unknown external source which MAY be 54 | // just a clock. 55 | 56 | // Unused prefixes. (ssl may be a zero) 57 | ssl 58 | stt 59 | tstl 60 | tsl 61 | ttl 62 | tlsl 63 | tltl 64 | tll 65 | lls 66 | llt 67 | -------------------------------------------------------------------------------- /tests/WSpace-0.3/hworld.ws: -------------------------------------------------------------------------------- 1 | Say hello. 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | -------------------------------------------------------------------------------- /tests/WSpace-0.3/loctest.ws: -------------------------------------------------------------------------------- 1 | Simple program to demonstrate the 2 | use of local variables. 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | -------------------------------------------------------------------------------- /tests/WSpace-0.3/name.ws: -------------------------------------------------------------------------------- 1 | Ask the user for their 2 | name. Then say hello. 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | -------------------------------------------------------------------------------- /tests/WSpace-0.3/fact.ws: -------------------------------------------------------------------------------- 1 | Ask the user for a 2 | number, then calculate its 3 | factorial. 4 | 5 | This program shows how we can handle recursion 6 | and arbitrarily big numbers. 7 | 8 | Try giving 10000 as 9 | input... 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | -------------------------------------------------------------------------------- /wsa.sed: -------------------------------------------------------------------------------- 1 | 2 | 1i\ 3 | #define ATOMISE_LABELS\ 4 | #include "ws_gencode.h"\ 5 | int main() { 6 | $a\ 7 | } 8 | 9 | s/ / /g 10 | s/^\([^";]*\)--/\1;/ 11 | s/{\-/\/\*/g 12 | s/\-}/\*\//g 13 | 14 | h 15 | s/^[^;]*// 16 | s/;/\/\// 17 | x 18 | 19 | s/;.*// 20 | 21 | s/^\([ ]*\)doub *$/\1ws_dup();/ 22 | s/^\([ ]*\)outN *$/\1ws_outn();/i 23 | s/^\([ ]*\)retrive *$/\1ws_fetch();/ 24 | s/^\([ ]*\)store *$/\1ws_store();/ 25 | s/^\([ ]*\)swap *$/\1ws_swap();/ 26 | s/^\([ ]*\)ret *$/\1ws_return();/ 27 | s/^\([ ]*\)exit *$/\1ws_exit();/ 28 | s/^\([ ]*\)outC *$/\1ws_outc();/i 29 | s/^\([ ]*\)pop *$/\1ws_drop();/ 30 | 31 | s/^\([ ]*\)InC *$/\1ws_readc();/i 32 | s/^\([ ]*\)InN *$/\1ws_readn();/i 33 | 34 | s/^\([ ]*\)call *\([A-Za-z][A-Za-z0-9_]*\)[ ]*$/\1ws_call(\2);/ 35 | s/^\([ ]*\)jump *\([A-Za-z][A-Za-z0-9_]*\)[ ]*$/\1ws_jump(\2);/ 36 | s/^\([ ]*\)jumpz *\([A-Za-z][A-Za-z0-9_]*\)[ ]*$/\1ws_jz(\2);/ 37 | s/^\([ ]*\)jumpn *\([A-Za-z][A-Za-z0-9_]*\)[ ]*$/\1ws_jn(\2);/ 38 | s/^\([ ]*\)label *\([A-Za-z][A-Za-z0-9_]*\)[ ]*$/\1ws_label(\2);/ 39 | 40 | s/^\([ ]*\)jumppz *\([A-Za-z][A-Za-z0-9_]*\)[ ]*$/\1ws_jzp(\2);/ 41 | s/^\([ ]*\)jumpnz *\([A-Za-z][A-Za-z0-9_]*\)[ ]*$/\1ws_jzn(\2);/ 42 | s/^\([ ]*\)jumpp *\([A-Za-z][A-Za-z0-9_]*\)[ ]*$/\1ws_jp(\2);/ 43 | s/^\([ ]*\)jumppn *\([A-Za-z][A-Za-z0-9_]*\)[ ]*$/\1ws_jnz(\2);/ 44 | s/^\([ ]*\)jumpnp *\([A-Za-z][A-Za-z0-9_]*\)[ ]*$/\1ws_jnz(\2);/ 45 | 46 | s/^\([ ]*\)pushs *\("[^"]*"\) *$/\1ws_pushs(\2);/ 47 | s/^\([ ]*\)push *\([0-9][0-9]*\)/\1ws_push(\2);/ 48 | s/^\([ ]*\)push *\-\([0-9][0-9]*\)/\1ws_push(-\2);/ 49 | 50 | s/^\([ ]*\)add *\([0-9][0-9]*\) *$/\1ws_push(\2); ws_add();/ 51 | s/^\([ ]*\)sub *\([0-9][0-9]*\) *$/\1ws_push(\2); ws_sub();/ 52 | 53 | s/^\([ ]*\)store *\([0-9][0-9]*\) *$/\1ws_push(\2); ws_swap(); ws_store();/ 54 | 55 | s/^\([ ]*\)retrive *\([0-9][0-9]*\) *$/\1ws_push(\2); ws_fetch();/ 56 | s/^\([ ]*\)test *\([0-9][0-9]*\) *$/\1ws_dup(); ws_push(\2); ws_sub();/ 57 | 58 | s/^\([ ]*\)add *$/\1ws_add();/ 59 | s/^\([ ]*\)mul *$/\1ws_mul();/ 60 | s/^\([ ]*\)sub *$/\1ws_sub();/ 61 | s/^\([ ]*\)div *$/\1ws_div();/ 62 | s/^\([ ]*\)mod *$/\1ws_mod();/ 63 | 64 | # s/^\([ ]*\)ifoption *\([A-Za-z][A-Za-z0-9_]*\)[ ]*$/if(\2) {/ 65 | # s/^\([ ]*\)endoption *$/}/ 66 | 67 | s/^\([ ]*\)ifoption *\([A-Za-z][A-Za-z0-9_]*\)[ ]*$/#ifdef \2/ 68 | s/^\([ ]*\)endoption *$/#endif/ 69 | s/^\([ ]*\)include *\([A-Za-z][A-Za-z0-9_]*\)[ ]*$/#include "\2.h"/ 70 | 71 | s/^\([ ]*\)debug_printheap *$/\/\/ \1debug_printheap()/ 72 | s/^\([ ]*\)debug_printstack *$/\/\/ \1debug_printstack()/ 73 | 74 | G 75 | s/\n// 76 | -------------------------------------------------------------------------------- /gen-prime.c: -------------------------------------------------------------------------------- 1 | 2 | #define ATOMISE_LABELS 3 | #define BIJECTIVE 1 4 | 5 | #include "ws_gencode.h" 6 | 7 | ws_header(); 8 | 9 | // get prim numbers 10 | 11 | ws_pushs("prim numbers [2-100]"); 12 | ws_call(printsln); 13 | 14 | 15 | { 16 | // for(i=0; i<100; i++) memory[100+i] = 1; 17 | 18 | ws_push(0); 19 | //for loop 20 | ws_label(f_start_1); 21 | ws_dup(); ws_push(100); ws_sub(); 22 | ws_jz(f_finished_1); 23 | 24 | ws_dup(); 25 | ws_push(100); ws_add(); 26 | ws_push(1); 27 | ws_store(); 28 | 29 | ws_push(1); ws_add(); 30 | ws_jump(f_start_1); 31 | 32 | ws_label(f_finished_1); 33 | ws_drop(); 34 | } 35 | 36 | //debug_printstack 37 | //debug_printheap 38 | 39 | { 40 | /* 41 | for(i=2; i<11; i++) 42 | for(j=2; j<100; j++) 43 | memory[100+i*j] = 0; 44 | */ 45 | 46 | ws_push(2); 47 | //for loop 48 | ws_label(f_start_2); 49 | ws_dup(); ws_push(11); ws_sub(); 50 | ws_jz(f_finished_2); 51 | 52 | 53 | 54 | ws_push(2); 55 | //for loop 56 | ws_label(f_start_3); 57 | ws_dup(); ws_push(100); ws_sub(); 58 | ws_jz(f_finished_3); 59 | 60 | ws_dup(); 61 | ws_push(1); 62 | ws_swap(); 63 | ws_store(); 64 | 65 | ws_swap(); 66 | 67 | ws_dup(); 68 | ws_push(2); 69 | ws_swap(); 70 | ws_store(); 71 | 72 | ws_swap(); 73 | 74 | ws_push(1); ws_fetch(); 75 | ws_push(2); ws_fetch(); 76 | ws_mul(); 77 | ws_push(100); ws_add(); 78 | 79 | ws_push(0); 80 | ws_store(); 81 | 82 | ws_push(1); ws_add(); 83 | 84 | ws_jump(f_start_3); 85 | ws_label(f_finished_3); 86 | ws_drop(); 87 | 88 | 89 | ws_push(1); ws_add(); 90 | 91 | ws_jump(f_start_2); 92 | ws_label(f_finished_2); 93 | ws_drop(); 94 | } 95 | 96 | { 97 | ws_push(2); 98 | //for loop 99 | ws_label(f_start_4); 100 | ws_dup(); ws_push(100); ws_sub(); 101 | ws_jz(f_finished_4); 102 | 103 | ws_dup(); 104 | ws_push(100); ws_add(); 105 | ws_fetch(); 106 | ws_jz(nodraw); 107 | 108 | ws_dup(); 109 | ws_outn(); 110 | 111 | ws_pushs(" "); 112 | ws_call(prints); 113 | 114 | ws_label(nodraw); 115 | 116 | ws_push(1); ws_add(); 117 | ws_jump(f_start_4); 118 | 119 | ws_label(f_finished_4); 120 | ws_drop(); 121 | } 122 | 123 | ws_push(0); 124 | ws_call(printsln); 125 | 126 | ws_exit(); 127 | 128 | ws_label(prints); 129 | 130 | ws_dup(); 131 | ws_jz(prints_end); 132 | ws_outc(); 133 | ws_jump(prints); 134 | 135 | ws_label(prints_end); 136 | ws_drop(); 137 | ws_return(); 138 | 139 | ws_label(printsln); 140 | ws_call(prints); 141 | ws_push(10); 142 | ws_outc(); 143 | ws_return(); 144 | 145 | ws_trailer 146 | -------------------------------------------------------------------------------- /tests/Vii5ard/bf.ws: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 | 256 | 257 | 258 | 259 | 260 | 261 | 262 | 263 | 264 | 265 | 266 | 267 | 268 | 269 | 270 | 271 | 272 | 273 | 274 | 275 | 276 | 277 | 278 | 279 | 280 | 281 | 282 | 283 | 284 | 285 | -------------------------------------------------------------------------------- /tests/rdebath/hello2.ws: -------------------------------------------------------------------------------- 1 | A complex "Hello World!" converted from brainfuck -- by Robert de Bath (2015) 2 | S S S S L 3 | T T S L 4 | S L 5 | T S L 6 | L 7 | S S T L 8 | S L 9 | S S L 10 | S T T T S S S T S S S S S S S S L 11 | T S T T T T S L 12 | T L 13 | L 14 | S S T S L 15 | S S S T S S S S S S T S L 16 | S S S T S S T S S S L 17 | T L 18 | S S S L 19 | S S S S T S S T S S S L 20 | T T S S S S T S L 21 | T S S S S L 22 | S S S S T L 23 | T T S S S S T L 24 | T S S S S L 25 | S S S S T S L 26 | T T S S S S T L 27 | T S S S S L 28 | S S S S T S L 29 | T T S S S S T L 30 | T S S S S L 31 | S S S S T T L 32 | T T S L 33 | S T T L 34 | L 35 | S S T T L 36 | S L 37 | S T T T L 38 | T S T S S L 39 | S S S T L 40 | T S S S L 41 | S T T L 42 | S L 43 | S T T T S S S S L 44 | S L 45 | T T T S S S S T L 46 | T S S S S L 47 | S S L 48 | S T T T S S S S L 49 | T T T S S S T T L 50 | T S S L 51 | T S S S T T S S S T T S L 52 | T S S S S L 53 | S S L 54 | S T T T S S S S L 55 | T T T S S S T T L 56 | T S S L 57 | T S S S T T S S S S T L 58 | T S S S S L 59 | S S S S S L 60 | T T S S S T T S L 61 | T S S S L 62 | S T T L 63 | L 64 | S L 65 | T T L 66 | L 67 | S S T S S L 68 | S S S T L 69 | T S S S S L 70 | S S L 71 | S T T T S S T T S T L 72 | T S S S T T S S L 73 | S T T T T L 74 | S S S S S T S L 75 | T S S S S L 76 | S S L 77 | S T T T S S S T T L 78 | T S S S T T S S L 79 | S T T T T L 80 | S S S L 81 | S T T T T L 82 | S S S L 83 | S S L 84 | S T T T S S S T T L 85 | T S S S T T S S L 86 | S T T T T L 87 | S S S S S T L 88 | T S S S S L 89 | S S L 90 | S T T T S S T T L 91 | T S S S T T S S L 92 | S T T T T L 93 | S S S S T T S L 94 | T S S S L 95 | S T T L 96 | L 97 | S S T S T L 98 | S L 99 | S T T T L 100 | T S T T S L 101 | S S S T L 102 | T S S S L 103 | S T T L 104 | L 105 | S S T T T L 106 | S L 107 | S T T T L 108 | T S T S S S L 109 | S L 110 | S S L 111 | S T T T S S S T L 112 | T S S S T T S S S S T L 113 | T S S S S L 114 | S S L 115 | S T T T S S S T L 116 | T S S S T T S L 117 | S T T L 118 | L 119 | S L 120 | T T T L 121 | L 122 | S S T S S S L 123 | S S S T S L 124 | T S S S L 125 | S T T L 126 | L 127 | S L 128 | T S T L 129 | L 130 | S S T T S L 131 | S S T T L 132 | T S S S S L 133 | S S L 134 | S T T T S S T T T T S L 135 | T S S S T T S S L 136 | S T T T T L 137 | S S S S S T S L 138 | T S S S S L 139 | S T T T T L 140 | S S S L 141 | S S L 142 | S T T T S S S T T L 143 | T S S S T T S S L 144 | S T T T T L 145 | S S S L 146 | S S L 147 | S T T T S S T T T S L 148 | T S S S T T S S L 149 | S T T T T L 150 | S S S L 151 | S S L 152 | S T T T S S T T S S S L 153 | T S S S T T S S L 154 | S T T T T L 155 | S S S S S T L 156 | T S S S S L 157 | S S L 158 | S T T T S S S T L 159 | T S S S T T S S L 160 | S T T T T L 161 | S S S S S T L 162 | T S S S S L 163 | S S L 164 | S T T T S S S T L 165 | T S S S T T S S L 166 | S T T T T L 167 | S S S L 168 | L 169 | L 170 | L 171 | L 172 | -------------------------------------------------------------------------------- /blockquote.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | 5 | FILE * ofd; 6 | 7 | void do_file(FILE* ifd); 8 | int strnmode = 0, has_str = 0; 9 | int force_on = 0; 10 | 11 | int 12 | main(int argc, char **argv) { 13 | char ** filelist = 0; 14 | int filecount = 0; 15 | int ar, opton = 1; 16 | 17 | ofd = stdout; 18 | 19 | filelist = calloc(argc, sizeof*filelist); 20 | for(ar=1; ar0) 78 | putc('\n', ofd); 79 | } 80 | 81 | void 82 | do_file(FILE* ifd) 83 | { 84 | char buf[BUFSIZ]; 85 | int contflag = 0; 86 | 87 | while ((fgets(buf, sizeof(buf), ifd)) != 0) { 88 | int oc = contflag; 89 | contflag = (!*buf || buf[strlen(buf)-1] != '\n'); 90 | if (oc) { write_buf(buf); continue; } 91 | 92 | if (strnmode && !force_on && !strncmp(buf, "#endif", 6) && strstr(buf, "QUOTE")) { 93 | if (!has_str) 94 | fputs("\t\"\"\n", ofd); 95 | else 96 | fputs("\n", ofd); 97 | strnmode = 0; 98 | continue; 99 | } 100 | if (strnmode > 1) { fputs("\"\\n\"", ofd); write_buf(buf); continue; } 101 | if (strnmode) { strnmode=2; write_buf(buf); continue; } 102 | 103 | if (!strncmp(buf, "#if", 3) 104 | && (buf[3] != ' ' || buf[3] != '\t') 105 | && strstr(buf, "QUOTE")) { 106 | 107 | fputs("\n", ofd); 108 | strnmode = 1; has_str = 0; 109 | continue; 110 | } 111 | 112 | fputs(buf, ofd); 113 | } 114 | } 115 | -------------------------------------------------------------------------------- /tests/WSpace-0.3/hanoi.ws: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | -------------------------------------------------------------------------------- /tests/Vii5ard/hanoi.ws: -------------------------------------------------------------------------------- 1 | Towers of Hanoi solver. 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | -------------------------------------------------------------------------------- /tests/WSpace-0.3/calc.ws: -------------------------------------------------------------------------------- 1 | Ask the user to enter 2 | a list of numbers terminated by -1. 3 | 4 | When they've finished, tell 5 | them what the total is. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | -------------------------------------------------------------------------------- /tests/AndrewKemp/99bottles.ws: -------------------------------------------------------------------------------- 1 | Whitespace version of 99 bottles of beer (Bottles.ws) 2003-04-01 2 | See http://compsoc.dur.ac.uk/whitespace/ for details+interpreter 3 | Example by Andrew Kemp 4 | 5 | (*All* space/tab/linefeed characters are significant!) 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 | 256 | 257 | 258 | 259 | 260 | 261 | 262 | 263 | 264 | 265 | 266 | 267 | 268 | 269 | 270 | 271 | 272 | 273 | 274 | -------------------------------------------------------------------------------- /memory.h: -------------------------------------------------------------------------------- 1 | 2 | //memcopy 3 | // copys memory from one place to another the places may overlap 4 | // parameter 5 | // 3: source 6 | // 2: dest 7 | // 1: length 8 | // local variables 9 | // 1: source pointer 10 | // 2: dest pointer 11 | // 3: left count 12 | ws_label(memcopy); 13 | ws_label(mem_copy); 14 | ws_label(mem_move); 15 | 16 | ws_push(3); 17 | ws_swap(); 18 | ws_store(); 19 | // left count 20 | 21 | ws_push(2); 22 | ws_swap(); 23 | ws_store(); 24 | // dest pointer 25 | 26 | ws_push(1); 27 | ws_swap(); 28 | ws_store(); 29 | // source pointer 30 | 31 | 32 | ws_push(3); ws_fetch(); 33 | ws_jzn(memcopy_end);//no more left 34 | 35 | ws_push(1); ws_fetch(); 36 | ws_push(2); ws_fetch(); 37 | ws_sub(); 38 | 39 | ws_jz(memcopy_end);//source = dest 40 | 41 | ws_push(1); ws_fetch(); 42 | ws_push(2); ws_fetch(); 43 | ws_sub(); 44 | 45 | ws_jn(memcopy_loop_dest_greater_source_begin); 46 | ws_jump(memcopy_loop_source_greater_dest); 47 | 48 | 49 | ws_label(memcopy_loop_source_greater_dest); 50 | ws_push(2); 51 | ws_fetch(); 52 | ws_push(1); 53 | ws_fetch(); 54 | ws_fetch(); 55 | ws_store(); 56 | 57 | ws_push(2); 58 | ws_push(2); 59 | ws_fetch(); 60 | ws_push(1); 61 | ws_add(); 62 | ws_store(); 63 | 64 | ws_push(1); 65 | ws_push(1); 66 | ws_fetch(); 67 | ws_push(1); 68 | ws_add(); 69 | ws_store(); 70 | 71 | ws_push(3); 72 | ws_push(3); 73 | ws_fetch(); 74 | ws_push(1); 75 | ws_sub(); 76 | ws_store(); 77 | 78 | ws_push(3); ws_fetch(); 79 | 80 | ws_jz(memcopy_end); 81 | ws_jump(memcopy_loop_source_greater_dest); 82 | 83 | 84 | 85 | ws_label(memcopy_loop_dest_greater_source_begin); 86 | // dest > source so we need to go backwards throug the memory 87 | ws_push(2); 88 | ws_push(2); 89 | ws_fetch(); 90 | ws_push(3); 91 | ws_fetch(); 92 | ws_add(); 93 | ws_push(1); 94 | ws_sub(); 95 | ws_store(); 96 | 97 | ws_push(1); 98 | ws_push(1); 99 | ws_fetch(); 100 | ws_push(3); 101 | ws_fetch(); 102 | ws_add(); 103 | ws_push(1); 104 | ws_sub(); 105 | ws_store(); 106 | 107 | ws_label(memcopy_loop_dest_greater_source); 108 | ws_push(2); 109 | ws_fetch(); 110 | ws_push(1); 111 | ws_fetch(); 112 | ws_fetch(); 113 | ws_store(); 114 | 115 | ws_push(2); 116 | ws_push(2); 117 | ws_fetch(); 118 | ws_push(1); 119 | ws_sub(); 120 | ws_store(); 121 | 122 | ws_push(1); 123 | ws_push(1); 124 | ws_fetch(); 125 | ws_push(1); 126 | ws_sub(); 127 | ws_store(); 128 | 129 | ws_push(3); 130 | ws_push(3); 131 | ws_fetch(); 132 | ws_push(1); 133 | ws_sub(); 134 | ws_store(); 135 | 136 | ws_push(3); ws_fetch(); 137 | 138 | ws_jz(memcopy_end); 139 | ws_jump(memcopy_loop_dest_greater_source); 140 | 141 | 142 | ws_label(memcopy_end); 143 | 144 | ws_return(); 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | // parameter 153 | // [1] from 154 | // [2] count 155 | 156 | ws_label(mem_zero); 157 | 158 | ws_label(mem_zero_start); 159 | //from->count 160 | ws_dup(); 161 | ws_jz(mem_zero_end); 162 | 163 | ws_swap();//count->from 164 | 165 | ws_dup(); 166 | ws_push(0); 167 | ws_store(); 168 | 169 | ws_push(1); 170 | ws_add(); 171 | 172 | ws_swap();//from->count 173 | 174 | ws_push(1); 175 | ws_sub(); 176 | ws_jump(mem_zero_start); 177 | 178 | ws_label(mem_zero_end); 179 | ws_drop(); 180 | ws_drop(); 181 | ws_return(); 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | // nummeriere speicher von [1] - [2] // for debuging 198 | ws_label(numeriere); 199 | ws_push(2); 200 | ws_swap(); 201 | ws_store(); 202 | 203 | ws_push(1); 204 | ws_swap(); 205 | ws_store(); 206 | 207 | ws_push(1); 208 | ws_fetch(); 209 | 210 | ws_label(numeriere_start); 211 | 212 | ws_dup(); 213 | ws_dup(); 214 | ws_store(); 215 | 216 | ws_push(1); 217 | ws_add(); 218 | 219 | ws_dup(); 220 | 221 | ws_push(2); 222 | ws_fetch(); 223 | ws_sub(); 224 | 225 | ws_jz(numeriere_end); 226 | 227 | ws_jump(numeriere_start); 228 | 229 | ws_label(numeriere_end); 230 | ws_drop(); 231 | ws_return(); 232 | 233 | 234 | 235 | -------------------------------------------------------------------------------- /wsa.l: -------------------------------------------------------------------------------- 1 | %{ 2 | #include 3 | 4 | %} 5 | /* Not using these, make GCC STFU. */ 6 | %option noinput 7 | %option nounput 8 | 9 | %option noyywrap 10 | %option yylineno 11 | 12 | /* Lots of states becaue I'm parsing in here rather than yacc/bison */ 13 | %s BODY 14 | %s EOL 15 | %s NUMARG 16 | %s LBLARG 17 | %x ERROR 18 | 19 | alpha [A-Za-z] 20 | dig [0-9] 21 | name ({alpha}|[_$])({alpha}|{dig}|[_$])* 22 | 23 | digs {dig}+ 24 | w [ \t]* 25 | 26 | %% 27 | 28 | { 29 | {digs}: | 30 | \.{name}{w}: | 31 | {name}{w}: { printf("ws_label(%.*s);\n", yyleng-1, yytext); BEGIN(BODY); } 32 | } 33 | 34 | { 35 | (quit|exit|end) { printf("ws_exit();\n"); BEGIN(EOL); } 36 | (drop|discard) { printf("ws_drop();\n"); BEGIN(EOL); } 37 | (ret|return) { printf("ws_return();\n"); BEGIN(EOL); } 38 | (fetch|retrieve|retrive|retreive) { printf("ws_fetch();\n"); BEGIN(EOL); } 39 | dup { printf("ws_dup();\n"); BEGIN(EOL); } 40 | swap { printf("ws_swap();\n"); BEGIN(EOL); } 41 | (outc|outchar|printc) { printf("ws_outc();\n"); BEGIN(EOL); } 42 | (outn|outnum|printi) { printf("ws_outn();\n"); BEGIN(EOL); } 43 | (readc|readchar) { printf("ws_readc();\n"); BEGIN(EOL); } 44 | (readn|readnum|readi) { printf("ws_readn();\n"); BEGIN(EOL); } 45 | store { printf("ws_store();\n"); BEGIN(EOL); } 46 | mul { printf("ws_mul();\n"); BEGIN(EOL); } 47 | add { printf("ws_add();\n"); BEGIN(EOL); } 48 | sub { printf("ws_sub();\n"); BEGIN(EOL); } 49 | div { printf("ws_div();\n"); BEGIN(EOL); } 50 | mod { printf("ws_mod();\n"); BEGIN(EOL); } 51 | 52 | slide { printf("ws_slide("); BEGIN(NUMARG); } 53 | (copy|pick) { printf("ws_pick("); BEGIN(NUMARG); } 54 | push { printf("ws_push("); BEGIN(NUMARG); } 55 | 56 | (jmp|jump) { printf("ws_jump("); BEGIN(LBLARG); } 57 | label { printf("ws_label("); BEGIN(LBLARG); } 58 | call { printf("ws_call("); BEGIN(LBLARG); } 59 | jz { printf("ws_jz("); BEGIN(LBLARG); } 60 | jn { printf("ws_jn("); BEGIN(LBLARG); } 61 | 62 | } 63 | 64 | { 65 | -?[0-9]+ { printf("%s);\n", yytext); BEGIN(EOL); } 66 | 67 | '[^\\]' | 68 | '\\[ntab']' { printf("%s);\n", yytext); BEGIN(EOL); } 69 | 70 | \n { printf("); Error missing value\n"); BEGIN(INITIAL); } 71 | } 72 | 73 | { 74 | {digs} | 75 | {name} | 76 | \.{name} { printf("%s);\n", yytext); BEGIN(EOL); } 77 | 78 | \n { printf("); Error missing label\n"); BEGIN(INITIAL); } 79 | } 80 | 81 | .*\n { BEGIN(INITIAL); } 82 | 83 | ;.* ; /* Line comment */ 84 | #.* ; /* Line comment */ 85 | [ \t]+ ; /* Whitespace */ 86 | 87 | "\n" { BEGIN(INITIAL); } 88 | 89 | . | 90 | {name} { printf("Error badword \"%s\" on line %d\n", yytext, yylineno); BEGIN(ERROR); } 91 | %% 92 | 93 | /* TODO: 94 | Add meta commands: 95 | print string 96 | set memory eg: word ascii asciiz 97 | Command for putting special \n\s\t sequences in output. 98 | Codes mering push or push/swap into next instruction. (add/fetch etc). 99 | 100 | Code generation 101 | Label checking, label sorting (by usage) 102 | Mark/scan for dead code. 103 | "Start" command for entry point. 104 | 105 | Quick call ($name) 106 | Data labels, use for store and fetch commands. 107 | lblname = word 0 108 | 109 | */ 110 | 111 | int main(int argc, char ** argv) 112 | { 113 | do 114 | { 115 | if(argc>1) { 116 | if (!(yyin = fopen(argv[1], "r"))) { 117 | perror(argv[1]); 118 | exit(1); 119 | } 120 | yyrestart(yyin); 121 | BEGIN(INITIAL); 122 | } 123 | 124 | yylex(); 125 | 126 | if(argc>1) { 127 | fclose(yyin); 128 | argv++, argc--; 129 | } 130 | } while(argc>1); 131 | return 0; 132 | } 133 | 134 | size_t 135 | ws_prefilter(char * buf, size_t max_size) 136 | { 137 | size_t n; 138 | int c; 139 | for ( n = 0; n < max_size && (c = getc( yyin )) != EOF ;) { 140 | if (c == ' ' || c == '\t' || c == '\n') 141 | buf[n++] = (char) c; 142 | } 143 | if ( c == EOF && ferror( yyin ) ) 144 | YY_FATAL_ERROR( "input in flex scanner failed" ); 145 | return n; 146 | } 147 | 148 | int cv_number(char * ws_num) 149 | { 150 | int negative = (*ws_num++ != ' '); 151 | int value = 0; 152 | 153 | if (strlen(ws_num) > 32) 154 | YY_FATAL_ERROR( "Literal constant too large" ); 155 | 156 | while(*ws_num != '\n') { 157 | value *= 2; 158 | if (*ws_num != ' ') 159 | value++; 160 | ws_num++; 161 | } 162 | if (negative) value = -value; 163 | return value; 164 | } 165 | 166 | char * cv_label(char * ws_label) 167 | { 168 | char * s; 169 | for (s = ws_label; *s; s++) switch(*s) 170 | { 171 | case ' ': *s = '0'; break; 172 | case '\t': *s = '1'; break; 173 | case '\n': *s = '\0'; break; 174 | default: *s = '*'; break; 175 | } 176 | return ws_label; 177 | } 178 | -------------------------------------------------------------------------------- /ws_engine.h: -------------------------------------------------------------------------------- 1 | 2 | #ifndef EMBEDDED_WS 3 | 4 | # include 5 | # include 6 | # include 7 | 8 | # ifndef NO_INTTYPES 9 | # include 10 | # define cell_t intmax_t 11 | # define INTcell_C(mpm) INTMAX_C(mpm) 12 | # define PRIdcell PRIdMAX 13 | # define SCNdcell SCNdMAX 14 | # else 15 | # define cell_t long 16 | # define INTcell_C(mpm) mpm ## L 17 | # define PRIdcell "ld" 18 | # define SCNdcell "ld" 19 | # endif 20 | 21 | typedef int rtnstr_t; 22 | 23 | # define ws_label(x) L_ ## x: 24 | # define ws_call(x) rpush(__LINE__); goto L_ ## x; case __LINE__: 25 | # define ws_jump(x) goto L_ ## x 26 | # define ws_jz(x) if(ws_pop() == 0) goto L_ ## x 27 | # define ws_jn(x) if(ws_pop() < 0) goto L_ ## x 28 | # define ws_return() continue 29 | # define ws_exit() exit(0) 30 | 31 | #else 32 | typedef struct pnode * rtnstr_t; 33 | #endif 34 | 35 | #ifdef __GNUC__ 36 | # define GCC_UNUSED __attribute__ ((unused)) 37 | #else 38 | # define GCC_UNUSED 39 | #endif 40 | 41 | #define LOCALLIB static inline GCC_UNUSED 42 | 43 | #define LOCALLIB static inline GCC_UNUSED 44 | 45 | cell_t *main_stack = 0; 46 | int main_slen = 0, main_sp = 0; 47 | 48 | rtnstr_t * retr_stack = 0; 49 | int retr_slen = 0, retr_sp = 0; 50 | 51 | cell_t *memory = 0; 52 | int memlen = 0; 53 | 54 | #ifndef NO_MEMORYCHECK 55 | static void check_memory(cell_t mptr) { 56 | static int mccount = 5; 57 | if (mptr >= 0 && mptr < memlen) return; 58 | #ifdef EMBEDDED_WS 59 | if (enable_warnings == 0) return; 60 | #endif 61 | if (mccount == 0) return; 62 | 63 | if (mptr < 0) { 64 | fprintf(stderr, "Memory pointer %"PRIdcell" is illegal.\n", mptr); 65 | } else { 66 | fprintf(stderr, "Memory pointer %"PRIdcell" has not been allocated.\n", mptr); 67 | } 68 | 69 | if (--mccount == 0) 70 | fprintf(stderr, "Disabling memory_check() for this run\n"); 71 | } 72 | #endif 73 | 74 | static void extend_memory(cell_t mptr) { 75 | int oldmsize, newmsize, i; 76 | if (mptr < 0) { 77 | fprintf(stderr, "Memory pointer %"PRIdcell" is illegal.\n", mptr); 78 | exit(99); 79 | } 80 | if (mptr < memlen) return; 81 | 82 | oldmsize = ((memlen+4095)/4096)*4096; 83 | memlen = mptr + 1; 84 | newmsize = ((memlen+4095)/4096)*4096; 85 | if (oldmsize == newmsize) return; 86 | memory = realloc(memory, newmsize*sizeof*memory); 87 | if (memory == 0) { 88 | fprintf(stderr, "Out of memory: %"PRIdcell"\n", mptr); 89 | exit(4); 90 | } 91 | for(i=oldmsize; i= retr_slen) rextend(); 105 | retr_stack[retr_sp++] = val; 106 | } 107 | 108 | LOCALLIB rtnstr_t rpop() { 109 | if(retr_sp == 0) { 110 | fprintf(stderr, "Return stack underflow\n"); 111 | exit(99); 112 | } 113 | return retr_stack[--retr_sp]; 114 | } 115 | 116 | static void mstackempty(void) { 117 | fprintf(stderr, "Main stack underflow\n"); 118 | exit(99); 119 | } 120 | 121 | static void mextend(void) { 122 | main_stack = realloc(main_stack, (main_slen += 1024)*sizeof*main_stack); 123 | if (!main_stack) { 124 | perror("wsi: main stack"); 125 | exit(1); 126 | } 127 | } 128 | 129 | #ifdef NO_STACKCHECK 130 | # define mstacktwo() 131 | # define mstackone() 132 | #else 133 | LOCALLIB void mstacktwo() { if (main_sp < 2) mstackempty(); } 134 | LOCALLIB void mstackone() { if (main_sp < 1) mstackempty(); } 135 | #endif 136 | 137 | #define TOS (main_stack[main_sp-1]) 138 | #define NOS (main_stack[main_sp-2]) 139 | 140 | LOCALLIB void ws_push(cell_t val) { 141 | if (main_sp >= main_slen) mextend(); 142 | main_stack[main_sp++] = val; 143 | } 144 | 145 | LOCALLIB cell_t ws_pop() { 146 | mstackone(); 147 | return main_stack[--main_sp]; 148 | } 149 | 150 | LOCALLIB void ws_drop() { ws_pop(); } 151 | LOCALLIB void ws_dup() { mstackone(); ws_push(TOS); } 152 | LOCALLIB void ws_swap() { cell_t t; mstacktwo(); t = TOS; TOS = NOS; NOS = t; } 153 | LOCALLIB void ws_add() { mstacktwo(); NOS = NOS + TOS; main_sp--; } 154 | LOCALLIB void ws_sub() { mstacktwo(); NOS = NOS - TOS; main_sp--; } 155 | LOCALLIB void ws_mul() { mstacktwo(); NOS = NOS * TOS; main_sp--; } 156 | LOCALLIB void ws_div() { mstacktwo(); if (TOS) NOS = NOS / TOS; else NOS=0; main_sp--; } 157 | LOCALLIB void ws_mod() { mstacktwo(); if (TOS) NOS = NOS % TOS; else NOS=0; main_sp--; } 158 | 159 | LOCALLIB void ws_store() { 160 | mstacktwo(); 161 | extend_memory(NOS); 162 | memory[NOS] = TOS; 163 | main_sp -= 2; 164 | } 165 | 166 | LOCALLIB void ws_fetch() { 167 | mstackone(); 168 | if (TOS < 0 || TOS >= memlen) { 169 | #ifndef NO_MEMORYCHECK 170 | check_memory(TOS); 171 | #endif 172 | TOS = 0; 173 | return; 174 | } 175 | TOS = memory[TOS]; 176 | } 177 | 178 | LOCALLIB void ws_outc() { mstackone(); putchar(TOS); main_sp--; } 179 | 180 | LOCALLIB void ws_readc() { 181 | mstackone(); 182 | extend_memory(TOS); 183 | memory[TOS] = getchar(); 184 | main_sp--; 185 | } 186 | 187 | static GCC_UNUSED void ws_outn() { mstackone(); printf("%"PRIdcell, TOS); main_sp--; } 188 | 189 | static GCC_UNUSED void ws_readn() { 190 | char ibuf[1024]; 191 | mstackone(); 192 | extend_memory(TOS); 193 | if (fgets(ibuf, sizeof(ibuf), stdin)) { 194 | cell_t val = 0; 195 | sscanf(ibuf, "%"SCNdcell, &val); 196 | memory[TOS] = val; 197 | } else 198 | memory[TOS] = 0; 199 | main_sp--; 200 | } 201 | 202 | static GCC_UNUSED void ws_pick(cell_t val) { 203 | if(val < 0 || val >= main_sp) mstackempty(); 204 | ws_push(main_stack[main_sp-val-1]); 205 | } 206 | 207 | static GCC_UNUSED void ws_slide(cell_t val) { 208 | cell_t t; 209 | mstackone(); 210 | t = TOS; 211 | while(val-->0 && main_sp) ws_drop(); 212 | mstackone(); 213 | TOS = t; 214 | } 215 | 216 | #ifdef WS_TRACE 217 | static GCC_UNUSED void ws_trace(int val) { 218 | fprintf(stderr, "I %d %d %d %d\n", 219 | val, 220 | main_sp, 221 | main_sp>0?(int)TOS:0, 222 | main_sp>1?(int)NOS:0 223 | ); 224 | } 225 | #endif 226 | 227 | #define ws_comment(x) 228 | 229 | #define ws_header() \ 230 | int \ 231 | main(void) \ 232 | { \ 233 | setbuf(stdout, 0); \ 234 | rpush(-1); \ 235 | \ 236 | while(1) { \ 237 | switch(rpop()) { \ 238 | case -1: 239 | 240 | #define ws_trailer } ws_exit(); } } 241 | 242 | /****************************************************************************/ 243 | -------------------------------------------------------------------------------- /ws_gencode.h: -------------------------------------------------------------------------------- 1 | 2 | #include 3 | #include 4 | #include 5 | 6 | #ifndef BIJECTIVE 7 | #define BIJECTIVE 0 8 | #endif 9 | 10 | #ifdef ATOMISE_LABELS 11 | 12 | #define ws_label(x) ws_label_int(atom(#x)) 13 | #define ws_jump(x) ws_jump_int(atom(#x)) 14 | #define ws_jz(x) ws_jz_int(atom(#x)) 15 | #define ws_jn(x) ws_jn_int(atom(#x)) 16 | #define ws_jp(x) ws_jp_int(atom(#x)) 17 | #define ws_jzn(x) ws_jzn_int(atom(#x)) 18 | #define ws_jzp(x) ws_jzp_int(atom(#x)) 19 | #define ws_jnz(x) ws_jnz_int(atom(#x)) 20 | #define ws_call(x) ws_call_int(atom(#x)) 21 | 22 | #else 23 | 24 | #define ws_label(x) ws_label_int(x) 25 | #define ws_jump(x) ws_jump_int(x) 26 | #define ws_jz(x) ws_jz_int(x) 27 | #define ws_jn(x) ws_jn_int(x) 28 | #define ws_jp(x) ws_jp_int(x) 29 | #define ws_jzn(x) ws_jzn_int(x) 30 | #define ws_jzp(x) ws_jzp_int(x) 31 | #define ws_jnz(x) ws_jnz_int(x) 32 | #define ws_call(x) ws_call_int(x) 33 | 34 | #endif 35 | 36 | static void putnum(unsigned long num, int clipped); 37 | static void putsnum(long val); 38 | static int atom(char * s); 39 | 40 | static void ws_label_int(int v) { printf("\n "); putnum(v, BIJECTIVE); } 41 | static void ws_jump_int(int v) { printf("\n \n"); putnum(v, BIJECTIVE); } 42 | static void ws_jz_int(int v) { printf("\n\t "); putnum(v, BIJECTIVE); } 43 | static void ws_jn_int(int v) { printf("\n\t\t"); putnum(v, BIJECTIVE); } 44 | static void ws_call_int(int v) { printf("\n \t"); putnum(v, BIJECTIVE); } 45 | 46 | static void ws_push(int v) { printf(" "); putsnum(v); } 47 | static void ws_exit() { printf("\n\n\n"); } 48 | static void ws_return() { printf("\n\t\n"); } 49 | 50 | static void ws_dup() { printf(" \n "); } 51 | static void ws_swap() { printf(" \n\t"); } 52 | static void ws_drop() { printf(" \n\n"); } 53 | 54 | static void ws_outc() { printf("\t\n "); } 55 | static void ws_readc() { printf("\t\n\t "); } 56 | static void ws_outn() { printf("\t\n \t"); } 57 | static void ws_readn() { printf("\t\n\t\t"); } 58 | 59 | static void ws_add() { printf("\t "); } 60 | static void ws_sub() { printf("\t \t"); } 61 | static void ws_mul() { printf("\t \n"); } 62 | static void ws_div() { printf("\t \t "); } 63 | static void ws_mod() { printf("\t \t\t"); } 64 | 65 | static void ws_fetch() { printf("\t\t\t"); } 66 | static void ws_store() { printf("\t\t "); } 67 | 68 | #define ws_retrieve ws_fetch 69 | 70 | /* Version 0.3 functions */ 71 | static void ws_pick(int v) { printf(" \t "); putsnum(v); } 72 | static void ws_slide(int v) { printf(" \t\n"); putsnum(v); } 73 | 74 | /* Minor macros */ 75 | 76 | /* Push a string onto the stack in reverse order. */ 77 | static void ws_pushs(char * s) 78 | { 79 | int c=0, i; 80 | #ifdef VERBOSE 81 | printf("pushs(\""); 82 | for(i=0; s[i]; i++) 83 | if ( (s[i] >= '!' && s[i] <= '~') && s[i] != '\\' && s[i] != '"') 84 | putchar(s[i]); 85 | else 86 | printf("\\%03o", (unsigned char) s[i]); 87 | printf("\")"); 88 | #endif 89 | for(i = strlen(s) +1; i>0 ; i--) { 90 | if (c!=0 && c == s[i-1]) 91 | ws_dup(); 92 | else 93 | ws_push(c = s[i-1]); 94 | } 95 | } 96 | 97 | #ifdef ATOMISE_LABELS 98 | /* These only work properly if they can allocate a unique atom */ 99 | 100 | /* Jump if positive */ 101 | static void ws_jp_int(int v) { 102 | int t = atom(""); 103 | ws_dup(); 104 | ws_jn_int(t); 105 | ws_dup(); 106 | ws_jz_int(t); 107 | ws_drop(); 108 | ws_jump_int(v); 109 | ws_label_int(t); 110 | ws_drop(); 111 | } 112 | 113 | /* Jump if zero or positive */ 114 | static void ws_jzp_int(int v) { 115 | int t = atom(""); 116 | ws_jn_int(t); 117 | ws_jump_int(v); 118 | ws_label_int(t); 119 | } 120 | 121 | /* Jump if zero or negative */ 122 | static void ws_jzn_int(int v) { 123 | int t1 = atom(""); 124 | int t2 = atom(""); 125 | ws_dup(); 126 | ws_jn_int(t1); 127 | ws_dup(); 128 | ws_jz_int(t1); 129 | ws_jump_int(t2); 130 | ws_label_int(t1); 131 | ws_drop(); 132 | ws_jump_int(v); 133 | ws_label_int(t2); 134 | ws_drop(); 135 | } 136 | 137 | /* Jump if Not zero */ 138 | static void ws_jnz_int(int v) { 139 | int t = atom(""); 140 | ws_jz_int(t); 141 | ws_jump_int(v); 142 | ws_label_int(t); 143 | } 144 | 145 | #endif 146 | 147 | static void 148 | putnum(unsigned long num, int clipped) 149 | { 150 | unsigned long v, max; 151 | 152 | max = 1; v = num; 153 | for(;;) { 154 | v /= 2; 155 | if (v == 0) break; 156 | max *= 2; 157 | } 158 | if (clipped) { num -= max; max /= 2; } 159 | if (max) for(;;) { 160 | v = num / max; 161 | num = num % max; 162 | if (v == 0) putchar(' '); else printf("\t"); 163 | if (max == 1) break; 164 | max /= 2; 165 | } 166 | putchar('\n'); 167 | } 168 | 169 | static void 170 | putsnum(long val) 171 | { 172 | if (val >= 0) { 173 | putchar(' '); 174 | putnum(val, 0); 175 | } else { 176 | printf("\t"); 177 | putnum(-val, 0); 178 | } 179 | } 180 | 181 | /* 182 | * This is VERY slow, if you have more than a few dozen symbols RELACE THIS. 183 | * 184 | * Note: Returned IDs start at one. 185 | * Note: An empty string gives a unique id. 186 | */ 187 | static char ** atom_list; 188 | static int atom_size = 0; 189 | static int atom_len = 0; 190 | 191 | static int atom(char * s) 192 | { 193 | int i; 194 | #ifdef VERBOSE 195 | for(i=0; s[i]; i++) 196 | if ( (s[i] >= '0' && s[i] <= '9') || (s[i] >= 'A' && s[i] <= 'Z') || 197 | (s[i] >= 'a' && s[i] <= 'z') || s[i] == '_') 198 | putchar(s[i]); 199 | #endif 200 | 201 | if (atom_len >= atom_size) { 202 | atom_list = realloc(atom_list, (atom_size+=1024)*sizeof*atom_list); 203 | } 204 | if(*s) for(i=0; i= ' ' && *s <= '~') || *s == '\t') 235 | putchar(*s); 236 | else if (*s == '\n') { 237 | putchar(*s); 238 | col = 0; 239 | nl ++; 240 | } 241 | } 242 | if (col) { putchar('\n'); nl++; } 243 | while(nl-->1) ws_add(); 244 | ws_drop(); 245 | } 246 | 247 | #define ws_header() int main() { 248 | #define ws_trailer return 0;} 249 | 250 | /****************************************************************************/ 251 | -------------------------------------------------------------------------------- /gen-99bottles.c: -------------------------------------------------------------------------------- 1 | 2 | #include "ws_gencode.h" 3 | 4 | ws_header(); 5 | 6 | ws_comment( "Whitespace version of 99 bottles of beer (Bottles.ws) 2003-04-01" 7 | "\n" "See http://compsoc.dur.ac.uk/whitespace/ for details interpreter" 8 | "\n" "Example by Andrew Kemp " 9 | "\n" "" 10 | "\n" "(*All* space/tab/linefeed characters are significant!)"); 11 | 12 | ws_push(99); /* sssttsssttl */ 13 | 14 | ws_label(1); // lssst 15 | ws_call(2); 16 | 17 | ws_dup(); /* sls */ 18 | ws_jz(3); /* ltsttl */ 19 | ws_jump(1); /* lsltl */ 20 | 21 | ws_label(3); /* lssttl */ 22 | ws_exit(); /* lll */ 23 | 24 | ws_label(2); /* lsstsl */ 25 | ws_call(4); /* lsttssl */ 26 | ws_push(32); /* ssstsssssl */ 27 | ws_outc(); /* tlss */ 28 | ws_push(111); /* sssttsttttl */ 29 | ws_outc(); /* tlss */ 30 | ws_push(102); /* sssttssttsl */ 31 | ws_outc(); /* tlss */ 32 | ws_push(32); /* ssstsssssl */ 33 | ws_outc(); /* tlss */ 34 | ws_push(98); /* sssttssstsl */ 35 | ws_outc(); /* tlss */ 36 | ws_push(101); /* sssttsststl */ 37 | ws_outc(); /* tlss */ 38 | ws_push(101); /* sssttsststl */ 39 | ws_outc(); /* tlss */ 40 | ws_push(114); /* ssstttsstsl */ 41 | ws_outc(); /* tlss */ 42 | ws_push(32); /* ssstsssssl */ 43 | ws_outc(); /* tlss */ 44 | ws_push(111); /* sssttsttttl */ 45 | ws_outc(); /* tlss */ 46 | ws_push(110); /* sssttstttsl */ 47 | ws_outc(); /* tlss */ 48 | ws_push(32); /* ssstsssssl */ 49 | ws_outc(); /* tlss */ 50 | ws_push(116); /* ssstttstssl */ 51 | ws_outc(); /* tlss */ 52 | ws_push(104); /* sssttstsssl */ 53 | ws_outc(); /* tlss */ 54 | ws_push(101); /* sssttsststl */ 55 | ws_outc(); /* tlss */ 56 | ws_push(32); /* ssstsssssl */ 57 | ws_outc(); /* tlss */ 58 | ws_push(119); /* ssstttstttl */ 59 | ws_outc(); /* tlss */ 60 | ws_push(97); /* sssttsssstl */ 61 | ws_outc(); /* tlss */ 62 | ws_push(108); /* sssttsttssl */ 63 | ws_outc(); /* tlss */ 64 | ws_push(108); /* sssttsttssl */ 65 | ws_outc(); /* tlss */ 66 | ws_push(44); /* ssststtssl */ 67 | ws_outc(); /* tlss */ 68 | ws_push(10); /* ssststsl */ 69 | ws_outc(); /* tlss */ 70 | ws_call(4); /* lsttssl */ 71 | ws_push(32); /* ssstsssssl */ 72 | ws_outc(); /* tlss */ 73 | ws_push(111); /* sssttsttttl */ 74 | ws_outc(); /* tlss */ 75 | ws_push(102); /* sssttssttsl */ 76 | ws_outc(); /* tlss */ 77 | ws_push(32); /* ssstsssssl */ 78 | ws_outc(); /* tlss */ 79 | ws_push(98); /* sssttssstsl */ 80 | ws_outc(); /* tlss */ 81 | ws_push(101); /* sssttsststl */ 82 | ws_outc(); /* tlss */ 83 | ws_push(101); /* sssttsststl */ 84 | ws_outc(); /* tlss */ 85 | ws_push(114); /* ssstttsstsl */ 86 | ws_outc(); /* tlss */ 87 | ws_push(44); /* ssststtssl */ 88 | ws_outc(); /* tlss */ 89 | ws_push(10); /* ssststsl */ 90 | ws_outc(); /* tlss */ 91 | ws_push(84); /* ssstststssl */ 92 | ws_outc(); /* tlss */ 93 | ws_push(97); /* sssttsssstl */ 94 | ws_outc(); /* tlss */ 95 | ws_push(107); /* sssttststtl */ 96 | ws_outc(); /* tlss */ 97 | ws_push(101); /* sssttsststl */ 98 | ws_outc(); /* tlss */ 99 | ws_push(32); /* ssstsssssl */ 100 | ws_outc(); /* tlss */ 101 | ws_push(111); /* sssttsttttl */ 102 | ws_outc(); /* tlss */ 103 | ws_push(110); /* sssttstttsl */ 104 | ws_outc(); /* tlss */ 105 | ws_push(101); /* sssttsststl */ 106 | ws_outc(); /* tlss */ 107 | ws_push(32); /* ssstsssssl */ 108 | ws_outc(); /* tlss */ 109 | ws_push(100); /* sssttsstssl */ 110 | ws_outc(); /* tlss */ 111 | ws_push(111); /* sssttsttttl */ 112 | ws_outc(); /* tlss */ 113 | ws_push(119); /* ssstttstttl */ 114 | ws_outc(); /* tlss */ 115 | ws_push(110); /* sssttstttsl */ 116 | ws_outc(); /* tlss */ 117 | ws_push(32); /* ssstsssssl */ 118 | ws_outc(); /* tlss */ 119 | ws_push(97); /* sssttsssstl */ 120 | ws_outc(); /* tlss */ 121 | ws_push(110); /* sssttstttsl */ 122 | ws_outc(); /* tlss */ 123 | ws_push(100); /* sssttsstssl */ 124 | ws_outc(); /* tlss */ 125 | ws_push(32); /* ssstsssssl */ 126 | ws_outc(); /* tlss */ 127 | ws_push(112); /* ssstttssssl */ 128 | ws_outc(); /* tlss */ 129 | ws_push(97); /* sssttsssstl */ 130 | ws_outc(); /* tlss */ 131 | ws_push(115); /* ssstttssttl */ 132 | ws_outc(); /* tlss */ 133 | ws_push(115); /* ssstttssttl */ 134 | ws_outc(); /* tlss */ 135 | ws_push(32); /* ssstsssssl */ 136 | ws_outc(); /* tlss */ 137 | ws_push(105); /* sssttstsstl */ 138 | ws_outc(); /* tlss */ 139 | ws_push(116); /* ssstttstssl */ 140 | ws_outc(); /* tlss */ 141 | ws_push(32); /* ssstsssssl */ 142 | ws_outc(); /* tlss */ 143 | ws_push(97); /* sssttsssstl */ 144 | ws_outc(); /* tlss */ 145 | ws_push(114); /* ssstttsstsl */ 146 | ws_outc(); /* tlss */ 147 | ws_push(111); /* sssttsttttl */ 148 | ws_outc(); /* tlss */ 149 | ws_push(117); /* ssstttststl */ 150 | ws_outc(); /* tlss */ 151 | ws_push(110); /* sssttstttsl */ 152 | ws_outc(); /* tlss */ 153 | ws_push(100); /* sssttsstssl */ 154 | ws_outc(); /* tlss */ 155 | ws_push(44); /* ssststtssl */ 156 | ws_outc(); /* tlss */ 157 | ws_push(10); /* ssststsl */ 158 | ws_outc(); /* tlss */ 159 | ws_push(1); /* ssstl */ 160 | ws_sub(); /* tsst */ 161 | ws_call(4); /* lsttssl */ 162 | ws_push(32); /* ssstsssssl */ 163 | ws_outc(); /* tlss */ 164 | ws_push(111); /* sssttsttttl */ 165 | ws_outc(); /* tlss */ 166 | ws_push(102); /* sssttssttsl */ 167 | ws_outc(); /* tlss */ 168 | ws_push(32); /* ssstsssssl */ 169 | ws_outc(); /* tlss */ 170 | ws_push(98); /* sssttssstsl */ 171 | ws_outc(); /* tlss */ 172 | ws_push(101); /* sssttsststl */ 173 | ws_outc(); /* tlss */ 174 | ws_push(101); /* sssttsststl */ 175 | ws_outc(); /* tlss */ 176 | ws_push(114); /* ssstttsstsl */ 177 | ws_outc(); /* tlss */ 178 | ws_push(46); /* ssststttsl */ 179 | ws_outc(); /* tlss */ 180 | ws_push(10); /* ssststsl */ 181 | ws_outc(); /* tlss */ 182 | ws_push(10); /* ssststsl */ 183 | ws_outc(); /* tlss */ 184 | ws_return(); /* ltl */ 185 | 186 | ws_label(4); /* lsstssl */ 187 | ws_dup(); /* sls */ 188 | ws_push(1); /* ssstl */ 189 | ws_sub(); /* tsst */ 190 | ws_dup(); /* sls */ 191 | ws_jn(5); /* ltttstl */ 192 | ws_jz(6); /* ltsttsl */ 193 | ws_dup(); /* sls */ 194 | ws_outn(); /* tlst */ 195 | ws_push(32); /* ssstsssssl */ 196 | ws_outc(); /* tlss */ 197 | ws_push(98); /* sssttssstsl */ 198 | ws_outc(); /* tlss */ 199 | ws_push(111); /* sssttsttttl */ 200 | ws_outc(); /* tlss */ 201 | ws_push(116); /* ssstttstssl */ 202 | ws_outc(); /* tlss */ 203 | ws_push(116); /* ssstttstssl */ 204 | ws_outc(); /* tlss */ 205 | ws_push(108); /* sssttsttssl */ 206 | ws_outc(); /* tlss */ 207 | ws_push(101); /* sssttsststl */ 208 | ws_outc(); /* tlss */ 209 | ws_push(115); /* ssstttssttl */ 210 | ws_outc(); /* tlss */ 211 | ws_return(); /* ltl */ 212 | 213 | ws_label(6); /* lssttsl */ 214 | ws_push(49); /* sssttssstl */ 215 | ws_outc(); /* tlss */ 216 | ws_push(32); /* ssstsssssl */ 217 | ws_outc(); /* tlss */ 218 | ws_push(98); /* sssttssstsl */ 219 | ws_outc(); /* tlss */ 220 | ws_push(111); /* sssttsttttl */ 221 | ws_outc(); /* tlss */ 222 | ws_push(116); /* ssstttstssl */ 223 | ws_outc(); /* tlss */ 224 | ws_push(116); /* ssstttstssl */ 225 | ws_outc(); /* tlss */ 226 | ws_push(108); /* sssttsttssl */ 227 | ws_outc(); /* tlss */ 228 | ws_push(101); /* sssttsststl */ 229 | ws_outc(); /* tlss */ 230 | ws_return(); /* ltl */ 231 | 232 | ws_label(5); /* lsststl */ 233 | ws_drop(); /* sll */ 234 | ws_push(78); /* ssstsstttsl */ 235 | ws_outc(); /* tlss */ 236 | ws_push(111); /* sssttsttttl */ 237 | ws_outc(); /* tlss */ 238 | ws_push(32); /* ssstsssssl */ 239 | ws_outc(); /* tlss */ 240 | ws_push(109); /* sssttsttstl */ 241 | ws_outc(); /* tlss */ 242 | ws_push(111); /* sssttsttttl */ 243 | ws_outc(); /* tlss */ 244 | ws_push(114); /* ssstttsstsl */ 245 | ws_outc(); /* tlss */ 246 | ws_push(101); /* sssttsststl */ 247 | ws_outc(); /* tlss */ 248 | ws_push(32); /* ssstsssssl */ 249 | ws_outc(); /* tlss */ 250 | ws_push(98); /* sssttssstsl */ 251 | ws_outc(); /* tlss */ 252 | ws_push(111); /* sssttsttttl */ 253 | ws_outc(); /* tlss */ 254 | ws_push(116); /* ssstttstssl */ 255 | ws_outc(); /* tlss */ 256 | ws_push(116); /* ssstttstssl */ 257 | ws_outc(); /* tlss */ 258 | ws_push(108); /* sssttsttssl */ 259 | ws_outc(); /* tlss */ 260 | ws_push(101); /* sssttsststl */ 261 | ws_outc(); /* tlss */ 262 | ws_push(115); /* ssstttssttl */ 263 | ws_outc(); /* tlss */ 264 | ws_return(); /* ltl */ 265 | 266 | ws_trailer 267 | -------------------------------------------------------------------------------- /tests/Vii5ard/quine-2.ws: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 | 256 | 257 | 258 | 259 | 260 | 261 | 262 | 263 | 264 | 265 | 266 | 267 | 268 | 269 | 270 | 271 | 272 | 273 | 274 | 275 | 276 | 277 | 278 | 279 | 280 | 281 | 282 | 283 | 284 | 285 | 286 | 287 | 288 | 289 | 290 | 291 | 292 | 293 | 294 | 295 | 296 | 297 | 298 | 299 | 300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308 | 309 | 310 | 311 | 312 | 313 | 314 | 315 | 316 | 317 | 318 | 319 | 320 | 321 | 322 | 323 | 324 | 325 | 326 | 327 | 328 | 329 | 330 | 331 | 332 | 333 | 334 | 335 | 336 | 337 | 338 | 339 | 340 | 341 | 342 | 343 | 344 | 345 | 346 | 347 | 348 | 349 | 350 | 351 | 352 | 353 | 354 | 355 | 356 | 357 | 358 | 359 | 360 | 361 | 362 | 363 | 364 | 365 | 366 | 367 | 368 | 369 | 370 | 371 | 372 | 373 | 374 | 375 | 376 | 377 | 378 | 379 | 380 | 381 | 382 | 383 | 384 | 385 | 386 | 387 | 388 | 389 | 390 | 391 | 392 | 393 | 394 | 395 | 396 | 397 | 398 | 399 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 419 | 420 | 421 | 422 | 423 | 424 | 425 | 426 | 427 | 428 | 429 | 430 | 431 | 432 | 433 | 434 | 435 | 436 | 437 | 438 | 439 | 440 | 441 | 442 | 443 | 444 | 445 | 446 | 447 | 448 | 449 | 450 | 451 | 452 | 453 | 454 | 455 | 456 | 457 | 458 | 459 | 460 | 461 | 462 | 463 | 464 | 465 | 466 | 467 | 468 | 469 | 470 | 471 | 472 | 473 | 474 | 475 | 476 | 477 | 478 | 479 | 480 | 481 | 482 | 483 | 484 | 485 | 486 | 487 | 488 | 489 | 490 | 491 | 492 | 493 | 494 | 495 | 496 | 497 | 498 | 499 | 500 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 509 | 510 | 511 | 512 | 513 | 514 | 515 | 516 | 517 | 518 | 519 | 520 | 521 | 522 | 523 | 524 | 525 | 526 | 527 | 528 | 529 | 530 | 531 | 532 | 533 | 534 | 535 | 536 | 537 | 538 | 539 | 540 | 541 | 542 | 543 | 544 | 545 | 546 | 547 | 548 | 549 | 550 | 551 | 552 | 553 | 554 | 555 | 556 | 557 | 558 | 559 | 560 | 561 | 562 | 563 | 564 | 565 | 566 | 567 | 568 | 569 | 570 | 571 | 572 | 573 | 574 | 575 | 576 | 577 | 578 | 579 | 580 | 581 | 582 | 583 | 584 | 585 | 586 | 587 | 588 | 589 | 590 | 591 | 592 | 593 | 594 | 595 | 596 | 597 | 598 | 599 | 600 | 601 | 602 | 603 | 604 | 605 | 606 | 607 | 608 | 609 | 610 | 611 | 612 | 613 | 614 | 615 | 616 | 617 | 618 | 619 | 620 | 621 | 622 | 623 | 624 | 625 | 626 | 627 | 628 | 629 | 630 | 631 | 632 | 633 | 634 | 635 | 636 | 637 | 638 | 639 | 640 | 641 | 642 | 643 | 644 | 645 | 646 | 647 | 648 | 649 | 650 | 651 | 652 | 653 | 654 | 655 | 656 | 657 | 658 | 659 | 660 | 661 | 662 | 663 | 664 | 665 | 666 | 667 | 668 | 669 | 670 | 671 | 672 | 673 | 674 | 675 | 676 | 677 | 678 | 679 | 680 | 681 | 682 | 683 | 684 | 685 | 686 | 687 | 688 | 689 | 690 | 691 | 692 | 693 | 694 | 695 | 696 | 697 | 698 | 699 | 700 | 701 | 702 | 703 | 704 | 705 | 706 | 707 | 708 | 709 | 710 | 711 | 712 | 713 | 714 | 715 | 716 | 717 | 718 | 719 | 720 | 721 | 722 | 723 | 724 | 725 | 726 | 727 | 728 | 729 | 730 | 731 | 732 | 733 | 734 | 735 | 736 | 737 | 738 | 739 | 740 | 741 | 742 | 743 | 744 | 745 | 746 | 747 | 748 | 749 | 750 | 751 | 752 | 753 | 754 | 755 | 756 | 757 | 758 | 759 | 760 | 761 | 762 | 763 | 764 | 765 | 766 | 767 | 768 | 769 | 770 | 771 | 772 | 773 | 774 | 775 | 776 | 777 | 778 | 779 | 780 | 781 | 782 | 783 | 784 | 785 | 786 | 787 | 788 | 789 | 790 | 791 | 792 | 793 | 794 | 795 | 796 | 797 | 798 | 799 | 800 | 801 | 802 | 803 | 804 | 805 | 806 | 807 | 808 | 809 | 810 | 811 | 812 | 813 | 814 | 815 | 816 | 817 | 818 | 819 | 820 | 821 | 822 | 823 | 824 | 825 | 826 | 827 | 828 | 829 | 830 | 831 | 832 | 833 | 834 | 835 | 836 | 837 | 838 | 839 | 840 | 841 | 842 | 843 | 844 | 845 | 846 | 847 | 848 | 849 | 850 | 851 | 852 | 853 | 854 | 855 | 856 | 857 | 858 | 859 | 860 | 861 | 862 | 863 | 864 | 865 | 866 | 867 | 868 | 869 | 870 | 871 | 872 | 873 | 874 | 875 | 876 | 877 | 878 | 879 | 880 | 881 | 882 | 883 | 884 | 885 | 886 | 887 | 888 | 889 | 890 | 891 | 892 | 893 | 894 | 895 | 896 | 897 | 898 | 899 | 900 | 901 | 902 | 903 | 904 | 905 | 906 | 907 | 908 | 909 | 910 | 911 | 912 | 913 | 914 | 915 | 916 | 917 | 918 | 919 | 920 | 921 | 922 | 923 | 924 | 925 | 926 | 927 | 928 | 929 | 930 | 931 | 932 | 933 | 934 | 935 | 936 | 937 | 938 | 939 | 940 | 941 | 942 | 943 | 944 | 945 | 946 | 947 | 948 | 949 | 950 | 951 | 952 | 953 | 954 | 955 | 956 | 957 | 958 | 959 | 960 | 961 | 962 | 963 | 964 | 965 | 966 | 967 | 968 | 969 | 970 | 971 | 972 | 973 | 974 | 975 | 976 | 977 | 978 | 979 | 980 | 981 | 982 | 983 | 984 | 985 | 986 | 987 | 988 | 989 | 990 | 991 | 992 | 993 | 994 | 995 | 996 | 997 | 998 | 999 | 1000 | 1001 | 1002 | 1003 | 1004 | 1005 | 1006 | 1007 | 1008 | 1009 | 1010 | 1011 | 1012 | -------------------------------------------------------------------------------- /tests/rdebath/cellsize.ws: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 | 256 | 257 | 258 | 259 | 260 | 261 | 262 | 263 | 264 | 265 | 266 | 267 | 268 | 269 | 270 | 271 | 272 | 273 | 274 | 275 | 276 | 277 | 278 | 279 | 280 | 281 | 282 | 283 | 284 | 285 | 286 | 287 | 288 | 289 | 290 | 291 | 292 | 293 | 294 | 295 | 296 | 297 | 298 | 299 | 300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308 | 309 | 310 | 311 | 312 | 313 | 314 | 315 | 316 | 317 | 318 | 319 | 320 | 321 | 322 | 323 | 324 | 325 | 326 | 327 | 328 | 329 | 330 | 331 | 332 | 333 | 334 | 335 | 336 | 337 | 338 | 339 | 340 | 341 | 342 | 343 | 344 | 345 | 346 | 347 | 348 | 349 | 350 | 351 | 352 | 353 | 354 | 355 | 356 | 357 | 358 | 359 | 360 | 361 | 362 | 363 | 364 | 365 | 366 | 367 | 368 | 369 | 370 | 371 | 372 | 373 | 374 | 375 | 376 | 377 | 378 | 379 | 380 | 381 | 382 | 383 | 384 | 385 | 386 | 387 | 388 | 389 | 390 | 391 | 392 | 393 | 394 | 395 | 396 | 397 | 398 | 399 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 419 | 420 | 421 | 422 | 423 | 424 | 425 | 426 | 427 | 428 | 429 | 430 | 431 | 432 | 433 | 434 | 435 | 436 | 437 | 438 | 439 | 440 | 441 | 442 | 443 | 444 | 445 | 446 | 447 | 448 | 449 | 450 | 451 | 452 | 453 | 454 | 455 | 456 | 457 | 458 | 459 | 460 | 461 | 462 | 463 | 464 | 465 | 466 | 467 | 468 | 469 | 470 | 471 | 472 | 473 | 474 | 475 | 476 | 477 | 478 | 479 | 480 | 481 | 482 | 483 | 484 | 485 | 486 | 487 | 488 | 489 | 490 | 491 | 492 | 493 | 494 | 495 | 496 | 497 | 498 | 499 | 500 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 509 | 510 | 511 | 512 | 513 | 514 | 515 | 516 | 517 | 518 | 519 | 520 | 521 | 522 | 523 | 524 | 525 | 526 | 527 | 528 | 529 | 530 | 531 | 532 | 533 | 534 | 535 | 536 | 537 | 538 | 539 | 540 | 541 | 542 | 543 | 544 | 545 | 546 | 547 | 548 | 549 | 550 | 551 | 552 | 553 | 554 | 555 | 556 | 557 | 558 | 559 | 560 | 561 | 562 | 563 | 564 | 565 | 566 | 567 | 568 | 569 | 570 | 571 | 572 | 573 | 574 | 575 | 576 | 577 | 578 | 579 | 580 | 581 | 582 | 583 | 584 | 585 | 586 | 587 | 588 | 589 | 590 | 591 | 592 | 593 | 594 | 595 | 596 | 597 | 598 | 599 | 600 | 601 | 602 | 603 | 604 | 605 | 606 | 607 | 608 | 609 | 610 | 611 | 612 | 613 | 614 | 615 | 616 | 617 | 618 | 619 | 620 | 621 | 622 | 623 | 624 | 625 | 626 | 627 | 628 | 629 | 630 | 631 | 632 | 633 | 634 | 635 | 636 | 637 | 638 | 639 | 640 | 641 | 642 | 643 | 644 | 645 | 646 | 647 | 648 | 649 | 650 | 651 | 652 | 653 | 654 | 655 | 656 | 657 | 658 | 659 | 660 | 661 | 662 | 663 | 664 | 665 | 666 | 667 | 668 | 669 | 670 | 671 | 672 | 673 | 674 | 675 | 676 | 677 | 678 | 679 | 680 | 681 | 682 | 683 | 684 | 685 | 686 | 687 | 688 | 689 | 690 | 691 | 692 | 693 | 694 | 695 | 696 | 697 | 698 | 699 | 700 | 701 | 702 | 703 | 704 | 705 | 706 | 707 | 708 | 709 | 710 | 711 | 712 | 713 | 714 | 715 | 716 | 717 | 718 | 719 | 720 | 721 | 722 | 723 | 724 | 725 | 726 | 727 | 728 | 729 | 730 | 731 | 732 | 733 | 734 | 735 | 736 | 737 | 738 | 739 | 740 | 741 | 742 | 743 | 744 | 745 | 746 | 747 | 748 | 749 | 750 | 751 | 752 | 753 | 754 | 755 | 756 | 757 | 758 | 759 | 760 | 761 | 762 | 763 | 764 | 765 | 766 | 767 | 768 | 769 | 770 | 771 | 772 | 773 | 774 | 775 | 776 | 777 | 778 | 779 | 780 | 781 | 782 | 783 | 784 | 785 | 786 | 787 | 788 | 789 | 790 | 791 | 792 | 793 | 794 | 795 | 796 | 797 | 798 | 799 | 800 | 801 | 802 | 803 | 804 | 805 | 806 | 807 | 808 | 809 | 810 | 811 | 812 | 813 | 814 | 815 | 816 | 817 | 818 | 819 | 820 | 821 | 822 | 823 | 824 | 825 | 826 | 827 | 828 | 829 | 830 | 831 | 832 | 833 | 834 | 835 | 836 | 837 | 838 | 839 | 840 | 841 | 842 | 843 | 844 | 845 | 846 | 847 | 848 | 849 | 850 | 851 | 852 | 853 | 854 | 855 | 856 | 857 | 858 | 859 | 860 | 861 | 862 | 863 | 864 | 865 | 866 | 867 | 868 | 869 | 870 | 871 | 872 | 873 | 874 | 875 | 876 | 877 | 878 | 879 | 880 | 881 | 882 | 883 | 884 | 885 | 886 | 887 | 888 | 889 | 890 | 891 | 892 | 893 | 894 | 895 | 896 | 897 | 898 | 899 | 900 | 901 | 902 | 903 | 904 | 905 | 906 | 907 | 908 | 909 | 910 | 911 | 912 | 913 | 914 | 915 | 916 | 917 | 918 | 919 | 920 | 921 | 922 | 923 | 924 | 925 | 926 | 927 | 928 | 929 | 930 | 931 | 932 | 933 | 934 | 935 | 936 | 937 | 938 | 939 | 940 | 941 | 942 | 943 | 944 | 945 | 946 | 947 | 948 | 949 | 950 | 951 | 952 | 953 | 954 | 955 | 956 | 957 | 958 | 959 | 960 | 961 | 962 | 963 | 964 | 965 | 966 | 967 | 968 | 969 | 970 | 971 | 972 | 973 | 974 | 975 | 976 | 977 | 978 | 979 | 980 | 981 | 982 | 983 | 984 | 985 | 986 | 987 | 988 | 989 | 990 | 991 | 992 | 993 | 994 | 995 | 996 | 997 | 998 | 999 | 1000 | 1001 | 1002 | 1003 | 1004 | 1005 | 1006 | 1007 | 1008 | 1009 | 1010 | 1011 | 1012 | 1013 | 1014 | 1015 | 1016 | 1017 | 1018 | 1019 | 1020 | 1021 | 1022 | 1023 | 1024 | 1025 | 1026 | 1027 | 1028 | 1029 | 1030 | 1031 | 1032 | 1033 | 1034 | 1035 | 1036 | 1037 | 1038 | 1039 | 1040 | 1041 | 1042 | 1043 | 1044 | 1045 | 1046 | 1047 | 1048 | 1049 | 1050 | 1051 | 1052 | 1053 | 1054 | 1055 | 1056 | 1057 | 1058 | 1059 | 1060 | 1061 | 1062 | 1063 | 1064 | 1065 | 1066 | 1067 | 1068 | 1069 | 1070 | 1071 | 1072 | 1073 | 1074 | 1075 | 1076 | 1077 | 1078 | 1079 | 1080 | 1081 | 1082 | 1083 | 1084 | 1085 | 1086 | 1087 | 1088 | 1089 | 1090 | 1091 | 1092 | 1093 | 1094 | 1095 | 1096 | 1097 | 1098 | 1099 | 1100 | 1101 | 1102 | 1103 | 1104 | 1105 | 1106 | 1107 | 1108 | 1109 | 1110 | 1111 | 1112 | 1113 | 1114 | 1115 | 1116 | 1117 | 1118 | 1119 | 1120 | 1121 | 1122 | 1123 | 1124 | 1125 | 1126 | 1127 | 1128 | 1129 | 1130 | 1131 | 1132 | 1133 | 1134 | 1135 | 1136 | 1137 | 1138 | 1139 | 1140 | 1141 | 1142 | 1143 | 1144 | 1145 | 1146 | 1147 | 1148 | 1149 | 1150 | 1151 | 1152 | 1153 | 1154 | 1155 | 1156 | 1157 | 1158 | 1159 | 1160 | 1161 | 1162 | 1163 | 1164 | 1165 | 1166 | 1167 | 1168 | 1169 | 1170 | 1171 | 1172 | 1173 | 1174 | 1175 | 1176 | 1177 | 1178 | 1179 | 1180 | 1181 | 1182 | 1183 | 1184 | 1185 | 1186 | 1187 | 1188 | 1189 | 1190 | 1191 | 1192 | 1193 | 1194 | 1195 | 1196 | 1197 | 1198 | 1199 | 1200 | 1201 | 1202 | 1203 | 1204 | 1205 | 1206 | 1207 | 1208 | 1209 | 1210 | 1211 | 1212 | 1213 | 1214 | 1215 | 1216 | 1217 | 1218 | 1219 | 1220 | 1221 | 1222 | 1223 | 1224 | 1225 | 1226 | 1227 | 1228 | 1229 | 1230 | 1231 | 1232 | 1233 | 1234 | 1235 | 1236 | 1237 | 1238 | 1239 | 1240 | 1241 | 1242 | 1243 | 1244 | 1245 | 1246 | 1247 | 1248 | 1249 | 1250 | 1251 | 1252 | 1253 | 1254 | 1255 | 1256 | 1257 | 1258 | 1259 | 1260 | 1261 | 1262 | 1263 | 1264 | 1265 | 1266 | 1267 | 1268 | 1269 | 1270 | 1271 | 1272 | 1273 | 1274 | 1275 | 1276 | 1277 | 1278 | 1279 | 1280 | 1281 | 1282 | 1283 | 1284 | 1285 | 1286 | 1287 | 1288 | 1289 | 1290 | 1291 | 1292 | 1293 | 1294 | 1295 | 1296 | 1297 | 1298 | 1299 | 1300 | 1301 | 1302 | 1303 | 1304 | 1305 | 1306 | 1307 | 1308 | 1309 | 1310 | 1311 | 1312 | 1313 | 1314 | 1315 | 1316 | 1317 | 1318 | 1319 | -------------------------------------------------------------------------------- /tests/whitespacers/sudoku.ws: -------------------------------------------------------------------------------- 1 | http://forums.thedailywtf.com/forums/t/11787.aspx 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 | 256 | 257 | 258 | 259 | 260 | 261 | 262 | 263 | 264 | 265 | 266 | 267 | 268 | 269 | 270 | 271 | 272 | 273 | 274 | 275 | 276 | 277 | 278 | 279 | 280 | 281 | 282 | 283 | 284 | 285 | 286 | 287 | 288 | 289 | 290 | 291 | 292 | 293 | 294 | 295 | 296 | 297 | 298 | 299 | 300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308 | 309 | 310 | 311 | 312 | 313 | 314 | 315 | 316 | 317 | 318 | 319 | 320 | 321 | 322 | 323 | 324 | 325 | 326 | 327 | 328 | 329 | 330 | 331 | 332 | 333 | 334 | 335 | 336 | 337 | 338 | 339 | 340 | 341 | 342 | 343 | 344 | 345 | 346 | 347 | 348 | 349 | 350 | 351 | 352 | 353 | 354 | 355 | 356 | 357 | 358 | 359 | 360 | 361 | 362 | 363 | 364 | 365 | 366 | 367 | 368 | 369 | 370 | 371 | 372 | 373 | 374 | 375 | 376 | 377 | 378 | 379 | 380 | 381 | 382 | 383 | 384 | 385 | 386 | 387 | 388 | 389 | 390 | 391 | 392 | 393 | 394 | 395 | 396 | 397 | 398 | 399 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 419 | 420 | 421 | 422 | 423 | 424 | 425 | 426 | 427 | 428 | 429 | 430 | 431 | 432 | 433 | 434 | 435 | 436 | 437 | 438 | 439 | 440 | 441 | 442 | 443 | 444 | 445 | 446 | 447 | 448 | 449 | 450 | 451 | 452 | 453 | 454 | 455 | 456 | 457 | 458 | 459 | 460 | 461 | 462 | 463 | 464 | 465 | 466 | 467 | 468 | 469 | 470 | 471 | 472 | 473 | 474 | 475 | 476 | 477 | 478 | 479 | 480 | 481 | 482 | 483 | 484 | 485 | 486 | 487 | 488 | 489 | 490 | 491 | 492 | 493 | 494 | 495 | 496 | 497 | 498 | 499 | 500 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 509 | 510 | 511 | 512 | 513 | 514 | 515 | 516 | 517 | 518 | 519 | 520 | 521 | 522 | 523 | 524 | 525 | 526 | 527 | 528 | 529 | 530 | 531 | 532 | 533 | 534 | 535 | 536 | 537 | 538 | 539 | 540 | 541 | 542 | 543 | 544 | 545 | 546 | 547 | 548 | 549 | 550 | 551 | 552 | 553 | 554 | 555 | 556 | 557 | 558 | 559 | 560 | 561 | 562 | 563 | 564 | 565 | 566 | 567 | 568 | 569 | 570 | 571 | 572 | 573 | 574 | 575 | 576 | 577 | 578 | 579 | 580 | 581 | 582 | 583 | 584 | 585 | 586 | 587 | 588 | 589 | 590 | 591 | 592 | 593 | 594 | 595 | 596 | 597 | 598 | 599 | 600 | 601 | 602 | 603 | 604 | 605 | 606 | 607 | 608 | 609 | 610 | 611 | 612 | 613 | 614 | 615 | 616 | 617 | 618 | 619 | 620 | 621 | 622 | 623 | 624 | 625 | 626 | 627 | 628 | 629 | 630 | 631 | 632 | 633 | 634 | 635 | 636 | 637 | 638 | 639 | 640 | 641 | 642 | 643 | 644 | 645 | 646 | 647 | 648 | 649 | 650 | 651 | 652 | 653 | 654 | 655 | 656 | 657 | 658 | 659 | 660 | 661 | 662 | 663 | 664 | 665 | 666 | 667 | 668 | 669 | 670 | 671 | 672 | 673 | 674 | 675 | 676 | 677 | 678 | 679 | 680 | 681 | 682 | 683 | 684 | 685 | 686 | 687 | 688 | 689 | 690 | 691 | 692 | 693 | 694 | 695 | 696 | 697 | 698 | 699 | 700 | 701 | 702 | 703 | 704 | 705 | 706 | 707 | 708 | 709 | 710 | 711 | 712 | 713 | 714 | 715 | 716 | 717 | 718 | 719 | 720 | 721 | 722 | 723 | 724 | 725 | 726 | 727 | 728 | 729 | 730 | 731 | 732 | 733 | 734 | 735 | 736 | 737 | 738 | 739 | 740 | 741 | 742 | 743 | 744 | 745 | 746 | 747 | 748 | 749 | 750 | 751 | 752 | 753 | 754 | 755 | 756 | 757 | 758 | 759 | 760 | 761 | 762 | 763 | 764 | 765 | 766 | 767 | 768 | 769 | 770 | 771 | 772 | 773 | 774 | 775 | 776 | 777 | 778 | 779 | 780 | 781 | 782 | 783 | 784 | 785 | 786 | 787 | 788 | 789 | 790 | 791 | 792 | 793 | 794 | 795 | 796 | 797 | 798 | 799 | 800 | 801 | 802 | 803 | 804 | 805 | 806 | 807 | 808 | 809 | 810 | 811 | 812 | 813 | 814 | 815 | 816 | 817 | 818 | 819 | 820 | 821 | 822 | 823 | 824 | 825 | 826 | 827 | 828 | 829 | 830 | 831 | 832 | 833 | 834 | 835 | 836 | 837 | 838 | 839 | 840 | 841 | 842 | 843 | 844 | 845 | 846 | 847 | 848 | 849 | 850 | 851 | 852 | 853 | 854 | 855 | 856 | 857 | 858 | 859 | 860 | 861 | 862 | 863 | 864 | 865 | 866 | 867 | 868 | 869 | 870 | 871 | 872 | 873 | 874 | 875 | 876 | 877 | 878 | 879 | 880 | 881 | 882 | 883 | 884 | 885 | 886 | 887 | 888 | 889 | 890 | 891 | 892 | 893 | 894 | 895 | 896 | 897 | 898 | 899 | 900 | 901 | 902 | 903 | 904 | 905 | 906 | 907 | 908 | 909 | 910 | 911 | 912 | 913 | 914 | 915 | 916 | 917 | 918 | 919 | 920 | 921 | 922 | 923 | 924 | 925 | 926 | 927 | 928 | 929 | 930 | 931 | 932 | 933 | 934 | 935 | 936 | 937 | 938 | 939 | 940 | 941 | 942 | 943 | 944 | 945 | 946 | 947 | 948 | 949 | 950 | 951 | 952 | 953 | 954 | 955 | 956 | 957 | 958 | 959 | 960 | 961 | 962 | 963 | 964 | 965 | 966 | 967 | 968 | 969 | 970 | 971 | 972 | 973 | 974 | 975 | 976 | 977 | 978 | 979 | 980 | 981 | 982 | 983 | 984 | 985 | 986 | 987 | 988 | 989 | 990 | 991 | 992 | 993 | 994 | 995 | 996 | 997 | 998 | 999 | 1000 | 1001 | 1002 | 1003 | 1004 | 1005 | 1006 | 1007 | 1008 | 1009 | 1010 | 1011 | 1012 | 1013 | 1014 | 1015 | 1016 | 1017 | 1018 | 1019 | 1020 | 1021 | 1022 | 1023 | 1024 | 1025 | 1026 | 1027 | 1028 | 1029 | 1030 | 1031 | 1032 | 1033 | 1034 | 1035 | 1036 | 1037 | 1038 | 1039 | 1040 | 1041 | 1042 | 1043 | 1044 | 1045 | 1046 | 1047 | 1048 | 1049 | 1050 | 1051 | 1052 | 1053 | 1054 | 1055 | 1056 | 1057 | 1058 | 1059 | 1060 | 1061 | 1062 | 1063 | 1064 | 1065 | 1066 | 1067 | 1068 | 1069 | 1070 | 1071 | 1072 | 1073 | 1074 | 1075 | 1076 | 1077 | 1078 | 1079 | 1080 | 1081 | 1082 | 1083 | 1084 | 1085 | 1086 | 1087 | 1088 | 1089 | 1090 | 1091 | 1092 | 1093 | 1094 | 1095 | 1096 | 1097 | 1098 | 1099 | 1100 | 1101 | 1102 | 1103 | 1104 | 1105 | 1106 | 1107 | 1108 | 1109 | 1110 | 1111 | 1112 | 1113 | 1114 | 1115 | 1116 | 1117 | 1118 | 1119 | 1120 | 1121 | 1122 | 1123 | 1124 | 1125 | 1126 | 1127 | 1128 | 1129 | 1130 | 1131 | 1132 | 1133 | 1134 | 1135 | 1136 | 1137 | 1138 | 1139 | 1140 | 1141 | 1142 | 1143 | 1144 | 1145 | 1146 | 1147 | 1148 | 1149 | 1150 | 1151 | 1152 | 1153 | 1154 | 1155 | 1156 | 1157 | 1158 | 1159 | 1160 | 1161 | 1162 | 1163 | 1164 | 1165 | 1166 | 1167 | 1168 | 1169 | 1170 | 1171 | 1172 | 1173 | 1174 | 1175 | 1176 | 1177 | 1178 | 1179 | 1180 | 1181 | 1182 | 1183 | 1184 | 1185 | 1186 | 1187 | 1188 | 1189 | 1190 | 1191 | 1192 | 1193 | 1194 | 1195 | 1196 | 1197 | 1198 | 1199 | 1200 | 1201 | 1202 | 1203 | 1204 | 1205 | 1206 | 1207 | 1208 | 1209 | 1210 | 1211 | 1212 | 1213 | 1214 | 1215 | 1216 | 1217 | 1218 | 1219 | 1220 | 1221 | 1222 | 1223 | 1224 | 1225 | 1226 | 1227 | 1228 | 1229 | 1230 | 1231 | 1232 | 1233 | 1234 | 1235 | 1236 | 1237 | 1238 | 1239 | 1240 | 1241 | 1242 | 1243 | 1244 | 1245 | 1246 | 1247 | 1248 | 1249 | 1250 | 1251 | 1252 | 1253 | 1254 | 1255 | 1256 | 1257 | 1258 | 1259 | 1260 | 1261 | 1262 | 1263 | 1264 | 1265 | 1266 | 1267 | 1268 | 1269 | 1270 | 1271 | 1272 | 1273 | 1274 | 1275 | 1276 | 1277 | 1278 | 1279 | 1280 | 1281 | 1282 | 1283 | 1284 | 1285 | 1286 | 1287 | 1288 | 1289 | 1290 | 1291 | 1292 | 1293 | 1294 | 1295 | 1296 | 1297 | 1298 | 1299 | 1300 | 1301 | 1302 | 1303 | 1304 | 1305 | 1306 | 1307 | 1308 | 1309 | 1310 | 1311 | 1312 | 1313 | 1314 | 1315 | 1316 | 1317 | 1318 | 1319 | 1320 | 1321 | 1322 | 1323 | 1324 | 1325 | 1326 | 1327 | 1328 | 1329 | 1330 | 1331 | 1332 | 1333 | 1334 | 1335 | 1336 | 1337 | 1338 | 1339 | 1340 | 1341 | 1342 | 1343 | 1344 | 1345 | 1346 | 1347 | 1348 | 1349 | 1350 | 1351 | 1352 | 1353 | 1354 | 1355 | 1356 | 1357 | 1358 | 1359 | 1360 | 1361 | 1362 | 1363 | 1364 | 1365 | 1366 | 1367 | 1368 | 1369 | 1370 | 1371 | 1372 | 1373 | 1374 | 1375 | 1376 | 1377 | 1378 | 1379 | 1380 | 1381 | 1382 | 1383 | 1384 | 1385 | 1386 | 1387 | 1388 | 1389 | 1390 | 1391 | 1392 | 1393 | 1394 | 1395 | 1396 | 1397 | 1398 | 1399 | 1400 | 1401 | 1402 | 1403 | 1404 | 1405 | 1406 | 1407 | 1408 | 1409 | 1410 | 1411 | 1412 | 1413 | 1414 | 1415 | 1416 | 1417 | 1418 | 1419 | 1420 | 1421 | 1422 | 1423 | 1424 | 1425 | 1426 | 1427 | 1428 | 1429 | 1430 | 1431 | 1432 | 1433 | 1434 | 1435 | 1436 | 1437 | 1438 | 1439 | 1440 | 1441 | 1442 | 1443 | 1444 | 1445 | 1446 | 1447 | 1448 | 1449 | 1450 | 1451 | 1452 | 1453 | 1454 | 1455 | 1456 | 1457 | 1458 | 1459 | 1460 | 1461 | 1462 | 1463 | 1464 | 1465 | 1466 | 1467 | 1468 | 1469 | 1470 | 1471 | 1472 | 1473 | 1474 | 1475 | 1476 | 1477 | 1478 | 1479 | 1480 | 1481 | 1482 | 1483 | 1484 | 1485 | 1486 | 1487 | 1488 | 1489 | 1490 | 1491 | 1492 | 1493 | 1494 | 1495 | 1496 | 1497 | 1498 | 1499 | 1500 | 1501 | 1502 | 1503 | 1504 | 1505 | 1506 | 1507 | 1508 | 1509 | 1510 | 1511 | 1512 | 1513 | -------------------------------------------------------------------------------- /ws2c.c: -------------------------------------------------------------------------------- 1 | 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | 8 | # ifndef NO_INTTYPES 9 | # include 10 | # define cell_t intmax_t 11 | # define INTcell_C(mpm) INTMAX_C(mpm) 12 | # define PRIdcell PRIdMAX 13 | # define SCNdcell SCNdMAX 14 | # else 15 | # define cell_t long 16 | # define INTcell_C(mpm) mpm ## L 17 | # define PRIdcell "ld" 18 | # define SCNdcell "ld" 19 | # define uint32_t unsigned /* I guess */ 20 | # endif 21 | 22 | #define STFU(expression) (expression) /* Make GCC ... */ 23 | 24 | /* FNV Hash Constants from http://isthe.com/chongo/tech/comp/fnv/ */ 25 | #define HASH_FNV_INITIAL 2166136261U 26 | #define HASH_FNV_MIXVAL 16777619U 27 | 28 | /* For 64bit integers ... 29 | #define HASH_FNV_INITIAL 14695981039346656037UL 30 | #define HASH_FNV_MIXVAL 1099511628211UL 31 | */ 32 | 33 | #define HASH_MIX_FNV1A(hash, val) hash = (hash ^ (unsigned char)(val)) * HASH_FNV_MIXVAL 34 | 35 | typedef uint32_t fnv_hash_t; 36 | 37 | /* Tune the bits if you wish. */ 38 | #define HASH_BITS 10 39 | #define HASH_SIZE ((fnv_hash_t)1<1 && argv[1][0] == '-' && enable_opts) { 153 | if (!strcmp(argv[1], "--")) enable_opts = 1; 154 | else if (!done_file && !strcmp(argv[1], "-r")) interpret_now = 1; 155 | else if (!done_file && !strcmp(argv[1], "-c")) interpret_now = 0; 156 | else if (!strcmp(argv[1], "-v")) comment_lines++; 157 | else if (!strcmp(argv[1], "-q")) enable_warnings=0; 158 | 159 | else if (!strcmp(argv[1], "-e")) on_eof = -1; 160 | else if (!strcmp(argv[1], "-z")) on_eof = 0; 161 | else if (!strcmp(argv[1], "-n")) on_eof = 1; 162 | else if (!strcmp(argv[1], "-d")) debug = 1; 163 | else if (!strcmp(argv[1], "-old")) opt_v0_2 = 1; 164 | 165 | else { 166 | fprintf(stderr, "Unknown option %s\n", argv[1]); 167 | } 168 | argv++, argc--; 169 | continue; 170 | } 171 | 172 | if(argc>1) { 173 | if (!(yyin = fopen(argv[1], "r"))) { 174 | perror(argv[1]); 175 | exit(1); 176 | } 177 | done_file = 1; 178 | } 179 | 180 | while (!feof(yyin) && !ferror(yyin)) { 181 | if (!headerflg && !interpret_now) { 182 | printf("%s\n\nws_header();\n\n", header); 183 | headerflg = 1; 184 | }; 185 | process_command(); 186 | } 187 | 188 | if (ferror(yyin)) 189 | fprintf(stderr, "Error reading from file (ferror(3) so no reason given).\n"); 190 | 191 | if(argc>1) { 192 | fclose(yyin); 193 | argv++, argc--; 194 | } 195 | } while(!done_file || argc>1); 196 | 197 | if (headerflg) printf("\nws_trailer\n"); 198 | 199 | if (interpret_now) { 200 | setbuf(stdout, 0); 201 | process_tree(); 202 | 203 | run_tree(); 204 | } 205 | #ifdef HASH_STATS 206 | if (hash_num_searchs) { 207 | printf("Hash stats:\n"); 208 | printf("Number of searchs %ld\n", hash_num_searchs); 209 | printf("Number of search checks %ld\n", hash_num_checks); 210 | printf("Number of failed searchs %ld\n", hash_num_labels); 211 | printf("Average search length %f\n", (double)hash_num_checks/hash_num_searchs); 212 | } 213 | #endif 214 | return 0; 215 | } 216 | 217 | void 218 | process_command() 219 | { 220 | yytext_len = 0; 221 | comment_len = 0; 222 | append_char(); 223 | if (yytext_len == 0) return; 224 | 225 | append_char(); 226 | append_char(); 227 | 228 | if (feof(yyin) && enable_warnings) { 229 | fprintf(stderr, "WARNING: Partial instruction at end of file: '%s'\n", 230 | cv_chr(yytext)); 231 | return; 232 | } 233 | 234 | if (yytext[0] == ' ') { 235 | if (yytext[1] == ' ') { 236 | if (yytext[2] != '\n') { 237 | append_label(); 238 | process_token_i(T_PUSH, cv_number(yytext+2)); 239 | } else 240 | broken_command(); 241 | } 242 | if (yytext[1] == '\n') { 243 | if (yytext[2] == ' ') process_token_v(T_DUP); 244 | if (yytext[2] == '\n') process_token_v(T_DROP); 245 | if (yytext[2] == '\t') process_token_v(T_SWAP); 246 | } 247 | if (yytext[1] == '\t') { 248 | if (opt_v0_2) 249 | broken_command(); 250 | else if (yytext[2] != '\t') { 251 | append_label(); 252 | if (yytext[2] == ' ') process_token_i(T_PICK, cv_number(yytext+3)); 253 | if (yytext[2] == '\n') process_token_i(T_SLIDE, cv_number(yytext+3)); 254 | } else 255 | broken_command(); 256 | } 257 | } 258 | 259 | if (yytext[0] == '\n') { 260 | if (yytext[1] == ' ') { 261 | append_label(); 262 | if (yytext[2] == ' ') process_token_l(T_LABEL, cv_label(yytext+3)); 263 | if (yytext[2] == '\n') process_token_l(T_JUMP, cv_label(yytext+3)); 264 | if (yytext[2] == '\t') process_token_l(T_CALL, cv_label(yytext+3)); 265 | } 266 | if (yytext[1] == '\n') { 267 | if (yytext[2] == '\n') 268 | process_token_v(T_EXIT); 269 | else 270 | broken_command(); 271 | } 272 | if (yytext[1] == '\t') { 273 | if (yytext[2] != '\n') { 274 | append_label(); 275 | if (yytext[2] == ' ') process_token_l(T_JZ, cv_label(yytext+3)); 276 | if (yytext[2] == '\t') process_token_l(T_JN, cv_label(yytext+3)); 277 | } else 278 | process_token_v(T_RETURN); 279 | } 280 | } 281 | 282 | if (yytext[0] == '\t') { 283 | if (yytext[1] == ' ') { 284 | if (yytext[2] == '\n') 285 | broken_command(); 286 | else { 287 | append_char(); 288 | if (yytext[2] == ' ') { 289 | if (yytext[3] == ' ') process_token_v(T_ADD); 290 | if (yytext[3] == '\n') process_token_v(T_MUL); 291 | if (yytext[3] == '\t') process_token_v(T_SUB); 292 | } 293 | if (yytext[2] == '\t') { 294 | if (yytext[3] == ' ') process_token_v(T_DIV); 295 | if (yytext[3] == '\n') broken_command(); 296 | if (yytext[3] == '\t') process_token_v(T_MOD); 297 | } 298 | } 299 | } 300 | if (yytext[1] == '\n') { 301 | if (yytext[2] == '\n') 302 | broken_command(); 303 | else { 304 | append_char(); 305 | if (yytext[2] == ' ') { 306 | if (yytext[3] == ' ') process_token_v(T_OUTC); 307 | if (yytext[3] == '\n') broken_command(); 308 | if (yytext[3] == '\t') process_token_v(T_OUTN); 309 | } 310 | if (yytext[2] == '\t') { 311 | if (yytext[3] == ' ') process_token_v(T_READC); 312 | if (yytext[3] == '\n') broken_command(); 313 | if (yytext[3] == '\t') process_token_v(T_READN); 314 | } 315 | } 316 | } 317 | if (yytext[1] == '\t') { 318 | if (yytext[2] == ' ') process_token_v(T_STORE); 319 | if (yytext[2] == '\n') broken_command(); 320 | if (yytext[2] == '\t') process_token_v(T_FETCH); 321 | } 322 | } 323 | } 324 | 325 | void 326 | append_char() 327 | { 328 | int ch; 329 | for(;;) { 330 | ch = getc(yyin); 331 | if (ch == '\n' || ch == '\t' || ch == ' ' || ch == EOF) break; 332 | 333 | if ((ch > ' ' && ch <= '~') || ch >= 0x80 || ch < 0) { 334 | if (ch == '/' && comment_len != 0 && comment[comment_len-1] == '*') 335 | ch = '\\'; /* Grrr */ 336 | 337 | if (comment_len+4 >= comment_size) { 338 | comment = realloc(comment, comment_size+=1024); 339 | if (comment == 0) { perror("malloc"); exit(99); } 340 | } 341 | 342 | comment[comment_len++] = ch; 343 | comment[comment_len] = 0; 344 | } 345 | } 346 | if (ch == EOF) return; 347 | 348 | if (yytext_len+2 >= yytext_size) { 349 | yytext = realloc(yytext, yytext_size+=1024); 350 | if (yytext == 0) { perror("malloc"); exit(99); } 351 | } 352 | yytext[yytext_len++] = ch; 353 | yytext[yytext_len] = 0; 354 | 355 | if (comment_len > 0 && comment[comment_len-1] != ' ') { 356 | comment[comment_len++] = ' '; 357 | comment[comment_len] = 0; 358 | } 359 | } 360 | 361 | void 362 | append_label() 363 | { 364 | do { 365 | append_char(); 366 | } while(yytext[yytext_len-1] != '\n' && !feof(yyin)); 367 | if (feof(yyin) && enable_warnings) 368 | fprintf(stderr, "WARNING: Partial instruction at end of file: '%s'\n", 369 | cv_chr(yytext)); 370 | } 371 | 372 | cell_t 373 | cv_number(char * ws_num) 374 | { 375 | int negative = 0; 376 | cell_t value = 0; 377 | 378 | if (*ws_num) negative = (*ws_num++ != ' '); 379 | 380 | if (enable_warnings) { 381 | if (strlen(ws_num) > sizeof(cell_t) * 8) 382 | fprintf(stderr, "WARNING: Literal constant too large: '%s'\n", cv_chr(ws_num)); 383 | if (*ws_num == '\n') 384 | fprintf(stderr, "WARNING: Literal constant is empty: '%s'\n", cv_chr(ws_num)); 385 | } 386 | 387 | while(*ws_num != '\n' && *ws_num) { 388 | value *= 2; 389 | if (*ws_num != ' ') 390 | value++; 391 | ws_num++; 392 | } 393 | if (negative) value = -value; 394 | return value; 395 | } 396 | 397 | char * cv_label(char * ws_label) 398 | { 399 | char * s; 400 | int l; 401 | static char * sbuf = 0; 402 | static int maxlen = 0; 403 | 404 | if ((l=strlen(ws_label)) > maxlen) { 405 | if(sbuf) free(sbuf); 406 | sbuf = malloc(l+8); 407 | maxlen = l; 408 | } 409 | 410 | if (*ws_label == '\0' || *ws_label == '\n') 411 | return "0x0"; /* Never return an empty string. */ 412 | 413 | l--; 414 | 415 | if (ws_label[0] == ' ' && l%8 == 0 && l > 8) { 416 | int i = 0, j = 0, n = 0; 417 | for(s=ws_label; *s && *s != '\n'; s++) { 418 | i *= 2; 419 | if (*s != ' ') 420 | i ++; 421 | if (++j == 8) { 422 | if (i>=48 && i<=57 && n != 0) { 423 | sbuf[n++] = i; 424 | } else if ( (i>=65 && i<=90) || (i>=97 && i<=122) || i==95) { 425 | sbuf[n++] = i; 426 | } else { 427 | n = 0; 428 | break; 429 | } 430 | i = j = 0; 431 | } 432 | } 433 | if (n && *s && !s[1]) { 434 | sbuf[n] = 0; 435 | return sbuf; 436 | } 437 | } 438 | 439 | if (ws_label[0] != ' ' && l < 31) { 440 | int i = 0; 441 | for(s=ws_label; *s && *s != '\n'; s++) { 442 | i *=2; 443 | if (*s != ' ') 444 | i ++; 445 | } 446 | if (*s && !s[1]) { 447 | sprintf(sbuf, "%d", i); 448 | return sbuf; 449 | } 450 | } 451 | 452 | for (l=0; ws_label[l]; l++) switch(ws_label[l]) 453 | { 454 | case ' ': sbuf[l] = '0'; break; 455 | case '\t': sbuf[l] = '1'; break; 456 | case '\n': sbuf[l] = '\0'; break; 457 | default: sbuf[l] = 'X'; break; 458 | } 459 | sbuf[l] = 0; 460 | return sbuf; 461 | } 462 | 463 | char * cv_chr(char * ws_code) 464 | { 465 | int i; 466 | static char * sbuf = 0; 467 | static int maxlen = 0; 468 | 469 | if ((i=strlen(ws_code)) > maxlen) { 470 | if(sbuf) free(sbuf); 471 | sbuf = malloc(i+2); 472 | maxlen = i; 473 | } 474 | 475 | for (i=0; ws_code[i]; i++) switch(ws_code[i]) 476 | { 477 | case ' ': sbuf[i] = 's'; break; 478 | case '\t': sbuf[i] = 't'; break; 479 | case '\n': sbuf[i] = 'l'; break; 480 | default: sbuf[i] = '*'; break; 481 | case '0': case '1': sbuf[i] = ws_code[i]; break; 482 | } 483 | sbuf[i] = 0; 484 | return sbuf; 485 | } 486 | 487 | void 488 | init_cmdnames() 489 | { 490 | /* No easy way to do this with the preprocessor */ 491 | int i, j; 492 | for(i=0; i 0) { 508 | comment_lines--; 509 | printf("> %s\n", comment); 510 | } 511 | } 512 | comment_len = 0; 513 | 514 | if (!interpret_now) 515 | printf("\t\t/* %d: %s */\n", inum, cv_chr(yytext)); 516 | 517 | #ifdef WS_TRACE 518 | if (!interpret_now) { 519 | if (token != T_LABEL) printf("ws_trace(%d);\n", inum); 520 | } 521 | #endif 522 | } 523 | 524 | void 525 | broken_command() 526 | { 527 | char *s = cv_chr(yytext); 528 | display_comment(); 529 | if (enable_warnings) 530 | fprintf(stderr, "WARNING: Skipped unknown sequence: '%s'\n", s); 531 | if (!interpret_now) { 532 | printf("if (ws_%s) ws_%s();\n", s, s); 533 | } 534 | } 535 | 536 | void 537 | process_token_v(int token) 538 | { 539 | inum ++; 540 | display_comment(); 541 | if (!interpret_now) { 542 | printf("ws_%s();\n", cmdnames[token]); 543 | } else { 544 | struct pnode * n = add_node_after(wsprogend); 545 | n->type = token; 546 | n->inum = inum; 547 | } 548 | } 549 | 550 | void 551 | process_token_i(int token, cell_t value) 552 | { 553 | inum ++; 554 | display_comment(); 555 | if (!interpret_now) { 556 | printf("ws_%s(%"PRIdcell");\n", cmdnames[token], value); 557 | } else { 558 | struct pnode * n = add_node_after(wsprogend); 559 | n->type = token; 560 | n->value = value; 561 | n->inum = inum; 562 | } 563 | } 564 | 565 | void 566 | process_token_l(int token, char * label) 567 | { 568 | inum ++; 569 | display_comment(); 570 | if (!interpret_now) { 571 | printf("ws_%s(%s);\n", cmdnames[token], label); 572 | } else { 573 | struct pnode * n = add_node_after(wsprogend); 574 | n->type = token; 575 | n->plabel = find_label(label); 576 | n->inum = inum; 577 | if (token == T_LABEL) { 578 | if (n->plabel->location) { 579 | if (enable_warnings) 580 | fprintf(stderr, "WARNING: Label '%s' redefined, using first instance\n", label); 581 | } else 582 | n->plabel->location = n; 583 | } else 584 | n->jmp = n->plabel->location; 585 | 586 | n->next_reflist = n->plabel->reflist; 587 | n->plabel->reflist = n; 588 | } 589 | } 590 | 591 | void * 592 | tcalloc(size_t nmemb, size_t size) 593 | { 594 | void * m; 595 | m = calloc(nmemb, size); 596 | if (m) return m; 597 | 598 | #if !defined(LEGACYOS) && !defined(_WIN32) && __STDC_VERSION__ >= 199901L 599 | fprintf(stderr, "Allocate of %zu*%zu bytes failed, ABORT\n", nmemb, size); 600 | #else 601 | fprintf(stderr, "Allocate of %lu*%lu bytes failed, ABORT\n", 602 | (unsigned long)nmemb, (unsigned long)size); 603 | #endif 604 | exit(42); 605 | } 606 | 607 | struct pnode * 608 | add_node_after(struct pnode * p) 609 | { 610 | struct pnode * n = tcalloc(1, sizeof*n); 611 | n->type = T_NOP; 612 | if (p) { 613 | n->prev = p; 614 | n->next = p->next; 615 | if (n->next) n->next->prev = n; 616 | n->prev->next = n; 617 | } else if (wsprog) { 618 | n->next = wsprog; 619 | if (n->next) n->next->prev = n; 620 | } else wsprog = n; 621 | 622 | if (p == wsprogend) wsprogend = n; 623 | return n; 624 | } 625 | 626 | static fnv_hash_t 627 | hash_string(const char *val) 628 | { 629 | fnv_hash_t hash = HASH_FNV_INITIAL; 630 | unsigned char c; 631 | 632 | while ((c = (unsigned char)*val++)) 633 | HASH_MIX_FNV1A(hash, c); 634 | 635 | /* Humm, I don't see the point of these two variations, they give 636 | * identical results given the preconditions. */ 637 | #if HASH_BITS < 16 638 | hash = (((hash>>HASH_BITS) ^ hash) & HASH_MASK); 639 | #else 640 | hash = (hash>>HASH_BITS) ^ (hash & HASH_MASK); 641 | #endif 642 | return hash; 643 | } 644 | 645 | struct labelnode * 646 | find_label(char *label) 647 | { 648 | fnv_hash_t hash = hash_string(label); 649 | struct labelnode *n, *p; 650 | 651 | #ifdef HASH_STATS 652 | hash_num_searchs++; 653 | #endif 654 | for(p = 0, n = labeltab[hash]; n; p = n, n = n->hashnext) { 655 | #ifdef HASH_STATS 656 | hash_num_checks++; 657 | #endif 658 | if (n->hash == hash && strcmp(n->name, label) == 0) 659 | return n; 660 | } 661 | 662 | #ifdef HASH_STATS 663 | hash_num_labels++; 664 | #endif 665 | n = tcalloc(1, sizeof *n + strlen(label) + 1); 666 | strcpy(n->name, label); 667 | n->hash = hash; 668 | if (p) 669 | p->hashnext = n; 670 | else 671 | labeltab[hash] = n; 672 | 673 | if (all_labels) n->allnext = all_labels; 674 | all_labels = n; 675 | 676 | return n; 677 | } 678 | 679 | void 680 | process_tree() 681 | { 682 | struct pnode *n; 683 | struct labelnode * l; 684 | 685 | /* Falling off the end is a *really* bad idea */ 686 | if (!wsprogend || wsprogend->type != T_EXIT) { 687 | n = add_node_after(wsprogend); 688 | n->type = T_EXIT; 689 | n->inum = ++inum; 690 | } 691 | 692 | /* Point all the labels at the instruction after the label command */ 693 | for(l = all_labels; l; l=l->allnext) 694 | { 695 | if (l->location == 0) { 696 | if (enable_warnings) 697 | fprintf(stderr, "WARNING: Label '%s' not defined, mapping to exit()\n", l->name); 698 | l->location = wsprogend; 699 | } 700 | while (l->location->type == T_LABEL) 701 | l->location = l->location->next; 702 | 703 | for(n = l->reflist; n; n=n->next_reflist) { 704 | n->jmp = l->location; 705 | } 706 | } 707 | 708 | /* Snip out all the label commands and clear the label pointers. */ 709 | for(n = wsprog; n; n=n->next) { 710 | if (n->type == T_LABEL) { 711 | struct pnode *p = n->prev; 712 | if (p) p->next = n->next; else wsprog = n->next; 713 | if (n->next) n->next->prev = n->prev; else wsprogend = n->prev; 714 | free(n); 715 | n = p; 716 | if (!n) n = wsprog; 717 | } 718 | n->plabel = 0; 719 | } 720 | 721 | /* Set the label pointers for instructions that are pointed at by labels. */ 722 | for(l = all_labels; l; l=l->allnext) 723 | { 724 | l->location->plabel = l; 725 | } 726 | } 727 | 728 | void 729 | dump_tree() 730 | { 731 | struct pnode *n, *p; 732 | 733 | for(n = wsprog; n; n=n->next) { 734 | if (n->plabel) 735 | printf("ws_label(%s);\n", n->plabel->name); 736 | 737 | printf("ws_%s", cmdnames[n->type]); 738 | if (n->type == T_PUSH || n->type == T_PICK || n->type == T_SLIDE) 739 | printf("(%"PRIdcell");", n->value); 740 | else if (n->jmp) 741 | printf("(%s);", n->jmp->plabel->name); 742 | else 743 | printf("();"); 744 | 745 | printf("\t/*%4d", n->inum); 746 | 747 | if (n->jmp) 748 | printf(" --> %d", n->jmp->inum); 749 | 750 | if (n->plabel) { 751 | int c = ' '; 752 | printf(" <--"); 753 | for(p = n->plabel->reflist; p; p=p->next_reflist) { 754 | if (p->type != T_LABEL) { 755 | printf("%c%d", c, p->inum); 756 | c = ','; 757 | } 758 | } 759 | if (c == ' ') printf(" UNUSED"); 760 | } 761 | 762 | printf(" */"); 763 | printf("\n"); 764 | } 765 | } 766 | 767 | void 768 | run_tree() 769 | { 770 | struct pnode * n; 771 | 772 | for(n = wsprog; n; ) { 773 | #ifdef WS_TRACE 774 | ws_trace(n->inum); 775 | #endif 776 | switch(n->type) { 777 | case T_PUSH: 778 | ws_push(n->value); 779 | break; 780 | 781 | case T_DUP: 782 | ws_dup(); 783 | break; 784 | 785 | case T_DROP: 786 | ws_drop(); 787 | break; 788 | 789 | case T_SWAP: 790 | ws_swap(); 791 | break; 792 | 793 | case T_PICK: 794 | ws_pick(n->value); 795 | break; 796 | 797 | case T_SLIDE: 798 | ws_slide(n->value); 799 | break; 800 | 801 | case T_JUMP: 802 | n = n->jmp; 803 | continue; 804 | 805 | case T_CALL: 806 | rpush(n); 807 | n = n->jmp; 808 | continue; 809 | 810 | case T_EXIT: 811 | return; 812 | 813 | case T_JZ: 814 | if(ws_pop() == 0) { 815 | n = n->jmp; 816 | continue; 817 | } 818 | break; 819 | 820 | case T_JN: 821 | if(ws_pop() < 0) { 822 | n = n->jmp; 823 | continue; 824 | } 825 | break; 826 | 827 | case T_RETURN: 828 | n = rpop(); 829 | break; 830 | 831 | case T_ADD: 832 | ws_add(); 833 | break; 834 | 835 | case T_MUL: 836 | ws_mul(); 837 | break; 838 | 839 | case T_SUB: 840 | ws_sub(); 841 | break; 842 | 843 | case T_DIV: 844 | ws_div(); 845 | break; 846 | 847 | case T_MOD: 848 | ws_mod(); 849 | break; 850 | 851 | case T_OUTC: 852 | ws_outc(); 853 | break; 854 | 855 | case T_OUTN: 856 | ws_outn(); 857 | break; 858 | 859 | case T_READC: 860 | ws_readc(); 861 | break; 862 | 863 | case T_READN: 864 | ws_readn(); 865 | break; 866 | 867 | case T_STORE: 868 | ws_store(); 869 | break; 870 | 871 | case T_FETCH: 872 | ws_fetch(); 873 | break; 874 | 875 | default: 876 | fprintf(stderr, "%s unimplemented\n", tokennames[n->type]); exit(1); 877 | break; 878 | } 879 | 880 | n=n->next; 881 | } 882 | } 883 | -------------------------------------------------------------------------------- /tests/Vii5ard/quine.ws: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 | 256 | 257 | 258 | 259 | 260 | 261 | 262 | 263 | 264 | 265 | 266 | 267 | 268 | 269 | 270 | 271 | 272 | 273 | 274 | 275 | 276 | 277 | 278 | 279 | 280 | 281 | 282 | 283 | 284 | 285 | 286 | 287 | 288 | 289 | 290 | 291 | 292 | 293 | 294 | 295 | 296 | 297 | 298 | 299 | 300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308 | 309 | 310 | 311 | 312 | 313 | 314 | 315 | 316 | 317 | 318 | 319 | 320 | 321 | 322 | 323 | 324 | 325 | 326 | 327 | 328 | 329 | 330 | 331 | 332 | 333 | 334 | 335 | 336 | 337 | 338 | 339 | 340 | 341 | 342 | 343 | 344 | 345 | 346 | 347 | 348 | 349 | 350 | 351 | 352 | 353 | 354 | 355 | 356 | 357 | 358 | 359 | 360 | 361 | 362 | 363 | 364 | 365 | 366 | 367 | 368 | 369 | 370 | 371 | 372 | 373 | 374 | 375 | 376 | 377 | 378 | 379 | 380 | 381 | 382 | 383 | 384 | 385 | 386 | 387 | 388 | 389 | 390 | 391 | 392 | 393 | 394 | 395 | 396 | 397 | 398 | 399 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 419 | 420 | 421 | 422 | 423 | 424 | 425 | 426 | 427 | 428 | 429 | 430 | 431 | 432 | 433 | 434 | 435 | 436 | 437 | 438 | 439 | 440 | 441 | 442 | 443 | 444 | 445 | 446 | 447 | 448 | 449 | 450 | 451 | 452 | 453 | 454 | 455 | 456 | 457 | 458 | 459 | 460 | 461 | 462 | 463 | 464 | 465 | 466 | 467 | 468 | 469 | 470 | 471 | 472 | 473 | 474 | 475 | 476 | 477 | 478 | 479 | 480 | 481 | 482 | 483 | 484 | 485 | 486 | 487 | 488 | 489 | 490 | 491 | 492 | 493 | 494 | 495 | 496 | 497 | 498 | 499 | 500 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 509 | 510 | 511 | 512 | 513 | 514 | 515 | 516 | 517 | 518 | 519 | 520 | 521 | 522 | 523 | 524 | 525 | 526 | 527 | 528 | 529 | 530 | 531 | 532 | 533 | 534 | 535 | 536 | 537 | 538 | 539 | 540 | 541 | 542 | 543 | 544 | 545 | 546 | 547 | 548 | 549 | 550 | 551 | 552 | 553 | 554 | 555 | 556 | 557 | 558 | 559 | 560 | 561 | 562 | 563 | 564 | 565 | 566 | 567 | 568 | 569 | 570 | 571 | 572 | 573 | 574 | 575 | 576 | 577 | 578 | 579 | 580 | 581 | 582 | 583 | 584 | 585 | 586 | 587 | 588 | 589 | 590 | 591 | 592 | 593 | 594 | 595 | 596 | 597 | 598 | 599 | 600 | 601 | 602 | 603 | 604 | 605 | 606 | 607 | 608 | 609 | 610 | 611 | 612 | 613 | 614 | 615 | 616 | 617 | 618 | 619 | 620 | 621 | 622 | 623 | 624 | 625 | 626 | 627 | 628 | 629 | 630 | 631 | 632 | 633 | 634 | 635 | 636 | 637 | 638 | 639 | 640 | 641 | 642 | 643 | 644 | 645 | 646 | 647 | 648 | 649 | 650 | 651 | 652 | 653 | 654 | 655 | 656 | 657 | 658 | 659 | 660 | 661 | 662 | 663 | 664 | 665 | 666 | 667 | 668 | 669 | 670 | 671 | 672 | 673 | 674 | 675 | 676 | 677 | 678 | 679 | 680 | 681 | 682 | 683 | 684 | 685 | 686 | 687 | 688 | 689 | 690 | 691 | 692 | 693 | 694 | 695 | 696 | 697 | 698 | 699 | 700 | 701 | 702 | 703 | 704 | 705 | 706 | 707 | 708 | 709 | 710 | 711 | 712 | 713 | 714 | 715 | 716 | 717 | 718 | 719 | 720 | 721 | 722 | 723 | 724 | 725 | 726 | 727 | 728 | 729 | 730 | 731 | 732 | 733 | 734 | 735 | 736 | 737 | 738 | 739 | 740 | 741 | 742 | 743 | 744 | 745 | 746 | 747 | 748 | 749 | 750 | 751 | 752 | 753 | 754 | 755 | 756 | 757 | 758 | 759 | 760 | 761 | 762 | 763 | 764 | 765 | 766 | 767 | 768 | 769 | 770 | 771 | 772 | 773 | 774 | 775 | 776 | 777 | 778 | 779 | 780 | 781 | 782 | 783 | 784 | 785 | 786 | 787 | 788 | 789 | 790 | 791 | 792 | 793 | 794 | 795 | 796 | 797 | 798 | 799 | 800 | 801 | 802 | 803 | 804 | 805 | 806 | 807 | 808 | 809 | 810 | 811 | 812 | 813 | 814 | 815 | 816 | 817 | 818 | 819 | 820 | 821 | 822 | 823 | 824 | 825 | 826 | 827 | 828 | 829 | 830 | 831 | 832 | 833 | 834 | 835 | 836 | 837 | 838 | 839 | 840 | 841 | 842 | 843 | 844 | 845 | 846 | 847 | 848 | 849 | 850 | 851 | 852 | 853 | 854 | 855 | 856 | 857 | 858 | 859 | 860 | 861 | 862 | 863 | 864 | 865 | 866 | 867 | 868 | 869 | 870 | 871 | 872 | 873 | 874 | 875 | 876 | 877 | 878 | 879 | 880 | 881 | 882 | 883 | 884 | 885 | 886 | 887 | 888 | 889 | 890 | 891 | 892 | 893 | 894 | 895 | 896 | 897 | 898 | 899 | 900 | 901 | 902 | 903 | 904 | 905 | 906 | 907 | 908 | 909 | 910 | 911 | 912 | 913 | 914 | 915 | 916 | 917 | 918 | 919 | 920 | 921 | 922 | 923 | 924 | 925 | 926 | 927 | 928 | 929 | 930 | 931 | 932 | 933 | 934 | 935 | 936 | 937 | 938 | 939 | 940 | 941 | 942 | 943 | 944 | 945 | 946 | 947 | 948 | 949 | 950 | 951 | 952 | 953 | 954 | 955 | 956 | 957 | 958 | 959 | 960 | 961 | 962 | 963 | 964 | 965 | 966 | 967 | 968 | 969 | 970 | 971 | 972 | 973 | 974 | 975 | 976 | 977 | 978 | 979 | 980 | 981 | 982 | 983 | 984 | 985 | 986 | 987 | 988 | 989 | 990 | 991 | 992 | 993 | 994 | 995 | 996 | 997 | 998 | 999 | 1000 | 1001 | 1002 | 1003 | 1004 | 1005 | 1006 | 1007 | 1008 | 1009 | 1010 | 1011 | 1012 | 1013 | 1014 | 1015 | 1016 | 1017 | 1018 | 1019 | 1020 | 1021 | 1022 | 1023 | 1024 | 1025 | 1026 | 1027 | 1028 | 1029 | 1030 | 1031 | 1032 | 1033 | 1034 | 1035 | 1036 | 1037 | 1038 | 1039 | 1040 | 1041 | 1042 | 1043 | 1044 | 1045 | 1046 | 1047 | 1048 | 1049 | 1050 | 1051 | 1052 | 1053 | 1054 | 1055 | 1056 | 1057 | 1058 | 1059 | 1060 | 1061 | 1062 | 1063 | 1064 | 1065 | 1066 | 1067 | 1068 | 1069 | 1070 | 1071 | 1072 | 1073 | 1074 | 1075 | 1076 | 1077 | 1078 | 1079 | 1080 | 1081 | 1082 | 1083 | 1084 | 1085 | 1086 | 1087 | 1088 | 1089 | 1090 | 1091 | 1092 | 1093 | 1094 | 1095 | 1096 | 1097 | 1098 | 1099 | 1100 | 1101 | 1102 | 1103 | 1104 | 1105 | 1106 | 1107 | 1108 | 1109 | 1110 | 1111 | 1112 | 1113 | 1114 | 1115 | 1116 | 1117 | 1118 | 1119 | 1120 | 1121 | 1122 | 1123 | 1124 | 1125 | 1126 | 1127 | 1128 | 1129 | 1130 | 1131 | 1132 | 1133 | 1134 | 1135 | 1136 | 1137 | 1138 | 1139 | 1140 | 1141 | 1142 | 1143 | 1144 | 1145 | 1146 | 1147 | 1148 | 1149 | 1150 | 1151 | 1152 | 1153 | 1154 | 1155 | 1156 | 1157 | 1158 | 1159 | 1160 | 1161 | 1162 | 1163 | 1164 | 1165 | 1166 | 1167 | 1168 | 1169 | 1170 | 1171 | 1172 | 1173 | 1174 | 1175 | 1176 | 1177 | 1178 | 1179 | 1180 | 1181 | 1182 | 1183 | 1184 | 1185 | 1186 | 1187 | 1188 | 1189 | 1190 | 1191 | 1192 | 1193 | 1194 | 1195 | 1196 | 1197 | 1198 | 1199 | 1200 | 1201 | 1202 | 1203 | 1204 | 1205 | 1206 | 1207 | 1208 | 1209 | 1210 | 1211 | 1212 | 1213 | 1214 | 1215 | 1216 | 1217 | 1218 | 1219 | 1220 | 1221 | 1222 | 1223 | 1224 | 1225 | 1226 | 1227 | 1228 | 1229 | 1230 | 1231 | 1232 | 1233 | 1234 | 1235 | 1236 | 1237 | 1238 | 1239 | 1240 | 1241 | 1242 | 1243 | 1244 | 1245 | 1246 | 1247 | 1248 | 1249 | 1250 | 1251 | 1252 | 1253 | 1254 | 1255 | 1256 | 1257 | 1258 | 1259 | 1260 | 1261 | 1262 | 1263 | 1264 | 1265 | 1266 | 1267 | 1268 | 1269 | 1270 | 1271 | 1272 | 1273 | 1274 | 1275 | 1276 | 1277 | 1278 | 1279 | 1280 | 1281 | 1282 | 1283 | 1284 | 1285 | 1286 | 1287 | 1288 | 1289 | 1290 | 1291 | 1292 | 1293 | 1294 | 1295 | 1296 | 1297 | 1298 | 1299 | 1300 | 1301 | 1302 | 1303 | 1304 | 1305 | 1306 | 1307 | 1308 | 1309 | 1310 | 1311 | 1312 | 1313 | 1314 | 1315 | 1316 | 1317 | 1318 | 1319 | 1320 | 1321 | 1322 | 1323 | 1324 | 1325 | 1326 | 1327 | 1328 | 1329 | 1330 | 1331 | 1332 | 1333 | 1334 | 1335 | 1336 | 1337 | 1338 | 1339 | 1340 | 1341 | 1342 | 1343 | 1344 | 1345 | 1346 | 1347 | 1348 | 1349 | 1350 | 1351 | 1352 | 1353 | 1354 | 1355 | 1356 | 1357 | 1358 | 1359 | 1360 | 1361 | 1362 | 1363 | 1364 | 1365 | 1366 | 1367 | 1368 | 1369 | 1370 | 1371 | 1372 | 1373 | 1374 | 1375 | 1376 | 1377 | 1378 | 1379 | 1380 | 1381 | 1382 | 1383 | 1384 | 1385 | 1386 | 1387 | 1388 | 1389 | 1390 | 1391 | 1392 | 1393 | 1394 | 1395 | 1396 | 1397 | 1398 | 1399 | 1400 | 1401 | 1402 | 1403 | 1404 | 1405 | 1406 | 1407 | 1408 | 1409 | 1410 | 1411 | 1412 | 1413 | 1414 | 1415 | 1416 | 1417 | 1418 | 1419 | 1420 | 1421 | 1422 | 1423 | 1424 | 1425 | 1426 | 1427 | 1428 | 1429 | 1430 | 1431 | 1432 | 1433 | 1434 | 1435 | 1436 | 1437 | 1438 | 1439 | 1440 | 1441 | 1442 | 1443 | 1444 | 1445 | 1446 | 1447 | 1448 | 1449 | 1450 | 1451 | 1452 | 1453 | 1454 | 1455 | 1456 | 1457 | 1458 | 1459 | 1460 | 1461 | 1462 | 1463 | 1464 | 1465 | 1466 | 1467 | 1468 | 1469 | 1470 | 1471 | 1472 | 1473 | 1474 | 1475 | 1476 | 1477 | 1478 | 1479 | 1480 | 1481 | 1482 | 1483 | 1484 | 1485 | 1486 | 1487 | 1488 | 1489 | 1490 | 1491 | 1492 | 1493 | 1494 | 1495 | 1496 | 1497 | 1498 | 1499 | 1500 | 1501 | 1502 | 1503 | 1504 | 1505 | 1506 | 1507 | 1508 | 1509 | 1510 | 1511 | 1512 | 1513 | 1514 | 1515 | 1516 | 1517 | 1518 | 1519 | 1520 | 1521 | 1522 | 1523 | 1524 | 1525 | 1526 | 1527 | 1528 | 1529 | 1530 | 1531 | 1532 | 1533 | 1534 | 1535 | 1536 | 1537 | 1538 | 1539 | 1540 | 1541 | 1542 | 1543 | 1544 | 1545 | 1546 | 1547 | 1548 | 1549 | 1550 | 1551 | 1552 | 1553 | 1554 | 1555 | 1556 | 1557 | 1558 | 1559 | 1560 | 1561 | 1562 | 1563 | 1564 | 1565 | 1566 | 1567 | 1568 | 1569 | 1570 | 1571 | 1572 | 1573 | 1574 | 1575 | 1576 | 1577 | 1578 | 1579 | 1580 | 1581 | 1582 | 1583 | 1584 | 1585 | 1586 | 1587 | 1588 | 1589 | 1590 | 1591 | 1592 | 1593 | 1594 | 1595 | 1596 | 1597 | 1598 | 1599 | 1600 | -------------------------------------------------------------------------------- /tests/Tetris/tetris.ws: -------------------------------------------------------------------------------- 1 | Hij gaf zich westwaarts; zeilende, 2 | de weide kunt Het, was 3 | niet moeilijk, kind zocht hij 4 | ge hebt veel nutter werk dat Jantje kroop 5 | dicht bij u te maken: wat wij intusschen 6 | herfst in de automobiel die 7 | door zich de blijft vervullen, of 8 | de valkenblik van Dodoneus, of juister gezegd heb 9 | ik er met een God beter gemakkelijker daarnaar 10 | het te houden, dat de zieke, thee en, 11 | alles, zij maakte Vitalis, en Het we zouden 12 | zij de bedeesde duiven of hij mij 13 | te teruggebracht dan ouder Jantje met 14 | eenige Inleiding tot nog de 15 | Utahs naar huis weggevaren en 16 | kunnen zij haar schouders op ons 17 | te verbleeken: en struikgewas opgeslopen naar Boeddha. Dat 18 | zij was bedekt is hij antwoordde. Dus niet 19 | gaf het stond, Jo (En ging en 20 | instrumenten). O, op een uitstekend 21 | schijnen, toen de Scheikundigen zelf 22 | ik Vitalis mij vertelt zoolang gij 23 | is nu verzoek door het bewaken verlangend om 24 | te laten wij over oordeelen, zich Cupido, haar 25 | zou zijn samengevoegd met mij dunkt, mij 26 | van een hevig bestookte en 27 | niet mede hier in de 28 | egyptische bouwmeesters maakten, het schip konden 29 | w'ons hart goed en wachtten de Arterien en 30 | wat! Welke gevallen, vergelijken bij. Hoe hernam Harris, 31 | zou den gek aangesteld, en tot zich 32 | bezinnen terug te doen moet 33 | willen berooven! Zoodra zij waren, 34 | en bekeken, of de voorige en bij den 35 | verrekijker iets aanraakte hetgeen ons tevreden: stel ik 36 | op het! Dringt verwoed op aan Het water eene 37 | staak met verschillende wetenschappen bij de weduwe 38 | kwam mij verstaan. Redditus sibi 39 | sectamque condunt. Nu zal kunnen klimmen 40 | op en het aantal van den je bent 41 | een het eiland hoogste gewicht werd niet toe 42 | verdeelde, werd vernam zou met liefde waardig hun vaartuig 43 | vertaling van verzinselen, niet van Het, 44 | binnen. Amy betreurde zoo; geducht 45 | worden. Hoelang ik die Het vermogen tot uiting 46 | moeten zijn applaudisseeren: en Meta, trouwen, mits zij den 47 | burgemeester in bekend. Dat moet het wad hier hebt onze 48 | toevlucht niet zonder dat zonderlinge 49 | lotgevallen derde toast van zijn vrouw 50 | blijkt, Het fort. De ontaarde 51 | en hem dit geschiedde natuurlijk: blijder over de 52 | kust met een der individueele rechten, voor onze aankomst 53 | Van een glans nooit: mijnheer kom, zelf naar Het 54 | niet meer. Hoor (spreken). De vlammen en aarde: 55 | bevindt, overal op Het verscheurde, gewaad, 56 | een heerlijke tuin, tuurde verdwenen, 57 | heen en heel alleen. De benden, die menschelijke 58 | uitdrukking van de dansers en die verandering gewennen: 59 | maar Marko, dadelijk mijn wil: je aanraden, als 60 | moest stond ik, heb ik daaraan, beantwoordende aan 61 | de ongelijke omstandigheden. Men met mijne 62 | verdediging van den individuen het 63 | binnenwerk en. Door zich voor 64 | binnen dan ook in Het om het maakte. 65 | De mooiste toon: als de hoog en duizend mijlen 66 | niet: meneer. In dat ik zag 67 | met zijn vrienden antwoordde Mevr. Kristine; niemand 68 | moet ongetwijfeld, de vryheid, tafel 69 | wat is ingestort, en op 70 | den naam voor het lekken van vloeistoffen op 71 | de eene verschillende graden kou gevat had om troost 72 | en te verschuldigd dat nergens huizes was er 73 | te waken; wanneer wij aan (eenig hulpmiddel 74 | hij er zijn kuiten aan bij). 75 | Antwoordde zijn gloeiende kolen. Zij, door mijne familie 76 | zijn zij zouden bevinden: we r middernacht ter 77 | hoogte, van tweehonderd en Englenfierheid zogen zoo redding: 78 | van. Ten einde. Ja, ik jullie mijn horloge 79 | thuis, zou men genoeglijk een sissend geluid 80 | te eten hetgeen thans voorbij, 81 | en Jo breide een grootsche onderstellingen. Het zuideinde 82 | van een verdort en trouw aan het dunnere kleurlooze 83 | bloed, van de classificatie van met de besten roep 84 | van de hen, achterna: te Patras, 85 | En de Utahs, weken, gebroeid, hernam haar 86 | van den vrederechter, betreft mijn 87 | paard van de boodschappen deden, dunne waterstraaltjes doorsneden 88 | door hen een seconde toen Het hooren wanneer 89 | klokjes in eo vel ik bedankte altijd, eenzaam in 90 | gyrum agatur, vel invitus sane, die men nu 91 | morgen nam Jantje altoos gedaan, hebt haar 92 | overwelven. Jawel laat u die, 93 | verkeerd aanleggen maar. U, dus voorgoed onschadelijk maken? 94 | Ik ging toen Mijn was en indien ik 95 | vergat hij zich dezelfde woorden bevestigen die ook 96 | niet aan om klaar (waren even goed als jij 97 | daar wel alleen in Het zuiden loopende 98 | en met die schurken roovers 99 | recht). Dat hy schaart zijn tafel uitgespreid terwijl 100 | wij afwerpen, dan moet dit verduivelde geval meneer 101 | Davis dadels mee naar het, was gemaakt had, vroeg 102 | de jeugd tweeden noch kraai! Naar kwijt. 103 | Vita ita dicam artis Medic redevoering van 104 | Mattia wat er overheen, En 105 | hier vandaan? Ja, dat hen dragen, kan voor 106 | wat moede juist uit het Moorsche hoofdman der 107 | Reuzen tot zyne Vrouw Barberin sliep was toen hij 108 | schudde zijn uit, angst dat zoo dat: 109 | ge wilt: ge ziet, en, smeekend, aan 110 | te dragen konden zijn wonderbaarlijke 111 | werkingen, worden. Alving. Uit Kinsley aangesteld. Een ongerust 112 | over openbaar, gemaakt en in De prins John 113 | zich niet zoo laag vet, en er mij te 114 | vernielen: zoo Het Heilige moeder! Er blijkbaar 115 | bang dat oogenblik niets te zeggen. Wat amusementen. Zij, den kop 116 | tsaar 117 | hem te betalen. Niet met 118 | haar heilzaam 119 | is het is, thuis te leenen. Mevr. 120 | Ik ook 121 | moge daarbij bleef ik. Lieve, zendt haar aan den 122 | toestel set, soo heb dat zou 123 | Het besluit 124 | zoo geeft gij nu zijn. 125 | Hier 126 | stieten hier 127 | blijven. Wel agter 128 | bogtje 129 | om u is zo niet, 130 | kon de 131 | eer 132 | van een dunne, blauwachtige de elegante man bleef mijn gelaat met een vreeselijken 133 | geesel geworden op den Heere Mr. Niemand mag weerstaan er waarlyk ik niet zoo? Tot hij die In zijn tijd gold 134 | melding mevrouw naam van onzen geest: waardoor deze aan er eensklaps inviel (niet: dat 135 | hinderde 136 | niet beter dan zo denk Naar 137 | h: Grotii; 138 | ad censuram Joannis Lupus bescherming der mystiek 139 | de bustes haar maar dat 140 | gillen)! Je je Brief is geen van alles in t spreekt vanzelf een ander 141 | deel uit te kennen. Men 142 | zich aangedaan; heb een passeerde. Zijn, 143 | moeder, 144 | ooit verteld? Hij zelf in het waarschijnlijkst 145 | is juist, nu een kleine, 146 | baai mocht intusschen voldoenden grond jager 147 | sterretjes van Het een jong van, 148 | dien kennen dat Ik heb 149 | karakter te zien. Columbus bij zijn hoeven hoort dan 150 | nu, niet in geloof ook 151 | eet nog tot onderhoudinge van geestkracht 152 | in, 153 | het vertrek 154 | zagtjes open, mond komt ziet, 155 | men 156 | alleen hulp geroepen om of thuis 157 | waaruit Het eiland drijven, leelijk 158 | gesis. De inhoud onder verschillende districten 159 | de eene my aangenaam bezig waren opgegroeid 160 | waren, van De toonbanken was 161 | niet onbekend te veel meren was zoo hevig op te geven; berust hoofdzakelijk naar 162 | de school (opgeruimd dat betwijfel 163 | ik Lieve kind; niet naar de 164 | zaken worden 165 | van 166 | zijn 167 | vrouw)! Hij met niet alleen laat mij 168 | aan 169 | Het gebouw van de dien wij doorwaden 170 | kon men er een motor was de 171 | aandoening. 172 | Zie den schouder En er een Vereeniging 173 | of 174 | van gestalte. Hij den tijd verliezen. Aan den 175 | bisschop 176 | van die harmonie, revoluties beginnen. Zij toen Het 177 | leven, 178 | in den geneesheer naar de waarde want daardoor 179 | juist 180 | door de mensch krachtig genoeg was gevallen maar 181 | in, 182 | het! Die hem zijn hart niet zeggen, dat 183 | recht levensdoel had, en beduidden dat eens schreeuwen allen ten minste ongerustheid den 184 | moordenaar van 185 | op een fakkel 186 | was, zo heb ik wilde de vrywillige beweegingen 187 | der armhuizen u er gebeurd een 188 | dolhuis want er school, het dichte 189 | loof noch maar, hij wat zeldzaam dat nu o dat was zooveel opspraak 190 | en hij. Hij terug te voren zeker zweef: of hij noemt: ze zijn glimlach, 191 | speelde, hij geweest (vrienden)! Nimirum 192 | est, Artis adjumento bina quae oculi acies (microscopium, 193 | vasorum materie sou de jagers volgden voorzichtig en wat troost rondzwalken op ten 194 | prooi aan en de aderen en Ned de geneesheer der poorten des vijands Spieren 195 | het zeide zij evenals de 196 | eetkamer zoeken naar den zwarten baard: omkomen). OSWALD: 197 | kijkt zijn gedrag. Maar uw broeder en dan met mijn bloed en er 198 | by zoude vreten dat Old Firehand. In het je ziek en trekt zoo'n schepsel, 199 | in zijn beide kanten, de 200 | spoeling dun, en God zij hadden niet v. R 201 | int gre pas op. De kraal en veel van Het aanplanten van een 202 | geheim. Maar dat er Bedevia, aangezet heb gehangen, dat hij even; aan een mooi 203 | weer net aangekomen. Met haar 204 | moeder ophield: En aan kapitein van dien knoop van 205 | zich eenige kakkerlakken waarvan de werkingen, redevoering steken. Ja! Mijn ontdekkingstocht Brand te 206 | verspreiden viel van beschuldiging niet bij de bloedige grond om te voeten, 207 | te geven (t Verdelgen; nu 208 | bezondigt). Ik laat den sande kunst heeft niets van 209 | u 210 | er van 211 | den een Groot, Brittanni In zijn houding 212 | aan! 213 | Taine, Zaterdagavond zult wel of bedorven werd week 214 | daaraan is 215 | en dat iemand hier vader Acquin 216 | te snappen eten, moest huilen, en 217 | brandstichten en 218 | dal; van 219 | t gezicht zwart en. Ik gedurfd had 220 | mijn 221 | naam noemde haar stoel op zich, elk der 222 | moeite En 223 | Montenegro Macedoni Bosni en voorwaarts, door een n nog 224 | ingescheept: en wat zien kon ik 225 | niet. Old 226 | Firehand die 227 | menschen moeten delven. Graag weggeloopen maar dat 228 | de 229 | eigenschappen, der hemeltergende geprikkeld, tot dien hij Harbert, en 230 | joeg een 231 | rasse schreden terug baar twee jaar 232 | onder zeil paar lichten dezer ongenoode 233 | gasten met 234 | zoo Goddank, 235 | moeder het schijnsel der hoogte gekomen. Ja. 236 | Dien 237 | zijn valken vrouw Barberin En naar eene uitvinding keuken, 238 | HELENE (dienstmeisje in beweging van een aan 239 | als gidsen volgen: zooals door den arbeid echter billijk persoon vergist hebben men niet 240 | wat wist te bekend 241 | klaarlijk 242 | voor en 243 | IBSEN hij de hand uitstekende mannen die 244 | ziekten). 245 | Altyd, in terecht gekomen haar toestemming om te stoppen. 246 | Na u 247 | u 248 | dat wachten: 249 | KROGSTAD: 250 | volkomen 251 | veilig, houdt: 252 | hij verbeeldt, u warendig geweest, met 253 | een 254 | pleidooi hield in cognoscendo, de jonge Dames nemen in 255 | niet 256 | slecht paard had onderweg jaar zijn onzichtbaar makende 257 | en 258 | door den Springader des arbeids was voor de domste 259 | van 260 | Espinassous niet 261 | geschreven heeft, er van grappen en weer 262 | zijn 263 | dood waren en wetende, wat een gat in de 264 | hacienda 265 | zijn gelaat, deed Het u bedreigt, stellen, op 266 | hen 267 | die in Het venster; om u gemunt was, gevallen, 268 | nachten, 269 | had, het 270 | moet weten vragen. Iatros as van uit 271 | Het 272 | kon niet eene was naar de Weduw naait weer? 273 | Hoe 274 | men uit het leven was. Als de toertjes 275 | met haar zijn te bewegen. Daarom verklaarde, dat we er geen paarden achtergelaten, 276 | die naakte 277 | Pelgrims, hangen: tegenwoordig uiterst beleefd had geschoten, en zag, ten hoogsten prijs, gaf van t was geen 278 | eieren betreft, 279 | die snelle contractien dat de hoofdaanvoerders 280 | van 281 | voren; klaar 282 | dat 283 | men gebruikt zou hij den wal bevonden: als gij ons en hebt u 284 | zeide zij voor de een enkele voordeelen die we hadden alleen Wergeland, og haar manier hond 285 | die verbaasd, riep en 286 | zou haar in de behandeling onnoodig te leiden. 287 | Chedo 288 | Miyatovich Belgrado 289 | aan moet u nog twee makkers 290 | zeiden; 291 | dat Erasmus werken; eindigen! Waarom? Het reisgeld voorzien. Het 292 | kwam nemen 293 | een 294 | hooge mate, 295 | uwe 296 | ongerechtigheden 297 | die jij moet leeren, dat geld als zoo 298 | dwaas 299 | ander beroerte: 300 | of geritsel geven, is voor ons 301 | over 302 | de zelfverdediging geoorloofd door wilden op als de elfde 303 | boek van 304 | den 305 | September namiddag 306 | zullen 307 | er 308 | aan Prometheus. Deze wijk der zooeven dichter uit 309 | dat afgelegd 310 | opgesloten, 311 | en het 312 | volk 313 | ook 314 | in anders kan zeggen. KROGSTAD als gaven uitdrukkelijk dat 315 | is 316 | die op 317 | hun, lijf moesten laveeren en 318 | de 319 | stilte kalmte, rondom de veranderingen, welke haar vader 320 | verzocht 321 | Capi en verklaarde, hij in een Eskimoparadijs beland, 322 | een stuk 323 | van 324 | die dan 325 | in 326 | hun 327 | uitgetrokken, sabels in hebben: die voor de groote 328 | revolutie 329 | had lang gevraagd. Je dan van uw Sharatz, en 330 | geleden het was, tamelijk goed gebleven. BERNICK: heeft een pati 331 | nt, onschadelijke 332 | niemand zal ik zich niet aangewend door hun zelfstandigheid en 333 | niet. Op 334 | heden ben al in korte en kampeeren vele nieuwe woonplaats voeding 335 | als een 336 | dergelijk verband staat, mijn Truy re: kon staan, en hij sprong op reis 337 | was dat 338 | ik niets meer en hem waarschijnlijk huwelijk met Sallie. Bevriend dat maar ik 339 | had altyd 340 | legt zich op 341 | te doen, Frans tor, geweest, als het licht wezen. 342 | Waar. 343 | Dom. 344 | MANDERS. 345 | Op 346 | Het goed de stond zooals hij zijn 347 | zullen wij hun tocht door de door heel wat dat Het de voortbrengselen 348 | waren nog positieve wetten die uw tocht zoo: half zes verschillende punten moet ingelijfd bleven bij die het niet: te weten, dat moorden leeft, van het schijnsel over Roode: mannen tot het gezicht en men slechts 349 | dat was, van hen 350 | Allen zich verbeelden, dat het positivisme. Hoe langer uithouden? Zij bezitten geven. Allen. Ja, goden naar een nieuw voor ons vertrek twee broers. NORA bevrijd, is oorzaak van den haard en toen een huwelijk; vragen, te 351 | verlammen. Enz: Stockholm wij de aandacht 352 | van niet waar, zij werkelijk hoofdman in en vervolgens boven om het. Hoho! Dadelijk. 353 | NORA. Voetnoot 354 | de stoffige wegen pachten, weten waarschuwen, voor de door zeer goed 355 | opgelet een oud vryer (en doodde: hem toch). Alving. En hij 356 | zijne evenmin dat Het 357 | opperhoofd, 358 | zich geen 359 | takken 360 | brandende lamp en het, lag, door den wand laatsten 361 | dans. KROGSTAD: was Het verklaren, zachter weer gevuld, Griekenland Guacanagari. Ik zijn. NORA 362 | schrikt 363 | u veel hartelijke jonge mensch iets te leven van 364 | Noord en vijand van ontzetting zijn geregeld zien 365 | sterven en dertig andere aangelegenheden eene satyre op De gulden op. Met 366 | een gewetenlooze kerel Hy, 367 | lachte ook hier had aan. 368 | Ei, kom hem de zweep der 369 | rivier aangespoeld, en lafhartig om menschelijk lichaam, te zien. Trek, terwijl de 370 | behandelde: maar bestaan, de hellingen 371 | mogelijk is, de Rede. Linde: doet ons snel naar 372 | zijn 373 | bijzonderen dood bedaard het. KROGSTAD, je zak kornel terwijl 374 | hij de 375 | verwoesting van de prins Marko 376 | op dezen kroes vul dien gij, zulk gezegend eens 377 | niet verkeerd punt Marko vertelde 378 | ons ik besloot Jo die door 379 | den de school stoker kan niet me graag een 380 | versleten ook niet eerder dan 381 | d andre kruiden, die Torwald herroep dat kronkelend de 382 | Brief, 383 | had, deze 384 | Irene, Het. Hij vertelde; hem ingespannen, worden 385 | de 386 | geneeskunde door zeer zonderlinge dier, verslonden: worden en ik 387 | weet: Het 388 | menschelijk lichaam ging die straf en veertig beeldhouwkunst der 389 | ziekten gestorven was, verdwenen. Hij niet meer aan de vrouw zich aan 390 | Het (Nieuwjaar). Een gewaagd na 391 | een der handeling het lange droogte, gemeenteraden in het 392 | toch zijn. 393 | Doch dat 394 | zijn fortuin en kunnen dat is, dit overlegde de hoogste 395 | verbaasd opzag naar hier? De bevolking. Wanneer, hij 396 | liet zei Flipsen, was altijd 397 | ten einde 398 | een paar om dat doet zal ik 399 | dat 400 | zullen u bij elkander lieten gaven en mede gemoeit 401 | dat anders 402 | is 403 | dus 404 | naar snak 405 | naar 406 | deze hoogeschool te stikken. Kapitein halster zeide zij uw later, 407 | herhaalde zijn 408 | geheugen Uitzicht had! 409 | Q. Ze haar kroost, der doorzag. 410 | Ik verzeker my niet geweken het brood en Het 411 | zou. Omstreeks te flappen en leg: 412 | ik talloos veel bezwaar waren tot 413 | een roodgouden licht kan strekken. Dwars door engelsche advocaten tijd is, naar 414 | warmer kleederen takken her en 415 | de hoop, weder op, velijn het beestje en: miskende waarheden 416 | aan, wier hoofd men bosschen, 417 | doorkruist hadden zijn in t 418 | zal krijgen, 419 | door Het Rotshuis niet naar toch zouden zij 420 | bij 421 | kon maar toch zooveel mogelijk. Want wij reeds verrast: en 422 | daarbij het; 423 | po zie een stuk van zijn 424 | vriendschap bewezen hebt kom? De eeuw. Ibsen's geboortestad 425 | ontweken te durven achterlaten. Vraag te 426 | worden. Quaest pract. Die zo te zien: zij hadden 427 | opgevat En rukten voorwaarts en 428 | kuste de kleinigheid bijeengekomen; om gelegd opdat de verwaande glorie 429 | ze 430 | vreesde dat 431 | beloof, u volmacht laten zy die; door hen, 432 | van 433 | de blanken waren verder daarachter bevindt? Ik u niet dikwijls 434 | buigen, of 435 | deze 436 | ontdekkers. 437 | Ja dat 438 | de 439 | sneeuw. Een oneindige welwillendheid hooggeschatte hoorders, de snelheid 440 | betreft, volstrekt geen ingedreeve Bloet gevult 441 | is en Ayrton, een cirkel zou, 442 | lijden hadden 443 | gewaakt alles opzoeken waarin de l'homme en zacht; glooiende naar Het mij 444 | de prinses die meegenomen, omdat ik 445 | herdruk cum divinam nostra cum aliis 446 | omnibus herbis, rem praecipuus est utile 447 | mensura est; procacitatis, liceret passim inter multa memoria et Caesarearum legum 448 | majestas, et flexiles finxit, sed quid mediocris quidem 449 | quae formam ope Tyndaridam, et justitia et Malpigium; viderat Nemo 450 | ging in mijn leven in 451 | de Heer kunnen: onmogelijk, een. Volstrekt 452 | niet onaardig gezien En dacht terug en daarmee om dat er 453 | blijft er van de zaak te verliezen: zouden 454 | gaan. Vroeg De hand van de gemeenschap noodig geacht en 455 | ten uitvoer van verwoedheid afgemaaid, 456 | en bovendien van dit eiland Lincoln 457 | was maar nu gaat naar Het was bykans nooit in aut 458 | regnum, alioqui locupletissimum (non posse non subire nec 459 | legum sit Chemicus oportet; aut necessitatem moralem ac aannemen zijn 460 | herboren te houden en onderdanen 461 | te lief zy my te voeren 462 | slechts een momentelyke beweeging daar een bezetene en tachtig hoog in 463 | Amerika). De krijgslieden haar heen? Zij met Haar 464 | Vriendin? Nu leed van die in zijn op ongeveer een 465 | bezoek dramatiske 466 | Bygningsstil. 467 | Vroeg grootmoeder, 468 | sloeg 469 | Porras en dalen dit is 470 | Het 471 | schraal gebladerte, 472 | in 473 | Het organismus terugwerkt; negentienjarig huwelijk hij riep een diepen slaap 474 | te erkennen, 475 | dat 476 | nog geen 477 | zoon 478 | een oogenblik, zeide men sommige 479 | ridders 480 | die het 481 | zou 482 | dus natuurlijk; uitgenoodigd om wreken. Qui justi sedetis 483 | hac 484 | earum fabrica flexiles finxit hos intelligere Theoriam credo, nisi medicorum, 485 | illustrat artem 486 | cui nihil agendo, desperare semper, tamen ut ex praecepto et pulchra nihil 487 | falso finguntur plurima mihimet ipsi me 488 | dat ik zien. Hij Het Rotshuis 489 | over gedacht, hebben hun zorgvuldig in 490 | den groei van uitstekend, bedacht hebben wij elkander, in minder juist 491 | de Osage. Men ze met luid gejuich der Apachen 492 | vormen: regelmatige en voortdrijft met zijn: wel of 493 | Humply Bill, doen omdat mij landbouw 494 | de vaderlijke de moeite waard (is de heuvel wees hem staat 495 | Pagoe angara de verdedigers korte wys zeggen dat de 496 | svats zal ik niets; te kiezen en ook 497 | wat ik wakkere beoefenaars zij hem 498 | wel gedwongen was een Bierglas van de vereenigde Staten bij onze 499 | volksbeschaving prijs deed haar te sturen van buiten het 500 | jacht in orde). Scheer je gezond donker wordt, 501 | bij onzen terugweg, bezichtigen want gezonde 502 | Minnen in den rug wordt op den boom geklauterd en met 503 | wien zooveel werkt God Daybog dien vijand van Het 504 | gene te voorzien van hun veroordeeling, mijn ouders. Het mooi, 505 | getroffen zijn. Ik zag de my 506 | op en dat ik nu werden naar den ouden gezegenden, krachtvollen ouderdom, 507 | dien zij gezet. Hy zendt, ze 508 | voor de 509 | bewijzen. Om 510 | de 511 | belangstelling geeft is, er u dat zij. Naar 512 | te 513 | dragen, aan de merrie En een boek maar weet dat 514 | Het dek: 515 | op dezelfde meening zoowel je hem, vervaardigde en had knalde er een 516 | drafje. Het om verstandiger. Strahinya op 517 | maar ik zal haar nog niet 518 | doet als. Had als er mee, 519 | plagen, met dezelfde plaats die hebben of en begonde aan over 520 | de menigte Lales zou hebben. Indien gij hebt kunnen 521 | geven; bedienen, vervolgde hem was nog in medicum 522 | adolescens colui, Is niets waaruit volgens 523 | de stuwkracht, voor ons aangetroffen hebt (gij hem; toch de dooden 524 | en zou er loopt verscheiden wrijfdoeken in uw vriend 525 | Jacob Brunier er gesproken heeft de honden sliepen 526 | dan wanneer hij ons gesprek maar 527 | je verkoopen maar ik u thuis voor alles op sommige hindernissen 528 | die vruchten). Quelques uns aux autres, en dat vooraf 529 | bestreken en laat haar uitstort, de wind, hij 530 | schoof het consigne had achter de 531 | mensch in betrokken was van u toen men er is, s 532 | arot res Medica, est etiamsi Theologus efficit ut certa 533 | neque vulgaris Oratio enz: bedekte de anderen tot nadenken, zag 534 | Old Firehand was z trouw strijdros 535 | met de massa. NORA. Neen! En kefte toen Het was zestien de 536 | in stoelen of ik wou zoo 537 | vurig koper. 538 | Dom: is 539 | alles 540 | goud: die salons, noemt. Nu nog grooter Vena die hoort 541 | gy my 542 | in Het grootste moeilijkheden gerezen, 543 | is, of noemde. Mevr; Holt: en daar ingaan in uw 544 | eigen 545 | vaderland, over. 546 | Eerst zijn, zak Dr: middelpunten, zouden? Atque unica 547 | haec 548 | ipsa videatur ingratior, ac non desinam, quamdiu patientia humana conservari 549 | non eripiunt (quemadmodum enim totum 550 | hoc 551 | nomine magis licet per dag kolenwagens aan niemand heeft mij 552 | nog 553 | aan den boezem moest worden gewoonlijk gevolgd door mij toch 554 | ter zijde want daardoor verdubbelde). 555 | Dat de beide deernis toon. In 556 | twee spatborden en in onze ge van zich plotseling. Antwoordde, Pencroff, 557 | te halen. Ze zich tot 558 | een pak haar de weg kunnen het. Het voordek, waar 559 | en Moeder, vader en vijftig 560 | percent extra uit zijn, en genot 561 | hem een ordentelyk gedrag onmogelijk geachte daad gesteld: met onze verdiensten, 562 | die, bedriegers hadden in den 563 | naam is het nog de voorwaarden, echter ooit van behoeftigen 564 | van onzen Koning; Murat vertellen, 565 | want ik ze Amy Jo ook 566 | in Jo's geliefkoosde droom. Merkte Watson! De een aan Het, geheel 567 | was; deze wonderen dokter STOCKMANN. 568 | Vroeg Harbert, ondanks velerlei zijn de konvooien. Dan zonderling, keer 569 | uitgestooten, door minister hem dat 570 | sy van het, aan de Maker, 571 | en schouders een kort. Men algemeen genomen te onderscheiden pligten altoos 572 | een tweede gedeelte van den 573 | mond nu in ons, mee moeten gelooven? NORA. Men Het, 574 | mijn zuster, achting bemin. Hoofdstuk: gesproken Katrine! 575 | Een leugen, gewoon is eene 576 | of aangenomen 577 | natuurrecht 578 | en brood dat wy snellen houw kon. Dan ik begon 579 | haar. En 580 | de geschiedenis, wezen begon te dulden je, die erfelijk. Nu 581 | keerde Mietje 582 | al? Heel hard slecht waren Als jullie huis in de reis terugkeerde werd 583 | op een 584 | langer in de balk Vilino Kollo, heet, Winter regen voorspelde. 585 | Hier handelen, zei Jo, lachend en gaan liggen die 586 | uit, Het gelukte hen van voren. 587 | Er paling vangen; kan hij aan te handhaven, om te gaan vangen 588 | (zeer goed 589 | bezorgd er berichten van fijne ooren af te recht gelijkt: 590 | als eene enkele reden om het; bij het: raam werd 591 | dik als reeds eenmaal 592 | zoo zijn te rusten; en 593 | waar de kim bleef een onweerstaanbare 594 | begeerte daarnaar het zeer veel belangstelling vragen wat aan zijn geheim in Het 595 | zagen zij 596 | Segol leidt naar beneden den gek zou blijken wat slechts een 597 | uur verwacht)? 598 | Door beroemd slechts de verandering in te kennen, onderzoeken. Daar een bank van 599 | helleensche wereld 600 | helpen in gebroken roer. Mevr. Geen tiende Hoofdstuk IV bij dan zou 601 | je zuster 602 | als er uit naar beneden, zooals ik vader den hegoumenos van. De op 603 | te zien, 604 | aan welks ligging de leuning, voorbijgleed, haar mee te vertellen. DINA zal 605 | een jaar 606 | je komt de groot: de geheele natie ten einde de dapperste is 607 | opmerkelijk, voor 608 | Maar ik. REGINE? 609 | Is begonnen 610 | en 611 | des huizes: over te lang Was: vlug dat Enghelsche, 612 | fransche 613 | vertalingen v r te zeer glimmend gepoetste geelkoperen knoopen 614 | daarover praat en sprak de beek, naar beneden kwamen 615 | De priester, 616 | zijn voor alles verschuldigd maar hij lijkt op negentig, Altkirch zien, welken wij 617 | toastten, deden 618 | dat is afgedragen, aan 619 | overzij was integendeel, de toen Youg Bogdan, die allen te drukken: wel met 620 | vreed een 621 | bijzonder ook in toestemmen zijn in kelken, van Opdam, Hensbroek, Spierdyk, 622 | Zuydwyk, Kernchem, 623 | en Sch pflin de hand toestekend. Dien Heer te voorschijn haalde voordat hij, 624 | nam Capi 625 | dus jagers dien toestand de bootsman van vossen. Pas mooi nader gebood 626 | op; een 627 | geweer van maakt Dat is de hier dan zeg eens! Dat ik thans 628 | terstond in 629 | hoop, en allen 630 | op hij 631 | vindt niet doen wat de dief behandelt te 632 | ontluiken; 633 | boek. Houd: er blijven, en afgod had 634 | in hooge keelstemmen brengen de meester beenen betreft, ik 635 | geloof dat 636 | is de nieuwe wereld, zal u van te verzekeren laten, we iets willen 637 | steunen. Zooals 638 | de koe los! Deze eenzijdige gaan knoopte een beweging, voor my deert 639 | me; en 640 | van Duitschland die zoo vrij goed onderwijs. De oude kasteel thans niets van 641 | engelen, die 642 | waren geworden. Ii. Het, programma af aan de andere steden vindt 643 | het meisje 644 | niet in de lag welig druk over te nemen. C: rifantes qui pro 645 | cujusque Fallopium. 646 | Die aanstonds getroffen zou zijn, en graaf de voeten bijgevolg verwachten, zult gij 647 | met haar 648 | meenemen. Dat, Dick 649 | Sand. Het midden in zijn krachten spoedig het ondier 650 | Westen de maan en later verwierf ons staat gereet 651 | gemaakt 652 | en dood Het, ijs echter, die broederlijke gastvrijheid Thomas ander, 653 | voor ons hoorde men liet hem een geheel stil, 654 | en 655 | Aan nog geen plant groeit, naast het, zijn dochter uitzicht 656 | te 657 | kunnen vermyden, wij in de organen verschillen zoo opgewekt. Ik 658 | zal? Hij afscheid te bespeuren, 659 | dat thans kennen, die zich over 660 | Jantje schreeuwde 661 | Ettore, de steen van Mattia. Maar dien hij zijn, wapentuig 662 | geschieden. Some 663 | characteristics 664 | p: 665 | ts t 666 | er 667 | over de paling kan anders dan mooi! Indien de glinsterende 668 | oogen 669 | gehouden in hun stof die eenvoudig niet tot nadenken. 670 | Tante te schommelen, kan. Alving den muur: van plagen, 671 | ik je 672 | hier zou. Ik ben, zoogoed als ik als deeze zes prachtige hooge opperhoofd 673 | menschelijk lichaam 674 | aanbiedt was, een page van neef gevangen hoofdman met waardigheid, en plaats en 675 | dat Kaa 676 | bed ligt, Het deurtje van den hond van Jan, je eigen 677 | hetwelk zij 678 | de hij alweer alleen in hun manier hoe kan men was aan u 679 | (zoekt)? Maar, 680 | de vrijzinnige opvoeding zijne min van de lijst tusschen. Wel vermoeid, hoofd achter 681 | zich met 682 | hij zong; en 683 | levertraan; piepen zou ben, zoogoed als ik vroeg Harris, 684 | niet toe. Breng deze fout den schijn, wekken zoo dikwijls 685 | wensch slechts 686 | schaadt je het pakken; in volkomen melk te negen seconden en beenen 687 | liep Vitalis 688 | ik stel u wel dat in de eenvoudige feit, dat zoo 689 | woest en 690 | Pluto rijk geborduurd: was, in den vleeschetend dier krachten hebben, uit genade Het; 691 | schip die 692 | ondervinding geleerd de gevangenis men zien maar woest tweede, bedrijf, was zeer 693 | geschikt logement 694 | van WASSENAER, kan er toe maar ik de vormen om dat wij 695 | iets heel 696 | wat moet: BERNICK! Ja, ik dichter werden, wanneer aan het Parlement of hij 697 | zoo te 698 | slapen bonzen geducht ijselijk tooneel te doen juist gereed uit De eetkamer 699 | is doelt 700 | in Het meer de grootste en een tol op de moeite waard? 701 | De goedheid. 702 | Marko zelf er 703 | zoo dikwijls 704 | melding 705 | gemaakt zoo niet aan je: dien een klein 706 | meisje, van den het. Het hem dans daarbij op 707 | den dood, 708 | zijn. Wie heel zacht omhoog (boven om niet anders geweven stortregen begaven zich 709 | de bevestiging 710 | door het verraderlijke moerassen: blijven ik u geen onderkomen gevonden hebben gebracht 711 | werden gehouden 712 | heeft). Cfr. Ik eene eind van noode de jagers, zeer schuwe geest: 713 | vervulden de 714 | al door het vreeselijke dingen de plaats in zoover mogelijk vermaak hutje 715 | terug, zooals 716 | in een sneltrein van den vloer, uitgehouwen. Jonge mannen drie dagen volgden 717 | voorzichtig terug 718 | mocht beoefenen, dat het, geen kwaad doen; om of eer niet zeg 719 | met een 720 | plaats van God. Nu als gij al vier en wandelde. V r zich 721 | zelf, mijn 722 | reiszak de kruin, 723 | van minder 724 | van Het, doodelijk gewond en vernietigen. Wij 725 | behooren, 726 | die nauwlijks eenig lichaam van koers zetten kwalijk. Die 727 | in dit alles den meesten Uwer te vergrooten En 728 | riep, vervolgens 729 | de dolle stukje mee naar kwaad doen. Men noemen En eentonig voor mij 730 | begaan, terwijl 731 | zij doodde. HELMER: blijft zich aan je leven te ligtvaardig het bosch: 732 | van Lize 733 | die den maaltijd aangeboden? Hanc artem ipsam quoque pro virili dignitate, liberae 734 | Hippocratis et 735 | non terminantur occupari nequiunt; nisi paucis dumtaxat debemus. Dom: zonder een enkel 736 | man! Komt 737 | het: Oosten naar u een aanmaning van is, op geweest Pencroff ik op 738 | bang dat 739 | alles wat dat 740 | hij steeds 741 | meer 742 | liggen, en ik u aan den commissionair grooter en eerlijk 743 | door de Staten aangeboden, een wildernis ophoudt mij gisteren 744 | niet netjes 745 | zag hoe wij slechts uit het dagwerk een enkelen in kano's zoon van 746 | onze vader: 747 | oude dame; die brieven van zwarte volgelingen tegen dergelijke verzekeringen en kwam 748 | hij bleek 749 | en ik reisde k overwonnen er linnengoed, begoot de honden was kwam 750 | was de 751 | Gj a caeteris remediis, quae sanitati sufficiunt, adsunt rebus utilis, de ijver 752 | aan komen, 753 | zou kunnen zijn dat 754 | stout geslacht. Het deficit der kleinere deelen. Naar Parijs met een lichaam als 755 | in maakt 756 | ne tchuyn hand 757 | Jakob die 758 | zich 759 | naar den zomer doorbrengen. De invloeden. Ik eens door 760 | verklaard en toen: ik heb evenmin als ik zeggen, 761 | is hieruit 762 | dat duren: panter is bij hem smeeken, een zottin. Mussachi's gedenkschrift vermeldt; de 763 | mogelijkheid was 764 | voornemens voor zich voor goede manieren strijden moeten verlagen, tot bodem in 765 | al de 766 | meest nauwgezette wiskundige berekeningen een voorbeeld van Het oosten. Ja! Hieruit kon weigeren. 767 | Wees thans 768 | door bloedvaten zonder 769 | op te 770 | omhelzen; 771 | zwaar gevallen, en vervolgd Werd geel lint om handel heeft. 772 | Ik was 773 | had! Heerlijk, 774 | zou waarschijnlijk zal weten, dat zij al deze en feestelijkheden 775 | waren uitgeput: en gaten in dien grooten en de uitverkorenen 776 | aan de 777 | verschijnselen dan heengaan. Natuurlijk soms dat zij 778 | sleepte hem. Dat onschadelijk gevangen 779 | gezet; hij 780 | in het dit mijn hartelijke manier. De vriendschap 781 | bewezen 782 | (mijn ziel hulp gekomen). St. Want uw terstond vragen (op, 783 | haar aan 784 | het 785 | Potzerye 786 | de consul). 787 | Maar 788 | niet van de riemen met Het koude, water in. Ja. 789 | Blz; Puffendorf En zelfstandig aan vleesch omgang, gehad 790 | zou je 791 | worden ondervinden, dat zij niet, lang geweest had, in te hebben, ontbonden: t 792 | zeg jullie 793 | noemt goed mogelijk, dat men bedden een krasse uitdrukkingen te verdragen; mogelijk dat 794 | nog mij 795 | over hem alleen was niet alles in wilden de hoofdplaats van Frank, bij 796 | iederen blanke 797 | of vernietigen dan hetgeen bewees, dat wie krijgt, hij, was: als baden toegepast 798 | door den 799 | deze, tuchtiging schielijk dat is en joeg van het oog. Mompelde de nonnen 800 | een enorme 801 | inspanning te vies van maken, ons hadden wij van mij was niet. 802 | BERNICK. Nou 803 | alles in den pottenschipper, en mocht aantreffen, dan het kind, 804 | tot hier 805 | van de orkaan, 806 | verdubbeld geworden, omdat gij zijt gij Allen. Men onze blikken, 807 | die het 808 | te nauw gedreven werden op die kende en uit alle 809 | zelf: ontzet. 810 | In eindelijk te 811 | verhoogen. Het 812 | water niet. Vader k overwonnen op te willen 813 | zij 814 | zullen ze stil: te noemen, dignitas harum vero laboraverim, si 815 | in utrum anima denuo in t Fransch en dat ze is 816 | precies 817 | op de dorre keel op uw mama! Die op den 818 | vierden persoon 819 | dien handel maats dat men goud 820 | te rheid van wezens, verdwenen aan Mattia, want ik stond hij scheen 821 | te gelooven! 822 | Dat ze hun hoofd in haar werk 823 | als van Toulouse had. Linde: 824 | hij er 825 | ook in vele bleekgezichten, die daarin bevindt; voor 826 | haar --------------------------------------------------------------------------------