Execute HQ9+/Tcl: Difference between revisions
m
Fixed syntax highlighting.
m (moved RCHQ9+/Tcl to Execute HQ9+/Tcl) |
m (Fixed syntax highlighting.) |
||
(One intermediate revision by one other user not shown) | |||
Line 1:
{{collection|RCHQ9+}}{{implementation|HQ9+}}[[implementation of task::RCHQ9+| ]]
These implementations have the feature that they are quines of themselves in the language that they accept (so long as you take a generous definition of what to ignore; the HQ9+ definition is ambiguous enough that it allows such an interpretation). So the implementation of a language with a quine operation is a quine in the language implemented. This feels like a rather appropriate restriction...
{{works with|Tcl|8.4}}
<br clear=right>
===Interpreter===
<
for {set i [set a 0]} {$i<[string len $d]} {incr i} {
switc\u0068 -- [string index [string tolower $d] $i] \u0068 {
Line 20 ⟶ 19:
}
} \x2b {incr a}
}</
===Compiler===
To be fair, this compiler then immediately executes the code. Replace the <code>eval</code> with <code>puts</code> to see what it generates.
<
eval [string map [list \u0068 {puts "\u0048ello, world!";} q \
[list puts -nonewline $d]\n \071 {for {set b [expr 100-1]} 1 {} {
Line 33 ⟶ 32:
if {$b} {puts ""} else break
};} \x2b {incr a;}
] [regsub -all {[\u0000-*,-8:-gi-pr-\uffff]*} $d {}]]</
|