File: 001_basic_d.re

package info (click to toggle)
re2c 4.4-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 51,512 kB
  • sloc: cpp: 34,160; ml: 8,494; sh: 5,311; makefile: 1,014; haskell: 611; python: 431; ansic: 234; javascript: 113
file content (28 lines) | stat: -rw-r--r-- 633 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// re2swift $INPUT -o $OUTPUT --api generic -d

func lex(_ s: UnsafeBufferPointer<UInt8>) -> Bool {
  var cursor = 0, marker = 0

  /*!re2c
    re2c:yyfill:enable = 0;
    re2c:YYPEEK = "s[cursor]";
    re2c:YYSKIP = "cursor += 1";
    re2c:YYBACKUP  = "marker = cursor";
    re2c:YYRESTORE = "cursor = marker";
    re2c:YYDEBUG = "print(\"lex: '\\(@@{char})' int state \\(@@{state})\")";

    end = [\x00];

    [0-9]+ end { return true }
    *          { return false }
  */
}

@main struct Program {
  static func main() {
    let s: StaticString = "123\0"
    s.withUTF8Buffer {
      assert(lex($0), "expected 123")
    }
  }
}