Adopt a copy of Minix 2's ed; this allows the ACK's antiquated ed scripts to
run with a minimum of tweaking. Rewriting them for modern ed looks really hard. Fixes: #84
This commit is contained in:
parent
f8dfdef974
commit
05ddefad65
|
@ -9,6 +9,7 @@ normalrule {
|
||||||
name = "tokentab_h",
|
name = "tokentab_h",
|
||||||
ins = {
|
ins = {
|
||||||
"./maketokentab",
|
"./maketokentab",
|
||||||
|
"util/cmisc+ed",
|
||||||
matching(filenamesof("+llgen"), "/Lpars.h$"),
|
matching(filenamesof("+llgen"), "/Lpars.h$"),
|
||||||
},
|
},
|
||||||
outleaves = { "tokentab.h" },
|
outleaves = { "tokentab.h" },
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
ed -s "${1:-Lpars.h}" > $2 <<'+'
|
$1 -s "${2:-Lpars.h}" > $3 <<'+'
|
||||||
1d
|
1d
|
||||||
1,$s/# *define //
|
1,$s/# *define //
|
||||||
1,$s/ ...$//
|
1,$s/ ...$//
|
||||||
|
@ -14,5 +14,4 @@ $a
|
||||||
};
|
};
|
||||||
.
|
.
|
||||||
1,$p
|
1,$p
|
||||||
q
|
|
||||||
+
|
+
|
||||||
|
|
|
@ -38,4 +38,3 @@ g/_b64_sft/s//.b64_sft/g
|
||||||
g/_b64_rsft/s//.b64_rsft/g
|
g/_b64_rsft/s//.b64_rsft/g
|
||||||
g/_b64_lsft/s//.b64_lsft/g
|
g/_b64_lsft/s//.b64_lsft/g
|
||||||
1,$p
|
1,$p
|
||||||
q
|
|
||||||
|
|
|
@ -29,11 +29,12 @@ for _, plat in ipairs({"cpm"}) do
|
||||||
name = "ed_"..plat.."/"..n,
|
name = "ed_"..plat.."/"..n,
|
||||||
ins = {
|
ins = {
|
||||||
"./FP.script",
|
"./FP.script",
|
||||||
|
"util/cmisc+ed",
|
||||||
assembly,
|
assembly,
|
||||||
},
|
},
|
||||||
outleaves = { n..".s" },
|
outleaves = { n..".s" },
|
||||||
commands = {
|
commands = {
|
||||||
"ed -s %{ins[2]} <%{ins[1]} >%{outs}"
|
"%{ins[2]} -s %{ins[3]} <%{ins[1]} >%{outs}"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
|
@ -2,13 +2,14 @@ normalrule {
|
||||||
name = "em_code_ek_h",
|
name = "em_code_ek_h",
|
||||||
ins = {
|
ins = {
|
||||||
"./make.em.gen",
|
"./make.em.gen",
|
||||||
|
"util/cmisc+ed",
|
||||||
"./em.nogen",
|
"./em.nogen",
|
||||||
"h/em_table"
|
"h/em_table"
|
||||||
},
|
},
|
||||||
outleaves = { "em_codeEK.h" },
|
outleaves = { "em_codeEK.h" },
|
||||||
commands = {
|
commands = {
|
||||||
"%{ins[1]} %{ins[3]} > %{outs}",
|
"%{ins[1]} %{ins[2]} %{ins[4]} > %{outs}",
|
||||||
"cat %{ins[2]} >> %{outs}"
|
"cat %{ins[3]} >> %{outs}"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
echo "/* this part is generated from $1 at: " `date` "*/"
|
echo "/* this part is generated from $2 at: " `date` "*/"
|
||||||
ed -s $1 <<'EOI'
|
$1 -s $2 <<'EOI'
|
||||||
1,/^$/d
|
1,/^$/d
|
||||||
1,/^$/d
|
1,/^$/d
|
||||||
1,$s/^\(...\) \(.\).*/\1:\2/
|
1,$s/^\(...\) \(.\).*/\1:\2/
|
||||||
|
|
|
@ -2,6 +2,7 @@ local generated = normalrule {
|
||||||
name = "generated",
|
name = "generated",
|
||||||
ins = {
|
ins = {
|
||||||
"./new_table",
|
"./new_table",
|
||||||
|
"util/cmisc+ed",
|
||||||
"h/em_table", -- relative to root, which is a bit evil
|
"h/em_table", -- relative to root, which is a bit evil
|
||||||
},
|
},
|
||||||
outleaves = {
|
outleaves = {
|
||||||
|
@ -16,7 +17,7 @@ local generated = normalrule {
|
||||||
"h+emheaders"
|
"h+emheaders"
|
||||||
},
|
},
|
||||||
commands = {
|
commands = {
|
||||||
"%{ins[1]} %{ins[2]} %{dir} %{dir}"
|
"%{ins[1]} %{ins[2]} %{ins[3]} %{dir} %{dir}"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,25 +1,26 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
em_table=$1
|
ed=$1
|
||||||
h=${2-.}
|
em_table=$2
|
||||||
d=${3-.}
|
h=${3-.}
|
||||||
|
d=${4-.}
|
||||||
|
|
||||||
set `grep fpseu $em_table`
|
set `grep fpseu $em_table`
|
||||||
p=$2
|
p=$2
|
||||||
set `grep fmnem $em_table`
|
set `grep fmnem $em_table`
|
||||||
m=$2
|
m=$2
|
||||||
|
|
||||||
ed - $em_table <<'A' > X
|
$ed - $em_table <<'A' > X
|
||||||
1,/^$/g/ /s// /gp
|
1,/^$/g/ /s// /gp
|
||||||
A
|
A
|
||||||
|
|
||||||
ed - $em_table <<'A' | awk '{$2=$2+'$p'; print}' > Y
|
$ed - $em_table <<'A' | awk '{$2=$2+'$p'; print}' > Y
|
||||||
1,/^$/d
|
1,/^$/d
|
||||||
1,/^$/g/ /s// /gp
|
1,/^$/g/ /s// /gp
|
||||||
A
|
A
|
||||||
|
|
||||||
ed - $em_table <<'A' | awk '{print $0,'$m'+i++}' > Z
|
$ed - $em_table <<'A' | awk '{print $0,'$m'+i++}' > Z
|
||||||
1,/^$/d
|
1,/^$/d
|
||||||
1,/^$/d
|
1,/^$/d
|
||||||
1,/^$/g/ /s// /gp
|
1,/^$/g/ /s// /gp
|
||||||
|
@ -30,23 +31,23 @@ echo 'lpseu' `expr $i + $p - 1` >>X
|
||||||
i=`wc -l <Z`
|
i=`wc -l <Z`
|
||||||
echo 'lmnem' `expr $i + $m - 1` >>X
|
echo 'lmnem' `expr $i + $m - 1` >>X
|
||||||
|
|
||||||
ed - X <<'A' > $h/em_spec.h
|
$ed - X <<'A' > $h/em_spec.h
|
||||||
g/^/s//#define sp_/p
|
g/^/s//#define sp_/p
|
||||||
A
|
A
|
||||||
|
|
||||||
ed - Y <<'A' > $h/em_pseu.h
|
$ed - Y <<'A' > $h/em_pseu.h
|
||||||
g/ \(.*\) .*/s// \1/
|
g/ \(.*\) .*/s// \1/
|
||||||
g/\(.*\) \(.*\)/s//#define ps_\1 \2/p
|
g/\(.*\) \(.*\)/s//#define ps_\1 \2/p
|
||||||
A
|
A
|
||||||
|
|
||||||
ed - Z <<'A' > $h/em_mnem.h
|
$ed - Z <<'A' > $h/em_mnem.h
|
||||||
g/ .* /s// /
|
g/ .* /s// /
|
||||||
g/\(.*\) \(.*\)/s//#define op_\1 \2/p
|
g/\(.*\) \(.*\)/s//#define op_\1 \2/p
|
||||||
A
|
A
|
||||||
|
|
||||||
(
|
(
|
||||||
echo 'char em_pseu[][4] = {'
|
echo 'char em_pseu[][4] = {'
|
||||||
ed - Y <<'A'
|
$ed - Y <<'A'
|
||||||
g/\(...\).*/s// "\1",/p
|
g/\(...\).*/s// "\1",/p
|
||||||
A
|
A
|
||||||
echo '};'
|
echo '};'
|
||||||
|
@ -54,7 +55,7 @@ echo '};'
|
||||||
|
|
||||||
(
|
(
|
||||||
echo 'char em_mnem[][4] = {'
|
echo 'char em_mnem[][4] = {'
|
||||||
ed - Z <<'A'
|
$ed - Z <<'A'
|
||||||
g/\(...\).*/s// "\1",/p
|
g/\(...\).*/s// "\1",/p
|
||||||
A
|
A
|
||||||
echo '};'
|
echo '};'
|
||||||
|
@ -63,7 +64,7 @@ echo '};'
|
||||||
(
|
(
|
||||||
echo '#include <em_flag.h>
|
echo '#include <em_flag.h>
|
||||||
char em_flag[] = {'
|
char em_flag[] = {'
|
||||||
ed - Z <<'A' | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
|
$ed - Z <<'A' | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
|
||||||
g/^... /s///
|
g/^... /s///
|
||||||
g/ .*/s///
|
g/ .*/s///
|
||||||
g/\(.\)\(.\)/s//PAR_\1 | FLO_\2/
|
g/\(.\)\(.\)/s//PAR_\1 | FLO_\2/
|
||||||
|
|
|
@ -8,7 +8,7 @@ case x$# in
|
||||||
exit 1
|
exit 1
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
ed -s $2 << A
|
$ED -s $2 << A
|
||||||
1,/^\$/d
|
1,/^\$/d
|
||||||
1,/^\$/d
|
1,/^\$/d
|
||||||
1,/^\$/g/^\(...\) [$1].*/s//\\1/gp
|
1,/^\$/g/^\(...\) [$1].*/s//\\1/gp
|
||||||
|
|
|
@ -2,6 +2,7 @@ normalrule {
|
||||||
name = "c_mnem_narg_h",
|
name = "c_mnem_narg_h",
|
||||||
ins = {
|
ins = {
|
||||||
"./m_C_mnem_na",
|
"./m_C_mnem_na",
|
||||||
|
"util/cmisc+ed",
|
||||||
"h/em_table",
|
"h/em_table",
|
||||||
"./argtype"
|
"./argtype"
|
||||||
},
|
},
|
||||||
|
@ -15,6 +16,7 @@ normalrule {
|
||||||
name = "c_mnem_h",
|
name = "c_mnem_h",
|
||||||
ins = {
|
ins = {
|
||||||
"./m_C_mnem",
|
"./m_C_mnem",
|
||||||
|
"util/cmisc+ed",
|
||||||
"h/em_table",
|
"h/em_table",
|
||||||
"./argtype"
|
"./argtype"
|
||||||
},
|
},
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
EM_TABLE=$1
|
export ED=$1
|
||||||
ARGTYPE=$2
|
EM_TABLE=$2
|
||||||
|
ARGTYPE=$3
|
||||||
echo "switch(p->em_opcode) {"
|
echo "switch(p->em_opcode) {"
|
||||||
for i in - cdflnorswz p b
|
for i in - cdflnorswz p b
|
||||||
do
|
do
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
EM_TABLE=$1
|
#!/bin/sh
|
||||||
ARGTYPE=$2
|
export ED=$1
|
||||||
|
EM_TABLE=$2
|
||||||
|
ARGTYPE=$3
|
||||||
list=`$ARGTYPE w $EM_TABLE`
|
list=`$ARGTYPE w $EM_TABLE`
|
||||||
echo "switch(p->em_opcode) {"
|
echo "switch(p->em_opcode) {"
|
||||||
for i in $list
|
for i in $list
|
||||||
|
|
|
@ -23,3 +23,9 @@ definerule("tabgen",
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
)
|
)
|
||||||
|
|
||||||
|
cprogram {
|
||||||
|
name = "ed",
|
||||||
|
srcs = { "./ed.c" }
|
||||||
|
}
|
||||||
|
|
||||||
|
|
2199
util/cmisc/ed.c
Normal file
2199
util/cmisc/ed.c
Normal file
File diff suppressed because it is too large
Load diff
|
@ -14,12 +14,13 @@ normalrule {
|
||||||
name = "keywords",
|
name = "keywords",
|
||||||
ins = {
|
ins = {
|
||||||
"./cvtkeywords",
|
"./cvtkeywords",
|
||||||
|
"util/cmisc+ed",
|
||||||
"./keywords",
|
"./keywords",
|
||||||
matching(filenamesof(cggparser), "%.h$")
|
matching(filenamesof(cggparser), "%.h$")
|
||||||
},
|
},
|
||||||
outleaves = { "enterkeyw.c" },
|
outleaves = { "enterkeyw.c" },
|
||||||
commands = {
|
commands = {
|
||||||
"%{ins[1]} %{ins[2]} %{ins[3]} %{outs[1]}"
|
"%{ins[1]} %{ins[2]} %{ins[3]} %{ins[4]} %{outs[1]}"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
: '$Id$'
|
: '$Id$'
|
||||||
|
|
||||||
grep '^#' $2 >tokendefs
|
grep '^#' $3 >tokendefs
|
||||||
ed -s $1 > $3 <<'!Funky!Stuff!'
|
$1 -s $2 > $4 <<'!Funky!Stuff!'
|
||||||
g/^#/d
|
g/^#/d
|
||||||
1,$s/\([^ ]*\)[ ][ ]*\(.*\)/ sy_p=lookup("\1",symkeyw,newsymbol);sy_p->sy_value.syv_keywno=\2;/
|
1,$s/\([^ ]*\)[ ][ ]*\(.*\)/ sy_p=lookup("\1",symkeyw,newsymbol);sy_p->sy_value.syv_keywno=\2;/
|
||||||
1i
|
1i
|
||||||
|
@ -18,8 +18,7 @@ enterkeyw() {
|
||||||
$a
|
$a
|
||||||
}
|
}
|
||||||
.
|
.
|
||||||
,p
|
1,$p
|
||||||
q
|
|
||||||
!Funky!Stuff!
|
!Funky!Stuff!
|
||||||
rm tokendefs
|
rm tokendefs
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue