diff options
Diffstat (limited to 'main/parse.go')
-rw-r--r-- | main/parse.go | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/main/parse.go b/main/parse.go index 0c534e8..d31687a 100644 --- a/main/parse.go +++ b/main/parse.go @@ -69,7 +69,7 @@ func (p *parser) parseBasicCommand(commandChar rune) Command { return NextCommand{} case 'N': return AppendNextCommand{} - case 's', 'S', 'f', 'F', 'l', 'L': + case 's', 'S', 'f', 'F', 'l', 'L', 'a', 'A': ast := p.parseSubex() switch commandChar { case 'f': @@ -110,6 +110,14 @@ func (p *parser) parseBasicCommand(commandChar rune) Command { Match: ast, }, } + case 'a', 'A': + ast = subex.SubexASTRepeat { + Acceptable: []subex.ConvexRange{{Start: -1, End: 0}}, + Content: subex.SubexASTOr { + First: ast, + Second: subex.SubexASTCopyAny{}, + }, + } } subex := subex.CompileTransducer(ast) var next Command @@ -121,9 +129,9 @@ func (p *parser) parseBasicCommand(commandChar rune) Command { next = p.parseCommand() } switch commandChar { - case 's': + case 's', 'a': return SubstituteValueCommand {subex, next} - case 'S', 'f', 'F', 'l', 'L': + case 'S', 'f', 'F', 'l', 'L', 'A': return SubstitutePathCommand {subex, next} default: panic("Unreachable!?!?") |