Skip to content

Operator precedence with --flex-syntax is broken. #242

@skvadrik

Description

@skvadrik

re2c parses ab* as (ab)*, while it should be a(b)*:

$ echo '/*!re2c ab* {} */' | re2c -Fi - 
/* Generated by re2c 1.0.3 on Wed Jan 16 23:12:56 2019 */

{
        YYCTYPE yych;
        goto yy0;
yy1:
        ++YYCURSOR;
yy0:
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
        yych = *(YYMARKER = YYCURSOR);
        switch (yych) {
        case 'a':       goto yy3;
        default:        goto yy2;
        }
yy2:
        {}
yy3:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
        switch (yych) {
        case 'b':       goto yy1;
        default:        goto yy4;
        }
yy4:
        YYCURSOR = YYMARKER;
        goto yy2;
}
$ echo '/*!re2c a(b)* {} */' | re2c -Fi - 
/* Generated by re2c 1.0.3 on Wed Jan 16 23:13:24 2019 */

{
        YYCTYPE yych;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
        switch (yych) {
        case 'a':       goto yy3;
        default:        goto yy2;
        }
yy2:
yy3:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
        switch (yych) {
        case 'b':       goto yy3;
        default:        goto yy5;
        }
yy5:
        {}
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions