EsoInterpreters
This page is for cross-referencing esoteric language interpreters that have been written in esoteric languages.
Longest chains without repetition | ||||
---|---|---|---|---|
Befunge-93 | Brainfuck | Bub | ||
ORK | Kipple |
Main table
The implementing languages are written down the left; the implemented languages are written across the top. To reduce width a bit, self-interpreters get their own column.
S | Self-interpreter |
---|---|
C | Part of cycle |
X | Other |
GraphViz
The following simple and elegant Perl oneliner can be used to make a graph of this table, in GraphViz's inimitable style, on any system with the curl
, perl
and dot
commands installed:
curl -s 'https://esolangs.org/wiki/EsoInterpreters?action=raw' | perl -ne 's/\[\[[^]|]*\|([^]]*)\]\]/$1/g; s/\[\[([^]]*)\]\]/$1/g; s/\[[^] ]+ ([^]]+)\]/$1/g; s/<!--.*?-->//g; s/ //g; if (/^\{\|/) { $h = $r = []; @t = (); } elsif (/^\|-/) { $r = []; push @t, $r; } elsif (/^[|!](?!\})(?:\s*style=[^|]*\|)?\s*(.*)$/) { push @$r, $1; } END { sub n { ($l) = @_; $n = $n{$l}; if (not $n) { $n{$l} = $n = "n".(keys %n); print "$n [label=\"$l\"];\n"; } return $n; } print "digraph D {\n"; for $r (@t) { next if $#$r < 1; $d = n($r->[0]); print "$d -> $d;\n" if $r->[1]; for $i (2..$#$r) { $s = n($h->[$i]); print "$s -> $d;\n" if $r->[$i]; } } print "}\n"; }' | dot -Tpng -ointerps.png