Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Improves performance of pruneStates by modifying states in place | Charlie Stanton | 2023-04-25 | 1 | -5/+7 |
| | |||||
* | Refines storing and loading to use ids generated when the subex is compiled ↵ | Charlie Stanton | 2023-04-25 | 5 | -70/+120 |
| | | | | instead of the runes | ||||
* | Simplify the OutputStack, improves performance by simplifying from an ↵ | Charlie Stanton | 2023-04-24 | 1 | -25/+21 |
| | | | | interface to a single struct | ||||
* | Adds a check to end subex execution early if no viable branches remain | Charlie Stanton | 2023-04-24 | 1 | -0/+3 |
| | |||||
* | Improves performance of reading JSON strings | Charlie Stanton | 2023-04-24 | 1 | -42/+39 |
| | |||||
* | WalkItems are now made of Atoms instead of WalkValues, and I have rolled my ↵ | Charlie Stanton | 2023-04-24 | 3 | -295/+417 |
| | | | | | | own JSON parser and serialiser These changes improve performance | ||||
* | Remove redundant subex/main.main function | Charlie Stanton | 2023-04-24 | 1 | -49/+0 |
| | |||||
* | Replaces the interfaces implementation of Atom with a tagged union based ↵ | Charlie Stanton | 2023-04-21 | 5 | -82/+157 |
| | | | | implementation | ||||
* | Replace implementation of Atomise to improve performance | Charlie Stanton | 2023-04-21 | 1 | -16/+29 |
| | |||||
* | All registers are now lists of atoms instead of lists of values | Charlie Stanton | 2023-04-21 | 2 | -19/+30 |
| | | | | This is to reduce the amount of translating between them that needs to be done | ||||
* | Improves performance by being more explicit about memory allocation in walk.go | Charlie Stanton | 2023-04-21 | 1 | -29/+32 |
| | |||||
* | Changes the implementation of Atomise and Compound to no longer use goroutines | Charlie Stanton | 2023-04-21 | 4 | -123/+80 |
| | | | | This results in a massive performance boost, ~4x speedup | ||||
* | Add :xyz: replacement syntax that removes whatever is before it and inserts ↵ | Charlie Stanton | 2023-04-21 | 3 | -5/+41 |
| | | | | whatever is inside it | ||||
* | Adds String methods to all SubexASTs for debugging purposes | Charlie Stanton | 2023-04-21 | 1 | -0/+51 |
| | |||||
* | Add a and A commands for global substitution | Charlie Stanton | 2023-04-21 | 2 | -4/+12 |
| | |||||
* | Radically changes precedences so concatenation is now the strongest | Charlie Stanton | 2023-04-21 | 1 | -13/+13 |
| | | | | We'll see if this sticks | ||||
* | Add ^xyz^ as a shorthand for ="xyz"= in subex | Charlie Stanton | 2023-04-21 | 2 | -8/+19 |
| | |||||
* | Add subex syntax to copy across booleans, numbers, strings and values | Charlie Stanton | 2023-04-21 | 3 | -1/+137 |
| | |||||
* | Adds some shorthands for substituting the beginning and end of the path register | Charlie Stanton | 2023-04-20 | 2 | -16/+53 |
| | |||||
* | Properly exports all SubexASTs | Charlie Stanton | 2023-04-20 | 2 | -59/+59 |
| | |||||
* | Replaces the inflexible delete all with separate DeleteValue and DeletePath ↵ | Charlie Stanton | 2023-04-20 | 2 | -4/+10 |
| | | | | commands | ||||
* | Add ~xyz~ shorthand for =`xyz`= | Charlie Stanton | 2023-04-20 | 1 | -1/+10 |
| | |||||
* | Add a shorthand for subexes that start and end with `, ~, = or " | Charlie Stanton | 2023-04-20 | 1 | -1/+7 |
| | |||||
* | Fix bug that would crash if given an empty subex | Charlie Stanton | 2023-04-20 | 1 | -1/+5 |
| | |||||
* | Remove the @, ~ and # syntax for terminal literals | Charlie Stanton | 2023-04-20 | 1 | -30/+0 |
| | |||||
* | Replaces the start and end terminals of strings with a single terminal, with ↵ | Charlie Stanton | 2023-04-20 | 2 | -16/+17 |
| | | | | " as a literal for it | ||||
* | Change output syntax to =xyz= instead of "xyz" | Charlie Stanton | 2023-04-20 | 1 | -3/+3 |
| | | | | This frees up " to be used for a string terminal literal | ||||
* | Adds a substitute path command: S | Charlie Stanton | 2023-04-20 | 3 | -52/+44 |
| | |||||
* | Adds non-string literal syntax to subex | Charlie Stanton | 2023-04-20 | 2 | -0/+89 |
| | |||||
* | Remove filters and various commands that are no longer wanted | Charlie Stanton | 2023-04-20 | 6 | -720/+4 |
| | | | | These have all been made redundant by the incredible substitute command | ||||
* | Remove the need for a semicolon after each command | Charlie Stanton | 2023-04-20 | 2 | -11/+3 |
| | |||||
* | Add commands to append to and swap with the path and X registers | Charlie Stanton | 2023-04-20 | 2 | -1/+33 |
| | |||||
* | Adds the noop command 'o' | Charlie Stanton | 2023-04-19 | 1 | -0/+2 |
| | |||||
* | Adds casting all other types to strings by simply putting them in a string | Charlie Stanton | 2023-04-19 | 1 | -0/+8 |
| | |||||
* | Upgrades the substitute command to also act as a filter | Charlie Stanton | 2023-04-19 | 2 | -4/+20 |
| | | | | Substitute now captures the command after it and only runs it if the substitution is a success | ||||
* | Implements subex substitutions for the value register | Charlie Stanton | 2023-04-19 | 1 | -1/+17 |
| | |||||
* | Replaces the workspace with 3 distinct registers: path, value and xreg | Charlie Stanton | 2023-04-19 | 3 | -28/+65 |
| | | | | | | workspace contained a list of WalkItems, pairs of paths and values. The new system can still hold a list of values but only one path, which is in itself a list of values. The X register is miscellaneous. All 3 hold a list of values (which are JSON tokens) | ||||
* | Adds parsing substitute commands, though executing them currently does nothing | Charlie Stanton | 2023-04-19 | 5 | -5/+66 |
| | |||||
* | Changes the parsing API for subex to be more suitable to being part of a ↵ | Charlie Stanton | 2023-04-19 | 3 | -54/+60 |
| | | | | larger program | ||||
* | Adds a dummy method to atom so the compiler checks that only valid atoms are ↵ | Charlie Stanton | 2023-04-19 | 2 | -11/+27 |
| | | | | allowed | ||||
* | Adds the NOT operator | Charlie Stanton | 2023-04-19 | 3 | -0/+41 |
| | |||||
* | Adds the reciprocal operator | Charlie Stanton | 2023-04-19 | 3 | -0/+51 |
| | |||||
* | Fixes internal error messages for arithmetic functions | Charlie Stanton | 2023-04-19 | 1 | -4/+4 |
| | |||||
* | Adds the negate operator | Charlie Stanton | 2023-04-19 | 3 | -0/+49 |
| | | | | Negates all of the numbers produced by its content subex | ||||
* | Combines sum and product into an arithmetic state that contains a function ↵ | Charlie Stanton | 2023-04-19 | 3 | -115/+101 |
| | | | | | | for it's operation Creates arithmetic.go which will house all of these functions | ||||
* | Adds product/and operator | Charlie Stanton | 2023-04-19 | 3 | -22/+87 |
| | |||||
* | Adjusts the sum operator to act as boolean OR when all inputs are booleans | Charlie Stanton | 2023-04-19 | 1 | -5/+15 |
| | |||||
* | Replaces a few instances of SubexStates with pointers as they should be | Charlie Stanton | 2023-04-19 | 2 | -2/+2 |
| | | | | This potentially avoids bugs/errors and also improves the performance of pruning | ||||
* | Changes parser so the storing operator is postfix instead of prefix | Charlie Stanton | 2023-04-19 | 1 | -14/+10 |
| | |||||
* | Replaces the parent/child implementation for operators like store and sum ↵ | Charlie Stanton | 2023-04-19 | 3 | -168/+119 |
| | | | | | | | | | with an output stack Previously a store state was a parent of another state machine that it would run inside of itself in order to capture the output to be stored. This was limited as the greedyness of the child would not be transferred to the parent. The new implementation gives states more control over the output state and turns it into a stack. By pushing to the stack before the child and popping afterwards, all of the child's output can be retrieved while the child is very much part of the complete machine. |