Get 1989 entries to compile
There were some which cannot be compiled under clang. One entry we used a patch from Yusuke Endoh to get the entry to compile; thank you Yusuke for your assistance! Another one we used a patch from Yusuke (thank you!) but I further fixed it so that it would work with clang. It had to be done: IOCCC Tetris has to work! This was done by changing the environment arg to main() to be a char * in main() itself rather than a char **. Using a char ** in main() third arg got it to compile but only one key worked with clang so I changed it to be not the third argument but a regular char * in main(). **a (third arg) evaluated correctly but *a[1] and onward was actually part of the environment. Again IOCCC Tetris has to work! I also fixed fubar to work which took a few tweaks. README.md files were also updated.
This commit is contained in:
1 parent
b6be01bdc6
commit
9d63c37f49
23 files changed
+353
-280
No files matched your search
+44
-38
@@ -1,4 +1,4 @@
|
||||
Best of show:
|
||||
## Best of show:
|
||||
|
||||
Jari Arkko, Ora Lassila, Esko Nuutila
|
||||
Laboratory of Information Processing Science
|
||||
@@ -7,33 +7,38 @@ Best of show:
|
||||
02150 Espoo
|
||||
Finland
|
||||
|
||||
Judges notes:
|
||||
## To build:
|
||||
|
||||
This is the most useful program entered this year. It is a
|
||||
rather large subset of lisp. It has no error recovery, and
|
||||
performs rather poorly in a number of cases. Even so, placing
|
||||
all this functionality in such a small, densely packed program,
|
||||
is impressive enough to win the Best of show award.
|
||||
make all
|
||||
|
||||
To have a chance to compile under a modern CPP, we had to
|
||||
replace `#D` with `#define`.
|
||||
NOTE: To have a chance to compile under a modern CPP, we had to
|
||||
replace `#D` with `#define` and `#a` with `#include`.
|
||||
|
||||
Selected notes from the author:
|
||||
## Judges' comments:
|
||||
|
||||
This is the most useful program entered this year. It is a
|
||||
rather large subset of lisp. It has no error recovery, and
|
||||
performs rather poorly in a number of cases. Even so, placing
|
||||
all this functionality in such a small, densely packed program,
|
||||
is impressive enough to win the Best of show award.
|
||||
|
||||
|
||||
## Selected notes from the author:
|
||||
|
||||
This program implements a Lisp interpreter in 1465 bytes of source.
|
||||
Some sophisticated features supported, eg. functionals and recursion.
|
||||
The special-forms/functions/variables implemented are:
|
||||
|
||||
+ - * < ()
|
||||
car cdr cons defun equal
|
||||
function if lambda quote t
|
||||
|
||||
Below are sample lisp expressions you might choose to try as input.
|
||||
The program implements a conventional lisp listener, i.e. you type in
|
||||
lisp expressions (followed by CR), the program evaluates them and
|
||||
prints out the return values. End execution by typing an end-of-file
|
||||
character.
|
||||
|
||||
This program implements a Lisp interpreter in 1465 bytes of source.
|
||||
Some sophisticated features supported, eg. functionals and recursion.
|
||||
The special-forms/functions/variables implemented are:
|
||||
|
||||
+ - * < ()
|
||||
car cdr cons defun equal
|
||||
function if lambda quote t
|
||||
|
||||
Below are sample lisp expressions you might choose to try as input.
|
||||
The program implements a conventional lisp listener, i.e. you type in
|
||||
lisp expressions (followed by CR), the program evaluates them and
|
||||
prints out the return values. End execution by typing an end-of-file
|
||||
character.
|
||||
|
||||
(+ 2.5 3.1)
|
||||
(defun fib (n)
|
||||
(if (< n 2)
|
||||
@@ -52,20 +57,21 @@ Selected notes from the author:
|
||||
(cons (quote (f)) ())
|
||||
(car (quote (a b c)))
|
||||
(cdr (cdr (quote (g h i))))
|
||||
|
||||
Please do not leave any whitespace before the first parenthesis when
|
||||
you type your input, or any other unnecessary whitespace. Please try to
|
||||
avoid any undefined variables or functions, wrong number of arguments
|
||||
etc. All these errors are likely to dump core (i.e. there are no error
|
||||
checks in the program).
|
||||
|
||||
Traditional Lisp implementations use cons cells as the main data
|
||||
structure. Lists are organized of pointer chains of these cells.
|
||||
In this program, an alternate representation was chosen: char*'s.
|
||||
All list operations, including the ones in the interpreter, are
|
||||
made using string representations of the lists. These operations
|
||||
must count parentheses and skip whitespace. This leads to extremely
|
||||
poor performance!
|
||||
|
||||
|
||||
Please do not leave any whitespace before the first parenthesis when
|
||||
you type your input, or any other unnecessary whitespace. Please try to
|
||||
avoid any undefined variables or functions, wrong number of arguments
|
||||
etc. All these errors are likely to dump core (i.e. there are no error
|
||||
checks in the program).
|
||||
|
||||
Traditional Lisp implementations use cons cells as the main data
|
||||
structure. Lists are organized of pointer chains of these cells.
|
||||
In this program, an alternate representation was chosen: `char*'`s.
|
||||
All list operations, including the ones in the interpreter, are
|
||||
made using string representations of the lists. These operations
|
||||
must count parentheses and skip whitespace. This leads to extremely
|
||||
poor performance!
|
||||
|
||||
Copyright (c) 1989, Landon Curt Noll & Larry Bassel.
|
||||
All Rights Reserved. Permission for personal, educational or non-profit use is
|
||||
|
||||
Reference in new issue
Block a user