baum

view baum.1 @ 51:7d7abe88e71b

"input" node is now "create" node and can handle more than user input now
author meillo@marmaro.de
date Sun, 02 Mar 2008 16:17:18 +0100
parents f9fc4c4f9e3d
children 201b4603671a
line source
1 .TH baum 1 "2008-03-01" "baum 0.4"
2 .SH NAME
3 baum \- an esoteric programming language
7 .SH SYNOPSIS
8 .B baum
9 [\-v]\ <file>
13 .SH DESCRIPTION
14 .B baum
15 is an interpreter for the baum programming language which is an experiment to create an esoteric programming language.
17 Source code is a representation of a tree in which every node is a command or data.
19 baum is only an experiment and the functionality is (currently) very restricted.
24 .SH OPTIONS
26 .TP
27 .BI \-v
28 Verbose output (All verbose output goes to stderr)
30 .TP
31 .BI \-\-help
32 Print usage information
34 .TP
35 .BI \-\-version
36 Print version information
43 .SH CONCEPT
45 baum programs are represented as nodes in a tree structure. Nodes are of specific kind and contain a value.
47 The tree is processed recursive starting at the root node. Every node controls it's sons and should only know them; while most nodes only use their leftmost son.
49 Each node returns a value to it's parent. (The root node returns an exit code to the shell.) The internal value of the node could be used in any useful way, but only inside the node.
51 All values in the language (return values, expected return values and in-node values) should be of the same type, so that every combination of nodes is possible.
53 Nodes can modify the tree, but should do this only on it's brothers or better only through it's rightmost brother.
57 .SH SOURCE CODE
59 Source code are plain text files with one node per line representing the tree. The indention controls in which level in the tree the node is. Indention can be made with SPACE or with TAB characters. Every character means one level.
61 Empty lines and everything vom the hash symbol (`#') to the end of the line is ignored.
63 .B An example that echoes (and returns) `42':
65 .nf
66 # comment
67 print(0)
68 sum(0) #comment
69 number(40)
70 number(2)
71 .fi
74 .SH NODES
76 .TP
77 .B create
78 Creates a new number node as last brother. The value of the new node is ether read from standard input (if the node has no son), or the return value of the first son. Returns 0 always.
80 .TP
81 .B number
82 Executes it's leftmost son. Returns the internal value.
84 .TP
85 .B print
86 Prints the return value of it's leftmost son. Ether as char (if the internal value is 99), or as number otherwise. Returns the return value of the leftmost son (passes through).
88 .TP
89 .B sum
90 Executes all of it's sons. Returns the sum of their return values.
92 .TP
93 .B times
94 Copies everything below the node and pastes it as last brother(s). Returns 0 always.
101 .SH ERRORS
103 You have to keep in mind, that valid programs that run successful can return exit codes different from zero too! Each program returns the return value of the root node to the shell. If you don't want your program doing this, just set a `number(0)' node as root, and put everything else below.
105 .TP
106 .BI 1
107 common error
109 .TP
110 .BI 3
111 no or more than one source file given
113 .TP
114 .BI 4
115 invalid node
117 .TP
118 .BI 5
119 indention over more than one level
121 .TP
122 .BI 6
123 node name too long, or no value given
125 .TP
126 .BI 126
127 invalid command line options
131 .SH BUGS
132 Please report if you find some.
135 .SH CREDITS
136 Ju developed the idea of
137 .B baum
138 with me in a conversation. Actually it was his idea to use the tree as basic structure.
142 .SH AUTHOR
143 markus schnalke <meillo@marmaro.de> and julian forster