Server IP : 85.214.239.14 / Your IP : 3.14.131.115 Web Server : Apache/2.4.62 (Debian) System : Linux h2886529.stratoserver.net 4.9.0 #1 SMP Tue Jan 9 19:45:01 MSK 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.18 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, MySQL : OFF | cURL : OFF | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : OFF Directory : /proc/2/cwd/usr/share/doc/re2c/examples/c/reuse/ |
Upload File : |
/* Generated by re2c */ #line 1 "c/reuse/reuse.re" // re2c $INPUT -o $OUTPUT --input-encoding utf8 #include <assert.h> #include <stdint.h> // 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. #line 13 "c/reuse/reuse.re" static int lex_utf8(const uint8_t *s) { const uint8_t *YYCURSOR = s, *YYMARKER; #line 17 "c/reuse/reuse.c" { uint8_t yych; yych = *YYCURSOR; switch (yych) { case 0xE2: goto yy3; default: goto yy1; } yy1: ++YYCURSOR; yy2: #line 12 "c/reuse/reuse.re" { return 1; } #line 30 "c/reuse/reuse.c" yy3: yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x88: goto yy4; default: goto yy2; } yy4: yych = *++YYCURSOR; switch (yych) { case 0x80: goto yy6; default: goto yy5; } yy5: YYCURSOR = YYMARKER; goto yy2; yy6: yych = *++YYCURSOR; switch (yych) { case 'x': goto yy7; default: goto yy5; } yy7: yych = *++YYCURSOR; switch (yych) { case ' ': goto yy8; default: goto yy5; } yy8: yych = *++YYCURSOR; switch (yych) { case 0xE2: goto yy9; default: goto yy5; } yy9: yych = *++YYCURSOR; switch (yych) { case 0x88: goto yy10; default: goto yy5; } yy10: yych = *++YYCURSOR; switch (yych) { case 0x83: goto yy11; default: goto yy5; } yy11: yych = *++YYCURSOR; switch (yych) { case 'y': goto yy12; default: goto yy5; } yy12: ++YYCURSOR; #line 11 "c/reuse/reuse.re" { return 0; } #line 86 "c/reuse/reuse.c" } #line 20 "c/reuse/reuse.re" } static int lex_utf32(const uint32_t *s) { const uint32_t *YYCURSOR = s, *YYMARKER; #line 95 "c/reuse/reuse.c" { uint32_t yych; yych = *YYCURSOR; if (yych == 0x00002200) goto yy15; ++YYCURSOR; yy14: #line 12 "c/reuse/reuse.re" { return 1; } #line 104 "c/reuse/reuse.c" yy15: yych = *(YYMARKER = ++YYCURSOR); if (yych != 'x') goto yy14; yych = *++YYCURSOR; if (yych == ' ') goto yy17; yy16: YYCURSOR = YYMARKER; goto yy14; yy17: yych = *++YYCURSOR; if (yych != 0x00002203) goto yy16; yych = *++YYCURSOR; if (yych != 'y') goto yy16; ++YYCURSOR; #line 11 "c/reuse/reuse.re" { return 0; } #line 121 "c/reuse/reuse.c" } #line 28 "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; }