<- Back to shtanton's homepage
aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCharlie Stanton <charlie@shtanton.xyz>2023-04-26 11:04:36 +0100
committerCharlie Stanton <charlie@shtanton.xyz>2023-04-26 11:04:36 +0100
commit48017049f23d3f213fc6e1313f34526d0bba4489 (patch)
treeb363e53f5112589e0cbbd2e1e5e60c6f912ab65c
parente5965749d17d5a70f92fdc981f863e85b7543838 (diff)
downloadstred-go-48017049f23d3f213fc6e1313f34526d0bba4489.tar
Update subex , literal to no longer include terminals
-rw-r--r--README.md2
-rw-r--r--subex/subexast.go6
-rw-r--r--subex/subexstate.go8
3 files changed, 8 insertions, 8 deletions
diff --git a/README.md b/README.md
index c93f48c..f3e7f61 100644
--- a/README.md
+++ b/README.md
@@ -61,7 +61,7 @@ The simplest subexes are literals. These just copy directly from the input to th
| Syntax | Description |
| --- | --- |
| `.` | Copy across any single atom unchanged |
-| `,` | Copy across any single value unchanged (will copy a whole string) |
+| `,` | Copy across any single JSON value (not `{`, `}`, `[` or `]` tokens) unchanged (will copy a whole string). Equivalent to `` `null`|?|%|# `` |
| `?` | Copy across any single boolean atom |
| `%` | Copy across any single number |
| `_` | Copy across a single unicode codepoint inside a string |
diff --git a/subex/subexast.go b/subex/subexast.go
index f5b1178..f4088fe 100644
--- a/subex/subexast.go
+++ b/subex/subexast.go
@@ -195,13 +195,13 @@ func (ast SubexASTCopyString) String() string {
return "#"
}
-// Read in a value and copy it out unchanged
-// , is equivalent to `null`|?|%|#|[`{}[]`]
+// Read in a non-terminal value and copy it out unchanged
+// , is equivalent to `null`|?|%|#
type SubexASTCopyValue struct {}
func (ast SubexASTCopyValue) compileWith(next SubexState, slotMap *SlotMap) SubexState {
return &SubexGroupState {
SubexASTCopyString{}.compileWith(next, slotMap),
- &SubexCopyNonStringAtomState {next},
+ &SubexCopyNonStringNonTerminalAtomState {next},
}
}
func (ast SubexASTCopyValue) String() string {
diff --git a/subex/subexstate.go b/subex/subexstate.go
index 4655ef9..7ecff0c 100644
--- a/subex/subexstate.go
+++ b/subex/subexstate.go
@@ -203,11 +203,11 @@ func (state SubexCopyStringAtomState) accepting(store Store, outputStack OutputS
}
// Read in an atom and copy it out as long as it is not part of a string
-type SubexCopyNonStringAtomState struct {
+type SubexCopyNonStringNonTerminalAtomState struct {
next SubexState
}
-func (state SubexCopyNonStringAtomState) eat(store Store, outputStack OutputStack, char walk.Atom) []SubexBranch {
- if char.Typ == walk.AtomStringRune || char.Typ == walk.AtomStringTerminal {
+func (state SubexCopyNonStringNonTerminalAtomState) eat(store Store, outputStack OutputStack, char walk.Atom) []SubexBranch {
+ if char.Typ == walk.AtomStringRune || char.Typ == walk.AtomStringTerminal || char.Typ == walk.AtomTerminal {
return nil
}
return []SubexBranch{{
@@ -216,7 +216,7 @@ func (state SubexCopyNonStringAtomState) eat(store Store, outputStack OutputStac
store: store,
}}
}
-func (state SubexCopyNonStringAtomState) accepting(store Store, outputStack OutputStack) []OutputStack {
+func (state SubexCopyNonStringNonTerminalAtomState) accepting(store Store, outputStack OutputStack) []OutputStack {
return nil
}