summary refs log blame commit diff stats
path: root/tests/generics/tgenericmatcher2.nim
blob: 6832f80b7b5d21f5003f18e3eac31f3e30e95704 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
13
14













                                                   
   


                      
type
  TMatcherKind = enum
    mkTerminal, mkSequence, mkAlternation, mkRepeat
  TMatcher[T] = object
    case kind: TMatcherKind
    of mkTerminal:
      value: T
    of mkSequence, mkAlternation:
      matchers: seq[TMatcher[T]]
    of mkRepeat:
      matcher: ref TMatcher[T]
      min, max: int

var
  m: ref TMatcher[int]