adding algorithm debug statments. fixing / improving build
[Bookkeeping.git] / doc / BookkeepingSyntax.xml
blobacece29b428b3f14d49776b84b337207d1fe5b1a
3 <!-- S  x | y | z | S + S | S - S | S * S | S/S | (S)
5 -->
9 <expression/>
11 <terminal/>
13 <nonterminal/>
19 <!-- command -opts (token -opts(token))
21 -->
23 <expression>
25         <command/>
27         <token/>
29 </expression>
33 <command>
35         
37         <options/>
39         
41         <!-- a token inside of a command means a descriptor -->
43         <token>
45                 
47                 <options/>
49                 
51                 <!-- a token inside of a token means the actual XML -->
53                 <token/>
55         </token>
57 </command>
65 <!-- command -opts (token -opts(token)) -->
67 <!-- CREATE --> 
69 create(entry -entrynum -journal -date (
71         create(debit -entry -account -amount),
73         create(credit -entry -account -amount),
75         create(credit -entry -account -amount)
77 ));
79 create(journal -name(entry,entry,...));
81 create(transaction -date(entry,entry,...));
83 create(account -name -type -counterweight(debit|credit,...));
91 <!-- ADD
93 REMOVE
95 - this command has the same syntax as 'ADD' except the semantics are reversed 
97 REVERSE
99 - only <entry/> can be reversed. however the syntax is the same
101 --> 
103 add((load(journal -name)) entry, entry,...);
105 add((transaction) entry, entry,...);
107 add((entry) debit,...);
109 add((entry) credit,...);
111 add((account) debit,...);
113 add((account) credit,...);
121 <!-- LOAD -->
123 load(debit -id);
125 load(credit -id);
127 load(entry -id);
129 load(transaction -id);
131 load(journal -id | -name);
133 load(account -id | -name);
141 <!-- FIND 
143 Right now, there are no conditionals, so find will only return results that meet exactly the criteria.
147 Some conditionals might look like:
149 String          regex
151 Number          <, >, <=, >=, ==, !=
153 Date            <, >, <=, >=, ==, !=
155 --> 
157 find((token.literal) debit -entry -account -amount);
159 find((token.literal) credit -entry -account -amount);
161 find((token.literal) entry -entrynum -journal -date);
163 find((token.literal) transaction -date);
165 find((token.literal) journal -name);
167 find((token.literal) account -name -type -counterweight);
175 <!-- LIST --> 
177 list((token.literal) debit -entry -account -amount);
179 list((token.literal) credit -entry -account -amount);
181 list((token.literal) entry -entrynum -journal -date);
183 list((token.literal) transaction -date);
185 list((token.literal) journal -name);
187 list((token.literal) account -name -type -counterweight);
195 <!-- ?? UPDATE --> 
197 update((token.literal) debit -entry -account -amount);
199 update((token.literal) credit -entry -account -amount);
201 update((token.literal) entry -entrynum -journal -date);
203 update((token.literal) transaction -date);
205 update((token.literal) journal -name);
207 update((token.literal) account -name -type -counterweight);