<- Back to shtanton's homepage
aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Completely rewrites the JSON parser to make more extensive use of slices and ↵Charlie Stanton2023-04-252-137/+317
| | | | decrease the number mallocs
* Separates JSON parsing code into its own fileCharlie Stanton2023-04-252-278/+285
|
* Refactor Atom and Value code out of walk.go and into separate filesCharlie Stanton2023-04-253-174/+185
|
* Fixes more README formattingCharlie Stanton2023-04-251-2/+2
|
* Fix README markdown formattingCharlie Stanton2023-04-251-6/+6
|
* Adds a draft READMECharlie Stanton2023-04-251-0/+166
|
* Make state.path immutable so it can be a reference instead of copied, ↵Charlie Stanton2023-04-252-12/+1
| | | | improving performance
* Now uses a buffered output for writing to improve performanceCharlie Stanton2023-04-252-20/+24
|
* Improves performance of pruneStates by modifying states in placeCharlie Stanton2023-04-251-5/+7
|
* Refines storing and loading to use ids generated when the subex is compiled ↵Charlie Stanton2023-04-255-70/+120
| | | | instead of the runes
* Simplify the OutputStack, improves performance by simplifying from an ↵Charlie Stanton2023-04-241-25/+21
| | | | interface to a single struct
* Adds a check to end subex execution early if no viable branches remainCharlie Stanton2023-04-241-0/+3
|
* Improves performance of reading JSON stringsCharlie Stanton2023-04-241-42/+39
|
* WalkItems are now made of Atoms instead of WalkValues, and I have rolled my ↵Charlie Stanton2023-04-243-295/+417
| | | | | | own JSON parser and serialiser These changes improve performance
* Remove redundant subex/main.main functionCharlie Stanton2023-04-241-49/+0
|
* Replaces the interfaces implementation of Atom with a tagged union based ↵Charlie Stanton2023-04-215-82/+157
| | | | implementation
* Replace implementation of Atomise to improve performanceCharlie Stanton2023-04-211-16/+29
|
* All registers are now lists of atoms instead of lists of valuesCharlie Stanton2023-04-212-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.goCharlie Stanton2023-04-211-29/+32
|
* Changes the implementation of Atomise and Compound to no longer use goroutinesCharlie Stanton2023-04-214-123/+80
| | | | This results in a massive performance boost, ~4x speedup
* Add :xyz: replacement syntax that removes whatever is before it and inserts ↵Charlie Stanton2023-04-213-5/+41
| | | | whatever is inside it
* Adds String methods to all SubexASTs for debugging purposesCharlie Stanton2023-04-211-0/+51
|
* Add a and A commands for global substitutionCharlie Stanton2023-04-212-4/+12
|
* Radically changes precedences so concatenation is now the strongestCharlie Stanton2023-04-211-13/+13
| | | | We'll see if this sticks
* Add ^xyz^ as a shorthand for ="xyz"= in subexCharlie Stanton2023-04-212-8/+19
|
* Add subex syntax to copy across booleans, numbers, strings and valuesCharlie Stanton2023-04-213-1/+137
|
* Adds some shorthands for substituting the beginning and end of the path registerCharlie Stanton2023-04-202-16/+53
|
* Properly exports all SubexASTsCharlie Stanton2023-04-202-59/+59
|
* Replaces the inflexible delete all with separate DeleteValue and DeletePath ↵Charlie Stanton2023-04-202-4/+10
| | | | commands
* Add ~xyz~ shorthand for =`xyz`=Charlie Stanton2023-04-201-1/+10
|
* Add a shorthand for subexes that start and end with `, ~, = or "Charlie Stanton2023-04-201-1/+7
|
* Fix bug that would crash if given an empty subexCharlie Stanton2023-04-201-1/+5
|
* Remove the @, ~ and # syntax for terminal literalsCharlie Stanton2023-04-201-30/+0
|
* Replaces the start and end terminals of strings with a single terminal, with ↵Charlie Stanton2023-04-202-16/+17
| | | | " as a literal for it
* Change output syntax to =xyz= instead of "xyz"Charlie Stanton2023-04-201-3/+3
| | | | This frees up " to be used for a string terminal literal
* Adds a substitute path command: SCharlie Stanton2023-04-203-52/+44
|
* Adds non-string literal syntax to subexCharlie Stanton2023-04-202-0/+89
|
* Remove filters and various commands that are no longer wantedCharlie Stanton2023-04-206-720/+4
| | | | These have all been made redundant by the incredible substitute command
* Remove the need for a semicolon after each commandCharlie Stanton2023-04-202-11/+3
|
* Add commands to append to and swap with the path and X registersCharlie Stanton2023-04-202-1/+33
|
* Adds the noop command 'o'Charlie Stanton2023-04-191-0/+2
|
* Adds casting all other types to strings by simply putting them in a stringCharlie Stanton2023-04-191-0/+8
|
* Upgrades the substitute command to also act as a filterCharlie Stanton2023-04-192-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 registerCharlie Stanton2023-04-191-1/+17
|
* Replaces the workspace with 3 distinct registers: path, value and xregCharlie Stanton2023-04-193-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 nothingCharlie Stanton2023-04-195-5/+66
|
* Changes the parsing API for subex to be more suitable to being part of a ↵Charlie Stanton2023-04-193-54/+60
| | | | larger program
* Adds a dummy method to atom so the compiler checks that only valid atoms are ↵Charlie Stanton2023-04-192-11/+27
| | | | allowed
* Adds the NOT operatorCharlie Stanton2023-04-193-0/+41
|
* Adds the reciprocal operatorCharlie Stanton2023-04-193-0/+51
|