Home Page of Dennis J. Darland's Software Projects
Email: Mail To: pal at dennisdarland dot com
Programmer At Large
Comments welcome.
For other things I'm doing see
my home page.
Computer Languages I have available to me.
Some of the other software I have available to me.
As of 6/1/2014 this needs extensive revision.
I have Changed Linux OS's
MY SOFTWARE PROJECTS
- Work in Ruby
- My Arbitrary Precision Floating Point (APFP) Library and Rails Calculators
- My Software for Solving Systems of Ordinary Differential Equations (SODE)
- My Port of the Language Life (wild_life) to Linux and Cygwin
- Wildlife 1.02 as I obtained it in the 1990's and Notes on Port
- Wildlife 2.01 - My Port
- Wildlife 1.02 Documentation
- The Computer Language Bertrand
- The Computer Language Russell
- Russell as I obtained it in the 1990's - or the closest I have to it.
- The Russell Grammar as I received it
- Porting Efforts - Past - c, Ruby, Snobol
- Porting Efforts - Present - Unicon
- Bibliography relevant to Russell Language I can share.
- Examples of russell code.
- Bibliography relevant to Russell Language I have.
- Bibliography relevant to Russell Language I do not have.
- Russell - Additional Relevant Bibliography that I have
- My Notes on Porting Russell etc.
- The Computer Language Russell2 - Just an Idea so far
- My Health Data Analysis Software
- Work in Java
- Work in Ruby.
- My Arbitrary Precision Floating Point (APFP) Library and Rails Calculators
- My Systems of Differential Equations Solver (using Long Taylor Series)
- Port of wild_life to 64 bit SUSE Linux and Cygwin
- Starting point Wildife 1.02 as I received it in 1990's and Porting Notes
- Life-1.02.tar.gz
- Also located port I had done to OS2 in 1990's
- Main points of Port (mostly from memory after the fact - I should have taken notes!)
- Changed from varargs to stdargs - Used code in OS2 Port for this.
- Added proper prototypes.
- Replaced compare functions as arguments with longs indicating sort of compare (for find and inserts).
- Last required converting integers to strings before compare & result back to string afterwards - except special handling for NULL.
- Added many checks for NULL pointers
- 3/6/2015 Found in porting to cygwin only big problem was archive had files same except for case and windows is not case sensitive.
- Also there were 3 files within Life that required case sensitivity - tho others were from my old OS/2 port.
- I eliminated all conflicts by getting rid of the os/2 files and changing other names.
- Changed how memory allocated for gamma_table
- Wild_life 2.01
- Tarball of wildlife 2.01
- Also Short Wild Life 2.01 Video Demo (of card game pitch programmed in wild_life)
- Wild_life 2.01 Seems to work file under 64 bit SUSE Linux and both 32 and 64 bit cygwin.
- Will need a little attention to paths to install & get working and the install process (configure) has not been updated. (Not enough time yet & not tested enough)
- DO NOT TRY to use "configure"
- Copyright info says it may be modified & redistributed - as long as that info is preserved and it is not for profit.
- Life Documentation:
- Life Handbook
- Life Toolkit
- Context 1
- Context 2
- Context 3
- Context def
- Dumant
- Meyer
- Van Roy
- c_life
- Debug
- Parser
- Profiler
- Shell
- Sys
- Tokenizer
- wildlife doxygen info
- Bertrand
- Found newer version of Bertrand (still written in c - and got working (5/24/2014)
- Bertand tarball - works under SUSE Linux 13.1 (no graphics I think) All I changed was the Makefile, I think
- Copyright info says it may be modified & redistributed - as long as that info is preserved and it is not for profit.
- Bertrand Documentation
- Bertrand Documentation
- Bertrand Guide
- Bertrand Reference
- Bertrand License
- Bertrand README
- Bertrand README2
- Bertrand book
- bertrand doxygen info
- Work on russell
- Russell as I received it in 1990's and Porting Notes
russell.tar.gz
russell doxygen info
- Russell Grammar as I received it in 1990's
- grammar.y - input file to flex and bison (at that time lex and yacc) to create lexical scanner and parser
- lex.yy.c - scanner
- grammar.tab.h - header file for parser
- grammar.tab.c - parser
- russell.grammar report - bison report file on russell
- Porting Efforts - Past - None of these are nearly complete or functional at all.
C, Ruby, Snobol
- Tarballs of Ruby port, etc.
- Tarball of progress on converting russell from c to ruby(as of 7/6/2014 )
- Tarballs of snobol4 port, etc.
- Snobol program for indenting snobol programs (9/10/2015)
- The russell.sno program (as of 9/18/2015)
- A simple russell test program (as of 9/18/2015)
- Scanner Table for test program (as of 9/18/2015)
- Parser Table for test program (as of 9/18/2015)
- Statistics from russell.sno for simple test program (as of 9/18/2015)
- Nodes data from test (as of 9/18/2015)
- Lists data from test (as of 9/18/2015)
- Debugging data from test (as of 9/18/2015)
- Error data from test (as of 9/18/2015)
- Output of Russell test (as of 9/18/2015)
- Statistics from snobol for russell.sno Test (as of 9/18/2015)
- 9/18/2015 - Suspended port of russell for port of flex & sbison - (sflex & sbison) - to be used. More on them to be added on this page later.
- 9/21/2015 - My intent had been to modify flex & bison to generate snobol4 code.
- However in studying this I learned there is some support already for generating java.
- Then investigating that, I found there are other applications of that sort for java.
- Java would be superior to snobol for a number of reasons - so I am going to investigate this.
- One reason is the global nature of variables etc in snobol.
- Another is java is much more like the C russell was originally written in.
- Another is the garbage collection that java does automatically.
- However, again, my study has paid off.
- Porting to Unicon - Lexical Analysis and Parsing Seem to Work
- It ended up that I decided to use Unicon rather than Java:
Source Code: (as of 10/6/2015)
It's too hard to update this - I am providing tarballs further below.
- The Grammar files:
- pass1/parser/grammar.orig.c.y.txt
- NOTES.gmr.edit.txt.txt
- pass1/parser/grammar.edit.y.txt
- fixgram.sno.txt
- pass1/parser/grammar.icn.txt
- Unicon Source
- defs.tmp.icn.txt
- global_vars.tmp.icn.txt
- globals_init.tmp.icn.txt
- main.tmp.icn.txt
- mine.tmp.icn.txt
- pass1/scanner/scan.tmp.icn.txt
- pass1/scanner/scan_sep_inc.tmp.icn.txt
- pass1/parser/grammar.fixed.tmp.icn.txt
- pass1/parser/initids.tmp.icn.txt
- pass1/applinfer/precedence.tmp.icn.txt
- pass1/stt/stt.tmp.icn.txt
- pass5d/RIC.tmp.icn.txt
- stree/ststructs_cls.tmp.icn.txt
- stree/mknode.tmp.icn.txt
- pass1/applinfer/mkappl.tmp.icn.txt
- stree/Array.tmp.icn.txt
- pass1/applinfer/mkappl2.tmp.icn.txt
- pass1/applinfer/outermost_op.tmp.icn.txt
- pass1/applinfer/single_arg.tmp.icn.txt
- pass1/applinfer/cand_cond.tmp.icn.txt
- pass1/applinfer/cor_cond.tmp.icn.txt
- sigio/sig_out.tmp.icn.txt
- sigio/sig_in.tmp.icn.txt
- End Unicon Source
- mknode.icn - make nodes
- NOTES on Unicon and iyacc
- I found I had to remove comments from the rules section of grammar.y for iyacc
- I found many closing "}"'s were missing in the code iyacc generated
- I had to move local variable declarations - they can go after any "{" in c or anywhere in c++, but must go at top of procedure in unicon
- At this point, the scanning & parsing seems to work - I haven't started on code generation yet.
- Tests (10/11/2015) - Lexical Analysis and Parsing
- Misc russell code - output
- misc.r.txt
- urusserr.tmp.txt
- urussout.tmp.txt
- progress.tmp.txt
- reduce.tmp.txt
- ccode.tmp.txt
- stats.tmp.txt
- lists.tmp.txt
- nodes.tmp.txt
- cons.tmp.txt
- tree.tmp.txt
- sym.tmp.txt
- russ_info.tmp.txt
- Factorial function in russell
- fact.r.txt
- urusserr.tmp.txt
- urussout.tmp.txt
- progress.tmp.txt
- reduce.tmp.txt
- ccode.tmp.txt
- stats.tmp.txt
- lists.tmp.txt
- nodes.tmp.txt
- cons.tmp.txt
- tree.tmp.txt
- sym.tmp.txt
- russ_info.tmp.txt
- Tarball of Russell language in Unicon as of 10/6/2015
- Tarball of Russell language in Unicon as of 10/11/2015
- Tarball of Russell language in Unicon as of 10/12/2015
- Tarball of Russell language in Unicon as of 10/15/2015
- Tarball of Russell language in Unicon as of 10/16/2015
- Tarball of Russell language in Unicon as of 10/19/2015
- Plans for Code Generation
- I have begun to study the runtime code
- I think it will be much simpler in unicon
- I think the difficulties with garbage collection will go away with unicon's garbage collection
- I will not need to keep lists of things to be freed.
- I think I won't need to worry about type conversions either.
- I did enough with the runtime to realize I cannot do much without data to drive it - which will rely on code generation.
- But I need to have at least a general idea of the runtime in order to know what is important in the code generation.
- I suspect some (but not much) of what I have done is unnecessary because of unicon's automatic garbage collection
- I will study the runtime a little more then switch back to porting the code generation
- Russell Documentation that I can Share
- What is this documentation?
- Introduction to Russell
I'm working on editing this Introduction - there is much more in this than I realized - I should have worked more on it before.
I will provide a pdf of the result here soon.
Also I obtained the bibliography below from it.
- Changes to Russell
- Initial Environment for Russell
- Installation (old directions) for Russell
- Pass1 What file for Russell
- Pass1 Readme file for Russell
- Pass2 Readme file for Russell
- Pass3 Readme file for Russell
- Pass4 Readme file for Russell
- Pass5c Readme file for Russell
- Pass5d Readme file for Russell
- Pass5d op_codes.h file for Russell
- doxygen documentation generated for russell from code I started with
- Examples of russell code
- callcc_test.r.txt
- complex.r.txt
- compose.r.txt
- enum_test.r.txt
- extend_test.r.txt
- extern_test.r.txt
- fact.r.txt
- ffact.r.txt
- fib.r.txt
- fixpoint.r.txt
- fp_test.r.txt
- gauss.r.txt
- identity.r.txt
- lazy_sexpr.r.txt
- lazy_test.r.txt
- lfib.r.txt
- memo.r.txt
- points.r.txt
- primes.r.txt
- print.r.txt
- psexpr.r.txt
- psexpr_test.r.txt
- rfib.r.txt
- self_appl.r.txt
- sep_test.r.txt
- sexpr.r.txt
- sig_test.r.txt
- squares.r.txt
- string_test.r.txt
- sum.r.txt
- tree.r.txt
- tree_test.r.txt
- typearg.r.txt
- Russell - Additional Bibliography that I have
- Boehm, Hans‐J., and Alan Demers, ‘‘Implementing Russell’’, Proceedings of the SIGPLAN ’86 Symposium on Compiler Construction, SIGPLAN Notices 21, 7, July 1986, pp. 186‐195.
- Boehm, H., Russell on‐line ‘‘rhelp’’ facility. Distributed with the Russell Compiler. (A version of this paper is available as ‘‘rhelp intro’’.)
- Demers, A. and J. Donahue, ‘‘Data Types, Parameters, and Type‐Checking’’. Proceedings, Seventh Annual Principles of Programming Languages Symposium, 1980, pp. 12‐23.
- Demers, A. and J. Donahue, ‘‘Type‐Completeness as a Language Principle’’. Proceedings, Seventh Annual Principles of Programming Languages Symposium, 1980, pp. 234‐244.
- Demers, A. and J. Donahue, ‘‘Making variables abstract: an equational theory for Russell’’. Proceedings, Tenth Annual Principles of Programming Languages Symposium, 1983.
- Donahue, J., and A. Demers, ‘‘Data Types are Values’’, ACM Transactions on Programming Languages and Systems 7, 3 (July 1985), pp. 426‐445.
- Dijkstra, E., A Discipline of Programming. Prentice‐Hall, 1976.
- Hook, Jim, ‘‘Understanding Russell ‐ A First Attempt’’, Semantics of Data Types, Proceedings, Springer Lecture Notes in Computer Science 173, 1984, pp. 69‐86.
- Stoy, J., Denotational Semantics: The Scott‐Strachey Approach to Programming Language Theory. MIT press, 1977. See esp. chapter 7.
- Russell - Additional Bibliography that I do not have
- Boehm, H., A. Demers, and J. Donahue, ‘‘An Informal Description of Russell’’. Technical Report 80‐430, Computer Science Department, Cornell University, 1980.
- Boehm, H., A Logic for the Russell Programming Language, Thesis, Cornell University, 1984.
- Demers, A., and J. Donahue, ‘‘Data Types are Values’’, Departmentof Computer Science, Cornell University, Technical Report TR79‐393, 1979.
- Demers, A. and J. Donahue, ‘‘The Semantics of Russell: An Exercise in Abstract Data Types’’. Technical Report 80‐431, Computer Science Department, Cornell University, 1980.
- Russell - Additional Relevant Bibliography that I have
- Aho, Alfred V., Ravi Sethi and Jeffrey D. Ullman, Compilers: Principles, Techniques and Tools. Addison-Wesley, 1988.
- Aho, Alfred V. and Jeffrey D. Ullman, Principles of Compiler Design. Addison-Wesley, 1977.
- Backus, J., ''Can Programming be Liberated from the von Neumann Style? A Functional Style and Its Algebra of Programs'', Communications of the ACM 21, 8 (August 1978), pp. 613-641.
- Cadenhead, Rogers, SAMS Teach Yourself Java 2 in 24 Hours, SAMS, 1999.
- Corre, Alan D,, Icon Programming for Humanists, 2nd Edition. Goal-Directed Press, 2010.
- Church, Alonzo, The Calculi of Lambda-Conversion. Princeton University Press, 1951.
- Daconta, Michael C., Al Saganich and Eric Monk, Java 2 and JavaScript for C and C++ Programmers, Revised Edition. Wiley, 1999.
- Dahl, O. J., E. W. Dijkstra and C. A. R. Hoare, Structured Programming, Academic Press, 1972
- Dijkstra, Edsger W., Selected Writings on Computing: A Personal Perspective, Springer-Verlag, 1982
- Flanagan, David, Java in a Nutshell, 3rd Edition. O'Reilly, 1999.
- Gimpel, James F., Algorithms in SNOBOL4 ("The Orange Book"), Catspaw, 1986.
- Griswold, Ralph E., The Macro Implementation of SNOBOL4. Freeman, 1972.
- Griswold, Ralph E. and Madge T. Griswold, A SNOBOL4 Primer. Prentice Hall, 1973.
- Griswold, Ralph E. and Madge T. Griswold, The Implementation of the Icon Programming Language, Princeton University Press, 1986.
- Griswold, Ralph E. and Madge T. Griswold, The Icon Programming Language, third edition, 1997.
- Griswold, R. E., J. F. Poage and I. P. Polonsky, The SNOBOL4 Programming Language, second edition, ("The Green Book"), Prentice-Hall, 1968.
- Griswold, Ralph E., String and List Processing in SNOBOL4: Techniques and Applications. Prentice-Hall, 1975.
- Jeffery, Mohamed, Pereda and Parlett, Programming with Unicon: Very high level object-oriented application and system programming. draft manuscript, 2002.
- Jeffrey, Clinton, ed. The Implementation of Icon and Unicon: a Compendium. draft manuscript, 2004.
- Josuttis, Nicolai M., The C++ Standard Library: A Tutorial and Reference. Addison Wesley, 1999.
- Kernighan, Brian W. and Dennis M. Richie, The C Programming Language, second edition. Prentice-Hall, 1988.
- Levine, John, flex and bison. O'Reilly, 2009.
- Lewis II, P. M., D. J. Rosenkrantz, and R. E. Stearns, Compiler Design Theory. Addison-Wesley, 1976.
- Maurer, W. Douglas, The Programmer's Introduction to SNOBOL. Elsevier, 1976.
- Paulson, L. C., ML for the WORKING PROGRAMMER. Cambridge, 1996.
- Steele Jr., Guy L., Common Lisp: The Language. Digital Press, 1984.
- Stroustrup, Bjarne, The C++ Programming Language, Third Edition. Addison Wesley, 1997.
- Ullman, Jeffrey D., Elements of ML Programming, Prentice Hall, 1994.
NOTES:
ML is a computer language I have which has some characteristics of Russell.
I am now working on porting Russell from C to SNOBOL4.
Common Lisp is a computer language with some relation to the lambda calculus and denotational semantics, etc.
flex is a Linux replacement for lex which was used generating Russell C code.
bison is a Linux replacement for yacc which was used generating Russell C code.
- My Notes on Russell and my porting efforts
- 5/24/2014 Worked on porting c code.
- 5/25/2014 Decided to try to port to Ruby
- I have made special version of ruby supporting goto (needed for code generated by bison)
- Work just begun - not optimistic
- 5/26/2014 Continue on Ruby port - not optimistic - but it is fun anyway.
- 6/4/2014 Going much better than expected - lexical box runs although not tested and part of pass 1 of parser - though much commented out for now.
- 6/11/2014 Continue to make much better progress than expected - was stuck at one point - but solved it and things seem to be going easier again
- 6/21/2014 Still making progress - but little hope of success.
- 7/6/2014 Giving up for now - I don't understand how it is supposed to work to tell what is going wrong - and I have other things I want to do more.
- Copyright info says it may be modified & redistributed - as long as that info is preserved and it is not for profit.
- Decided (8/23/2015) to go back to working on C version.
Main Reasons:
- I am not sure Ruby goto really works well.
- I learned a lot working on Ruby code I can use.
- I researched and found out gnu debugger does more than I realized - although it will require some learning.
- I found I really have a little more documentation than I had realized - I am working on formatting some of it better.
- Most modern languages I might use have no goto (which is used in code)>
- I need a project.
- After working on c port (8/24/2015), think Ruby may be better after all. Eliminate goto's somehow if necessary!!!
- Switched to porting to snobol4 a few days ago (as of 8/29/2015)
- The past few days I have been working on a snobol4 program to better format a snobol4 program (9/4/2015)
- This is useful both for formatting russell.sno and reviewing my knowledge of snobol4
- 9/10/2015 forward Notes on porting Russell from C to Snobol4
- 9/18/2015: I've decide to make modified versions of flex & bison to generate snobol4 instead of C. (reamed sflex and sbison)
- I have not wasted time attempting to modify C code ad this knowledge will be helpful.
- Doing this will have the great advantage that the input to sflex and sbison will be easier to modify if desired that the C code generated and then converted!!!
- Russell2
- 01:26:12 AM Thu, Feb 05 2015
- I've started a project of modifying Icon to be similar to what Russell was - I am calling it Russell2.
- So far I have installed Icon and modified it to create executables russell2t and russell2x.
- I also changed it to Russell2 Version 1.0.0
- I intend to slowly make changes to modify it to have syntax closer to Russell while letting much of Icon stay the same.
- It builds and runs (with new names) - I haven't run all the tests yet.
- Mostly I just want to do some programming - missing it. Don't expect to accomplish much.
- 07:21:53 PM Thu, Feb 05 2015
- Testing - fixed revision of icode.
- Tests work except cfuncs and extvals.
- Samples work except featues.
- Worked to male use src/common/typespec.txt
- Next need to use flex and bison.
- My health data analysis project - using snobol, unicon, c++, APL, and Maple:
My Heath Analysis Project
- Work in Java.
Java Quantum Mechanical Pinball Game.
I studied the code some again - I am not certain that it is quantum mechanically correct - but I am sure it has that sort of effect.
- Pinball Help
- JavaQm javadoc generated documentation
- Quantum Ball