Fix 1998/fanf for Linux

The C pre-processing stages of the build failed in Linux so instead of
having those steps fanf.c became what was the code that was compiled.
Now it works with both macOS and Linux. This fix required changes to
fanf.c and also the Makefile.

I also removed the address from the README.md file as well.
This commit is contained in:
Cody Boone Ferguson committed 2023-07-06 06:14:06 -07:00
1 parent e0d4b98655
commit 5daa925803
4 files changed
+86 -92

No files matched your search

+77 -81
View File
@@ -1,43 +1,39 @@
#include <stdlib.h>
#include <stdio.h>
#define l #define
#define p(p) l p b ( m p u X )
l i int
l n struct n
l x ){ return (
l A ->
l N n*
#define i int
#define n struct n
#define x ){ return (
#define A ->
#define N n*
n { i c ; N L ; N R ; N U ; N ( * F ) ( N ) ; } ;
l F A F
l U A U
l R A R
l L A L
l m q = malloc(sizeof * q ) Z F =
l e z F ( p ) ) ; }
l f e N
l g z L Q s f
l h ( N p x
l H h p L U Q
l s R z R = q
l t ) ? p : (
l z , p
l Z , q
l Q = p
l w ! p U t p U L Q z Q U ,
l D W p R U = 0 z R Q R F ( p R ) z R F != E t
l W h w
l X z = q , 0
l V w p F = v z L Q
l O m o Z L Q
l M m E Z A c =
l r Z R Q
l u Z U Q
l a ) ) ) ? 0 : j ( !
l k ( i c x
l y 0 ) ; } i
#define F A F
#define U A U
#define R A R
#define L A L
#define m q = malloc(sizeof * q ) Z F =
#define e z F ( p ) ) ; }
#define f e N
#define g z L Q s f
#define h ( N p x
#define H h p L U Q
#define s R z R = q
#define t ) ? p : (
#define z , p
#define Z , q
#define Q = p
#define w ! p U t p U L Q z Q U ,
#define D W p R U = 0 z R Q R F ( p R ) z R F != E t
#define W h w
#define X z = q , 0
#define V w p F = v z L Q
#define O m o Z L Q
#define M m E Z A c =
#define r Z R Q
#define u Z U Q
#define a ) ) ) ? 0 : j ( !
#define k ( i c x
#define y 0 ) ; } i
N q ; N
o H z Q L f
@@ -45,9 +41,9 @@ v H U z Q L f
K W V L R f
J W V R f
I h V R f
#if 0
Y W q Q g
#endif
S W w w O L L R r s , O L R r R R g
E D p F Q L A c - p R A c ? J : K f
P D w putchar ( p L R A c ) , m I g
@@ -56,64 +52,64 @@ p ;
i j k c ? O U r u U U X : y b k y d k y
l d(d) ( ( d a b
l b(b) ( ( b a d
l E(E) b ( M E u X )
#define d(d) ( ( d a b
#define b(b) ( ( b a d
#define E(E) b ( M E u X )
main k i ) ! (
p (I)
p (J)
p (K)
#if 0
p (Y)
#endif
p (P)
p (G)
#define I b ( m I u X )
#define J b ( m J u X )
#define K b ( m K u X )
p (S)
l B b (S (K S) K)
l SS b (B (B S) B)
l C b (SS B S (K K))
l CC b (B (B C) B)
l BB b (CC B (B B B) B)
l Y b (S (C B (S I I)) (C B (S I I)))
l CI b (C I)
#define P b ( m P u X )
#define G b ( m G u X )
l ef E(EOF)
l sp E(' ')
l ob E('(')
l cb E(')')
l lm E('\\')
l nl E('\n')
l ht E('\t')
l qs E('S')
l qk E('K')
l qi E('I')
#define S b ( m S u X )
#define B b (S (K S) K)
#define SS b (B (B S) B)
#define C b (SS B S (K K))
#define CC b (B (B C) B)
#define BB b (CC B (B B B) B)
l pair b (BB (B (B K)) C CI)
l atom b (B K CI)
#define Y b (S (C B (S I I)) (C B (S I I)))
l bind b (CC B B C)
#define CI b (C I)
l ore b (SS (CI K))
l gns b (Y (B (bind G) (CC S (C (ore sp (ore nl ht))) CI)))
#define ef E((-1))
#define sp E(' ')
#define ob E('(')
#define cb E(')')
#define lm E('\\')
#define nl E('\n')
#define ht E('\t')
#define qs E('S')
#define qk E('K')
#define qi E('I')
l pr b (Y (CC C (BB CI (B (BB (bind (P ob)) K)) (SS C (CC C (BB BB bind) K) (C (CC bind) (K (P cb))))) P))
#define pair b (BB (B (B K)) C CI)
#define atom b (B K CI)
l trans b (Y (B (bind gns) (S (BB S (C lm) lam) (C (BB S (C ob) brac) (S (C cb (CI (atom sp))) (S (C ef (CI (atom sp))) (B CI atom)))))))
#define bind b (CC B B C)
l brac b (S bind (B Y (C (BB B B bind) (S (BB S (BB S (S I)) (CC (BB (B K)) (BB K) pair)) (CC S (CC BB (BB C (C (CI sp)) CI)) pair)))))
l lam b (B (bind gns) (C (CC BB bind (B CI)) abs))
#define ore b (SS (CI K))
#define gns b (Y (B (bind G) (CC S (C (ore sp (ore nl ht))) CI)))
l abs b (Y (C (BB S (BB C CI) (SS S (BB C (BB B opt)) I)) (CC S (C C (atom qi)) (B (pair (atom qk)) atom))))
#define pr b (Y (CC C (BB CI (B (BB (bind (P ob)) K)) (SS C (CC C (BB BB bind) K) (C (CC bind) (K (P cb))))) P))
l make b (B pair (pair (atom qs)))
#define trans b (Y (B (bind gns) (S (BB S (C lm) lam) (C (BB S (C ob) brac) (S (C cb (CI (atom sp))) (S (C ef (CI (atom sp))) (B CI atom)))))))
l opt b (S (S I (S (BB (CC B) CI (BB K K make)) (S (BB C (BB C (C (CI qk))) (SS (SS S) (S (BB (BB (S I)) S (BB (BB (CC B) CI) (BB K K) make)) (B (CC B (BB (CC C) (BB (C (CI qk)) (pair (atom qk))) pair)) make)) (B (C (BB B C (C (CI qi)))) make))) make))) (B K make))
#define brac b (S bind (B Y (C (BB B B bind) (S (BB S (BB S (S I)) (CC (BB (B K)) (BB K) pair)) (CC S (CC BB (BB C (C (CI sp)) CI)) pair)))))
#define lam b (B (bind gns) (C (CC BB bind (B CI)) abs))
#define abs b (Y (C (BB S (BB C CI) (SS S (BB C (BB B opt)) I)) (CC S (C C (atom qi)) (B (pair (atom qk)) atom))))
#define make b (B pair (pair (atom qs)))
#define opt b (S (S I (S (BB (CC B) CI (BB K K make)) (S (BB C (BB C (C (CI qk))) (SS (SS S) (S (BB (BB (S I)) S (BB (BB (CC B) CI) (BB K K) make)) (B (CC B (BB (CC C) (BB (C (CI qk)) (pair (atom qk))) pair)) make)) (B (C (BB B C (C (CI qi)))) make))) make))) (B K make))
(bind (bind trans pr) (P nl) I)