diff options
Diffstat (limited to 'compiler/parser.go')
-rw-r--r-- | compiler/parser.go | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/compiler/parser.go b/compiler/parser.go index ede601d..04cd8ad 100644 --- a/compiler/parser.go +++ b/compiler/parser.go @@ -144,10 +144,16 @@ func (p *parser) parseConcat() astNode { func (p *parser) parseRepeat() astNode { group := p.parseGroup() - if !p.consume(tokenKindRepeat) { - return group + if p.consume(tokenKindRepeat) { + return newRepeatNode(group) } - return newRepeatNode(group) + if p.consume(tokenKindRepeatOneOrMore) { + return newRepeatOneOrMoreNode(group) + } + if p.consume(tokenKindOption) { + return newOptionNode(group) + } + return group } func (p *parser) parseGroup() astNode { |