|
|
1.1 ! root 1: # I-PSORT(1) ! 2: # ! 3: # Sort Icon procedures and declarations ! 4: # ! 5: # Ralph E. Griswold ! 6: # ! 7: # Last modified 4/27/83 ! 8: # ! 9: ! 10: procedure main() ! 11: local line, x, i, proctable, proclist, comments ! 12: comments := [] ! 13: proctable := table() ! 14: while line := read() do { ! 15: if line ? { ! 16: ="procedure" & # procedure declaration ! 17: tab(many(" ")) & ! 18: proctable[tab(upto("("))] := x := [] ! 19: } then { ! 20: while put(x,get(comments)) # save it ! 21: put(x,line) ! 22: i := 1 ! 23: while line := read() do { ! 24: put(x,line) ! 25: if line == "end" then break ! 26: } ! 27: } ! 28: # other declarations ! 29: else if line ? =("global" | "record" | "external") ! 30: then { ! 31: while write(get(comments)) ! 32: write(line) ! 33: } ! 34: else put(comments,line) ! 35: } ! 36: while write(get(comments)) ! 37: proclist := sort(proctable) # sort procedures ! 38: if *proclist > 1 then ! 39: every i := 1 to *proclist do # get main procedure to front ! 40: if proclist[i][1] == "main" then { ! 41: proclist := proclist[i+:1] ||| proclist[1:i] ||| proclist[i + 1:0] ! 42: break ! 43: } ! 44: every x := !proclist do { # output procedures ! 45: every write(!(x[2])) ! 46: } ! 47: end
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.