<- Back to shtanton's homepage
aboutsummaryrefslogtreecommitdiff
path: root/subex/parse.go
diff options
context:
space:
mode:
Diffstat (limited to 'subex/parse.go')
-rw-r--r--subex/parse.go36
1 files changed, 18 insertions, 18 deletions
diff --git a/subex/parse.go b/subex/parse.go
index 59b784d..1d64c20 100644
--- a/subex/parse.go
+++ b/subex/parse.go
@@ -4,7 +4,7 @@ import (
"main/walk"
)
-func expectBracket(l *RuneReader, ifLeft walk.Datum, ifRight walk.Datum) walk.Datum {
+func expectBracket(l *RuneReader, ifLeft walk.Atom, ifRight walk.Atom) walk.Atom {
switch l.next() {
case '(':
return ifLeft
@@ -15,8 +15,8 @@ func expectBracket(l *RuneReader, ifLeft walk.Datum, ifRight walk.Datum) walk.Da
}
}
-// Having just read termType, read in a bracket and return the corresponding walk.Datum
-func parseTerminatorDatumLiteral(termType rune, l *RuneReader) walk.Datum {
+// Having just read termType, read in a bracket and return the corresponding Atom
+func parseTerminatorAtomLiteral(termType rune, l *RuneReader) walk.Atom {
switch termType {
case '@':
return expectBracket(l, walk.ArrayBegin, walk.ArrayEnd)
@@ -43,21 +43,21 @@ func parseReplacement(l *RuneReader) (output []TransducerOutput) {
if slot == eof {
panic("Missing slot character")
}
- output = append(output, TransducerReplacementLoad{datum: slot})
+ output = append(output, TransducerReplacementLoad{atom: slot})
case '@', '~', '#':
- output = append(output, TransducerReplacementRune{datum: parseTerminatorDatumLiteral(r, l)})
+ output = append(output, TransducerReplacementAtom{atom: parseTerminatorAtomLiteral(r, l)})
default:
- output = append(output, TransducerReplacementRune{datum: r})
+ output = append(output, TransducerReplacementAtom{atom: r})
}
}
return output
}
// Parse the contents of a range subex [] into a map
-func parseRangeSubex(l *RuneReader) map[walk.Datum]walk.Datum {
+func parseRangeSubex(l *RuneReader) map[walk.Atom]walk.Atom {
// TODO escaping
- parts := make(map[walk.Datum]walk.Datum)
- var froms []walk.Datum
+ parts := make(map[walk.Atom]walk.Atom)
+ var froms []walk.Atom
var hasTo bool
for {
fromsStart := l.next()
@@ -68,9 +68,9 @@ func parseRangeSubex(l *RuneReader) map[walk.Datum]walk.Datum {
hasTo = true
break
} else {
- datum := parseTerminatorDatumLiteral(fromsStart, l)
- if datum != nil {
- froms = append(froms, datum)
+ atom := parseTerminatorAtomLiteral(fromsStart, l)
+ if atom != nil {
+ froms = append(froms, atom)
continue
}
}
@@ -91,16 +91,16 @@ func parseRangeSubex(l *RuneReader) map[walk.Datum]walk.Datum {
panic("Missing from part of range expression")
}
- var tos []walk.Datum
+ var tos []walk.Atom
if hasTo {
for {
tosStart := l.next()
if tosStart == ']' {
break
} else {
- datum := parseTerminatorDatumLiteral(tosStart, l)
- if datum != nil {
- tos = append(tos, datum)
+ atom := parseTerminatorAtomLiteral(tosStart, l)
+ if atom != nil {
+ tos = append(tos, atom)
continue
}
}
@@ -166,9 +166,9 @@ func parseSubex(l *RuneReader, minPower int) SubexAST {
case '.':
lhs = SubexASTCopyAny{}
case '@', '#', '~':
- lhs = SubexASTCopyRune{datum: parseTerminatorDatumLiteral(r, l)}
+ lhs = SubexASTCopyAtom{atom: parseTerminatorAtomLiteral(r, l)}
default:
- lhs = SubexASTCopyRune{datum: r}
+ lhs = SubexASTCopyAtom{atom: r}
}
loop: for {
if minPower <= 0 {