Loss, v. 1.11.11.1_
Jump to navigation
Jump to search
- Not to be confused with Loss.
Loss is a language that is currently in its most stable version, 1.11.11.1_. It is no longer being updated.
Syntax
I
prints I
II
prints II
II
prints II
I_
prints I_
Example Program
Input:
I II II I_
Output:
I II II I_
Implementation
The following implementation is realized in the programming language Common Lisp:
(defun interpret-Loss-v-.1.11.11.1_ (code) "Interprets the piece of Loss, v. 1.11.11.1_ source code and returns no value." (declare (type string code)) (let ((ip 0)) (declare (type fixnum ip)) (symbol-macrolet ((current-character (the character (char code ip))) (next-character (the character (char code (1+ ip)))) (next-character-is-identifier-p (the boolean (not (null (and (array-in-bounds-p code ip) (find next-character "I_" :test #'char=))))))) (declare (type character current-character next-character) (type boolean next-character-is-identifier-p)) (loop while (< ip (length code)) do (case current-character (#\I (format T "~c" current-character) (when next-character-is-identifier-p (format T "~c" next-character) (incf ip)) (incf ip)) ((#\Space #\Tab #\Newline) (format T "~c" current-character) (incf ip)) (otherwise (error "Cannot print the character \"~c\" at position ~d." current-character ip)))))) (values))