File: header.d

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 (60 lines) | stat: -rw-r--r-- 1,191 bytes parent folder | download | duplicates (2)
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
/* Generated by re2d */
// re2d $INPUT -o $OUTPUT -i --header lexer/state.d
module main;

import core.stdc.stddef;
import lexer.state; // the module is generated by re2c



private long lex(ref LexerState yyrecord) {
    const(char)* t;
    
{
    char yych;
    goto yy0;
yy1:
    ++yyrecord.yycursor;
yy0:
    yych = *yyrecord.yycursor;
    switch (yych) {
        case 'a': goto yy1;
        case 'b':
            yyrecord.yyt1 = yyrecord.yycursor;
            goto yy3;
        default:
            yyrecord.yyt1 = yyrecord.yycursor;
            goto yy2;
    }
yy2:
    t = yyrecord.yyt1;
    { return t - yyrecord.str; }
yy3:
    ++yyrecord.yycursor;
    yych = *yyrecord.yycursor;
    switch (yych) {
        case 'b': goto yy3;
        default: goto yy2;
    }
}

}

void main() {
    const(char)* s = "ab";
    LexerState st = {s, s , null};
    assert(lex(st) == 1);

    const(char)* s2 = "aaabbbbbbbb";
    LexerState st2 = {s2, s2 , null};
    assert(lex(st2) == 3);
}
/* Generated by re2d */

module lexer.state;

struct LexerState {
    const(char)* str, yycursor;
    const(char)* yyt1;
};
d/headers/header.re:25:21: warning: rule matches empty string [-Wmatch-empty-string]