Root Zanli
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
proc
/
thread-self
/
root
/
usr
/
share
/
doc
/
re2c
/
examples
/
c
/
reuse
/
Filename :
reuse.c
back
Copy
/* Generated by re2c */ #line 1 "c/reuse/reuse.re" // re2c $INPUT -o $OUTPUT --input-encoding utf8 // This example supports multiple input encodings: UTF-8 and UTF-32. // Both lexers are generated from the same rules block, and the use // blocks add only encoding-specific configurations. #include <assert.h> #include <stdint.h> #line 15 "c/reuse/reuse.re" static int lex_utf8(const uint8_t *YYCURSOR) { const uint8_t *YYMARKER; #line 20 "c/reuse/reuse.c" { uint8_t yych; yych = *YYCURSOR; switch (yych) { case 0xE2: goto yy4; default: goto yy2; } yy2: ++YYCURSOR; yy3: #line 14 "c/reuse/reuse.re" { return 1; } #line 33 "c/reuse/reuse.c" yy4: yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x88: goto yy5; default: goto yy3; } yy5: yych = *++YYCURSOR; switch (yych) { case 0x80: goto yy7; default: goto yy6; } yy6: YYCURSOR = YYMARKER; goto yy3; yy7: yych = *++YYCURSOR; switch (yych) { case 'x': goto yy8; default: goto yy6; } yy8: yych = *++YYCURSOR; switch (yych) { case ' ': goto yy9; default: goto yy6; } yy9: yych = *++YYCURSOR; switch (yych) { case 0xE2: goto yy10; default: goto yy6; } yy10: yych = *++YYCURSOR; switch (yych) { case 0x88: goto yy11; default: goto yy6; } yy11: yych = *++YYCURSOR; switch (yych) { case 0x83: goto yy12; default: goto yy6; } yy12: yych = *++YYCURSOR; switch (yych) { case 'y': goto yy13; default: goto yy6; } yy13: ++YYCURSOR; #line 13 "c/reuse/reuse.re" { return 0; } #line 89 "c/reuse/reuse.c" } #line 23 "c/reuse/reuse.re" } static int lex_utf32(const uint32_t *YYCURSOR) { const uint32_t *YYMARKER; #line 99 "c/reuse/reuse.c" { uint32_t yych; yych = *YYCURSOR; if (yych == 0x00002200) goto yy19; ++YYCURSOR; yy18: #line 14 "c/reuse/reuse.re" { return 1; } #line 108 "c/reuse/reuse.c" yy19: yych = *(YYMARKER = ++YYCURSOR); if (yych != 'x') goto yy18; yych = *++YYCURSOR; if (yych == ' ') goto yy22; yy21: YYCURSOR = YYMARKER; goto yy18; yy22: yych = *++YYCURSOR; if (yych != 0x00002203) goto yy21; yych = *++YYCURSOR; if (yych != 'y') goto yy21; ++YYCURSOR; #line 13 "c/reuse/reuse.re" { return 0; } #line 125 "c/reuse/reuse.c" } #line 33 "c/reuse/reuse.re" } int main() { static const uint8_t s8[] = // UTF-8 { 0xe2, 0x88, 0x80, 0x78, 0x20, 0xe2, 0x88, 0x83, 0x79 }; static const uint32_t s32[] = // UTF32 { 0x00002200, 0x00000078, 0x00000020, 0x00002203, 0x00000079 }; assert(lex_utf8(s8) == 0); assert(lex_utf32(s32) == 0); return 0; }