Commit Graph

110 Commits

Author SHA1 Message Date
Tangent Wantwight e538471611 Don't consume the end pattern multiple times in script pattern 2023-08-25 19:20:26 -04:00
Tangent Wantwight 9ce7ec2598 Ensure bare words don't start with " or { 2023-08-25 19:20:26 -04:00
Tangent Wantwight b031381ff7 Factor out script/command/word/bare-word patterns to permit making bracket variations 2023-08-25 19:20:26 -04:00
Tangent Wantwight 6cce5bb6ed Move Command/Script to broader-scope type 2023-08-25 19:20:22 -04:00
Tangent Wantwight a4e65e567a Reorganize tests 2023-08-25 11:13:00 -04:00
Tangent Wantwight ab4cd761b8 Implement "quoted words" 2023-08-23 01:09:56 -04:00
Tangent Wantwight 8c3953cdf0 Implement \ suppression in {} 2023-08-21 23:57:27 -04:00
Tangent Wantwight 2261d18d56 Write brace tests 2023-08-10 21:51:23 -04:00
Tangent Wantwight 308f586dad Add concept of "enchanted" word
An enchanted word has provenance of appearing directly in source code as-written, not the result of interpolations, quotes, or escapes.
2023-08-06 23:18:13 -04:00
Tangent Wantwight 37df46381b Make the existing visual test a snapshot unit test. 2023-08-06 23:10:12 -04:00
Tangent Wantwight f3eb9dee6d Fix newline folding test, and newline folding replacement (not replaced yet but brace tests will cover it) 2023-08-06 20:18:38 -04:00
Tangent Wantwight b8d48ef834 Expand test cases 2023-08-06 19:52:00 -04:00
Tangent Wantwight 36b6460357 noEmit tsc 2023-08-06 02:40:02 -04:00
Tangent Wantwight e585f315bb First jest test 2023-08-06 02:38:52 -04:00
Tangent Wantwight ad2e7ad196 DOM-less escapeHTML implementation 2023-08-06 02:38:42 -04:00
Tangent Wantwight 62df86acb4 Init Jest 2023-08-06 02:38:22 -04:00
Tangent Wantwight e9fbf137c7 Fixup types to make TS happy 2023-08-06 02:11:06 -04:00
Tangent Wantwight 8fc2892630 Port to TS 2023-08-05 01:09:33 -04:00
Tangent Wantwight 8b4584eb48 Reorganize files for TS conversion 2023-08-05 01:07:03 -04:00
Tangent Wantwight 56d7826aad Add deps for esbuild + jest 2023-08-04 23:48:50 -04:00
Tangent Wantwight 57c65b10f2 Rereorganize grammar for better feedback 2023-08-04 23:29:53 -04:00
Tangent Wantwight 1c04d8dece Attempt to merge applicable multiple expecteds at the same spot.
Avoid counting a successful capture as an error at the current locaiton.
2023-08-04 20:28:26 -04:00
Tangent Wantwight 0c90b45d3a Remove Hint hack 2023-08-04 19:25:57 -04:00
Tangent Wantwight 797d3cc6b2 Try to improve error location identification 2023-08-04 19:25:47 -04:00
Tangent Wantwight ef59915add Refactor error reporting to allow ignored errors to be reported on a successful pattern match 2023-08-04 18:31:21 -04:00
Tangent Wantwight 4b982a64ef Rearrange grammer 2023-08-04 17:43:51 -04:00
Tangent Wantwight 5eb7acd8b1 Better comment logic 2023-08-04 17:43:42 -04:00
Tangent Wantwight b287b1d9b6 WIP hack combinator to try and improve error messages. 2023-08-04 17:43:11 -04:00
Tangent Wantwight 61d967b6f1 Fix handling text-after-closing-brace and trailing command whitespace 2023-08-04 15:52:50 -04:00
Tangent Wantwight 0d469abffc Rearrange grammar to report text-after-closing-brace errors 2023-08-04 15:19:36 -04:00
Tangent Wantwight ee618fa244 Add some expects() labels for clarity 2023-08-04 11:30:41 -04:00
Tangent Wantwight 8214f05fe3 Choose() returns the expected message from the alternative that made the furthest progress, if any did. 2023-08-04 02:18:07 -04:00
Tangent Wantwight 3bb125dd8c Regex pattern returns custom expects() if set 2023-08-04 02:17:16 -04:00
Tangent Wantwight 5c5884a39b Make End patterns instanced so expects() can be used on them 2023-08-04 01:33:40 -04:00
Tangent Wantwight 50df27c50e Add more ability to communicate what was expected in the error 2023-08-04 01:24:02 -04:00
Tangent Wantwight 58cd1a56b2 Output fancier error message on parse error 2023-08-04 00:26:15 -04:00
Tangent Wantwight 7ad94d13a6 Report parse error position 2023-08-04 00:18:17 -04:00
Tangent Wantwight 0a7e051ab5 Match entire script from a top level grammar symbol 2023-08-03 23:15:14 -04:00
Tangent Wantwight 36f78982e6 Make pattern mapping chained 2023-07-29 16:26:41 -04:00
Tangent Wantwight e61485012e Make thunk used for recursive braces more understandable 2023-07-29 14:50:49 -04:00
Tangent Wantwight 9b87906c09 Break out Peg namespace to permit self-reference 2023-07-29 14:39:11 -04:00
Tangent Wantwight 97aca502a8 Use locals for readability 2023-07-29 13:50:13 -04:00
Tangent Wantwight 9333357e44 Start matching {braces} and nested braces 2023-07-29 13:41:47 -04:00
Tangent Wantwight 88497965b3 Parse Commands with Peg 2023-07-29 01:45:55 -04:00
Tangent Wantwight a3cdc53330 Add End to Peg 2023-07-29 01:45:34 -04:00
Tangent Wantwight 347af33bf1 Use PEG to strip whitespace/comments before commands 2023-07-29 01:14:00 -04:00
Tangent Wantwight 4430580412 Add AtLeast to Peg helpers 2023-07-29 01:13:38 -04:00
Tangent Wantwight 64c2d1c35d Namespace Notcl 2023-07-29 00:37:25 -04:00
Tangent Wantwight 71581253d5 factor out helpers for PEG parsing 2023-07-29 00:26:29 -04:00
Tangent Wantwight 7b42a496c2 Start a PEG-inspired approach to parsing 2023-07-29 00:11:54 -04:00