Server IP : 85.214.239.14 / Your IP : 18.119.118.151 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/task/2/root/proc/2/root/usr/share/doc/re2c/examples/rust/real_world/ |
Upload File : |
/* Generated by re2c */ // re2rust -W $INPUT -o $OUTPUT --no-unsafe // This example is based on a public domain C lex grammar originally // hosted at http://www.quut.com/c/ANSI-C-grammar-l.html // It has, however, been significantly modified. // A real C lexer in a modern compiler typically postprocesses a tokenization // step performed by the preprocessor. This example isn't actually practically // usable as-is, and would require significant work to turn into part of a real // C compiler. // As with the original from quut.com, this grammar presupposes translation for // phases 1 to 5 have already been performed, though it also still handles // comments. It does handle string concatenation though in a sort of // half-hearted manner. // We specify unicode here to make the code in this example more interesting. // We use the "ignore" Unicode encoding policy (which is the default anyway) // because the Rust input routine we use is already checking for surrogates. use std::fmt; // Errors type #[derive(Debug, Clone)] struct LexError { message: String, token_text: String, line: usize, column: usize, } impl fmt::Display for LexError { fn fmt(&self, f: &mut fmt::Formatter) -> Result<(), fmt::Error> { write!(f, "{}: {} ({}:{})", self.message, self.token_text, self.line, self.column) } } // The default definitions for the Error methods are fine. impl std::error::Error for LexError { } #[derive(Debug, Clone)] #[allow(dead_code)] // silence 'field in not used' warnings struct Position { // What line are we on? (starts on line 0.) line_num: usize, // What is the index of the first character on the line? bol: usize, // What is the index of the current token? start: usize, // What is the index of the end of the current token? end: usize, } // All the different kinds of tokens. #[derive(Debug, Clone, Eq, PartialEq)] enum TName { // General //Error(String), Comment, Whitespace, Newline, // Ids. Id, TypeId, EnumId, // Constants IntConst, FloatConst, StringLiteral, // Keywords Alignas, Alignof, Atomic, Bool, Complex, Generic, Imaginary, Noreturn, StaticAssert, ThreadLocal, Auto, Break, Case, Char, Const, Continue, Default, Do, Double, Else, Enum, Extern, Float, For, Goto, If, Inline, Int, Long, Register, Restrict, Return, Short, Signed, Sizeof, Static, Struct, Switch, Typedef, Union, Unsigned, Void, Volatile, While, // Punctuators Ellipsis, RSAsgn, LSAsgn, AddAsgn, SubAsgn, MulAsgn, DivAsgn, ModAsgn, BAndAsgn, BXorAsgn, BOrAsgn, RShift, LShift, Incr, Decr, Arrow, LAnd, LOr, LE, GE, Eq, NEq, Semi, OBrace, CBrace, Comma, Colon, Asgn, OParen, CParen, OBrack, CBrack, Dot, Amper, LNot, BNot, Sub, Add, Aster, Div, Mod, LT, GT, BXor, BOr, Ques, } #[derive(Debug, Clone)] #[allow(dead_code)] // silence 'field in not used' warnings struct Token { tname: TName, text: String, position: Position, } #[derive(Debug, Clone)] enum SymType { #[allow(dead_code)] // silence 'variant is never constructed' warning TypeName, #[allow(dead_code)] // silence 'variant is never constructed' warning EnumConst, Identifier, } // C lexers (unfortunately) need information from the symbol table to return // the correct token type, because an identifier could be a type name. (This // ambiguity is a big source of trouble in C.) This is a fake "sym_type" that // always returns Identifer. It needs to be fixed to actually hook into the // parser's symbol table if this lexer is used in the real world. fn sym_type(_ident: &str) -> SymType { SymType::Identifier } #[derive(Debug, Clone)] struct Input { data: Vec<u8>, cursor: usize, token: usize, marker: usize, line: usize, bol: usize, eof: bool, } impl Input { fn new(s: String) -> Input { let data = s.into_bytes(); Input { data: data, cursor: 0, token: 0, marker: 0, line: 0, bol: 0, eof: false, } } // text of the current token fn current_ttext(&self) -> String { // for maximum performance, this should actually be from_utf8_unchecked String::from_utf8(self.data[self.token..self.cursor].to_vec()).unwrap() } fn token(&mut self, tname: TName) -> Result<Option<Token>, LexError> { let text = self.current_ttext(); let position = Position { line_num: self.line, bol: self.bol, start: self.token, end: self.cursor, }; let lines = match tname { TName::Comment => text.lines().count() - 1, // We may have multiple string literals separated by // newlines or the like to fuse. TName::StringLiteral => text.lines().count() - 1, TName::Newline => 1, _ => 0, }; if tname == TName::Newline { self.bol = self.cursor; } else if lines > 0 { // the unwrap should only fail if we have a bad bug. self.bol = self.data[0..self.cursor] .iter().rposition(|bytes| *bytes == b'\n') .unwrap(); }; self.line += lines; Ok(Some(Token { tname, text, position, })) } fn error(&self, s: &str) -> Result<Option<Token>, LexError> { Err(LexError { message: s.to_string(), token_text: self.current_ttext(), line: self.line, column: self.cursor - self.bol, }) } // Tells us whether an identifier is a type name, an enum constant, or an // ordinary identifier. fn check_type(&mut self) -> Result<Option<Token>, LexError> { let text = self.current_ttext(); match sym_type(&text) { SymType::TypeName => self.token(TName::TypeId), SymType::EnumConst => self.token(TName::EnumId), SymType::Identifier => self.token(TName::Id), } } } // Some of this lexer was taken from the C lex grammar at // http://www.quut.com/c/ANSI-C-grammar-l.html fn next_token(input: &mut Input) -> Result<Option<Token>, LexError> { if input.eof { return Ok(None) } input.token = input.cursor; { #[allow(unused_assignments)] let mut yych : u8 = 0; let mut yyaccept : usize = 0; let mut yystate : usize = 0; 'yyl: loop { match yystate { 0 => { yych = input.data[input.cursor]; input.cursor += 1; match yych { 0x00 => { yystate = 1; continue 'yyl; } 0x09 | 0x0B ..= 0x0C | 0x20 => { yystate = 4; continue 'yyl; } 0x0A => { yystate = 6; continue 'yyl; } 0x21 => { yystate = 7; continue 'yyl; } 0x22 => { yystate = 9; continue 'yyl; } 0x25 => { yystate = 11; continue 'yyl; } 0x26 => { yystate = 13; continue 'yyl; } 0x27 => { yystate = 15; continue 'yyl; } 0x28 => { yystate = 16; continue 'yyl; } 0x29 => { yystate = 17; continue 'yyl; } 0x2A => { yystate = 18; continue 'yyl; } 0x2B => { yystate = 20; continue 'yyl; } 0x2C => { yystate = 22; continue 'yyl; } 0x2D => { yystate = 23; continue 'yyl; } 0x2E => { yystate = 25; continue 'yyl; } 0x2F => { yystate = 27; continue 'yyl; } 0x30 => { yystate = 29; continue 'yyl; } 0x31 ..= 0x39 => { yystate = 31; continue 'yyl; } 0x3A => { yystate = 33; continue 'yyl; } 0x3B => { yystate = 34; continue 'yyl; } 0x3C => { yystate = 35; continue 'yyl; } 0x3D => { yystate = 37; continue 'yyl; } 0x3E => { yystate = 39; continue 'yyl; } 0x3F => { yystate = 41; continue 'yyl; } 0x41 ..= 0x4B | 0x4D ..= 0x54 | 0x56 ..= 0x5A | 0x68 | 0x6A ..= 0x6B | 0x6D ..= 0x71 | 0x78 ..= 0x7A => { yystate = 42; continue 'yyl; } 0x4C | 0x55 => { yystate = 45; continue 'yyl; } 0x5B => { yystate = 46; continue 'yyl; } 0x5D => { yystate = 47; continue 'yyl; } 0x5E => { yystate = 48; continue 'yyl; } 0x5F => { yystate = 50; continue 'yyl; } 0x61 => { yystate = 51; continue 'yyl; } 0x62 => { yystate = 52; continue 'yyl; } 0x63 => { yystate = 53; continue 'yyl; } 0x64 => { yystate = 54; continue 'yyl; } 0x65 => { yystate = 55; continue 'yyl; } 0x66 => { yystate = 56; continue 'yyl; } 0x67 => { yystate = 57; continue 'yyl; } 0x69 => { yystate = 58; continue 'yyl; } 0x6C => { yystate = 59; continue 'yyl; } 0x72 => { yystate = 60; continue 'yyl; } 0x73 => { yystate = 61; continue 'yyl; } 0x74 => { yystate = 62; continue 'yyl; } 0x75 => { yystate = 63; continue 'yyl; } 0x76 => { yystate = 64; continue 'yyl; } 0x77 => { yystate = 65; continue 'yyl; } 0x7B => { yystate = 66; continue 'yyl; } 0x7C => { yystate = 67; continue 'yyl; } 0x7D => { yystate = 69; continue 'yyl; } 0x7E => { yystate = 70; continue 'yyl; } _ => { yystate = 2; continue 'yyl; } } } 1 => { input.eof = true; return Ok(None); } 2 => { yystate = 3; continue 'yyl; } 3 => { return input.error("bad character") } 4 => { yych = input.data[input.cursor]; match yych { 0x09 | 0x0B ..= 0x0C | 0x20 => { input.cursor += 1; yystate = 4; continue 'yyl; } _ => { yystate = 5; continue 'yyl; } } } 5 => { return input.token(TName::Whitespace) } 6 => { return input.token(TName::Newline) } 7 => { yych = input.data[input.cursor]; match yych { 0x3D => { input.cursor += 1; yystate = 71; continue 'yyl; } _ => { yystate = 8; continue 'yyl; } } } 8 => { return input.token(TName::LNot) } 9 => { yyaccept = 0; input.marker = input.cursor; yych = input.data[input.cursor]; match yych { 0x01 ..= 0x09 | 0x0B ..= 0x21 | 0x23 ..= 0x5B | 0x5D ..= 0x7F => { input.cursor += 1; yystate = 9; continue 'yyl; } 0x22 => { input.cursor += 1; yystate = 72; continue 'yyl; } 0x5C => { input.cursor += 1; yystate = 74; continue 'yyl; } 0xC2 ..= 0xDF => { input.cursor += 1; yystate = 76; continue 'yyl; } 0xE0 => { input.cursor += 1; yystate = 77; continue 'yyl; } 0xE1 ..= 0xEF => { input.cursor += 1; yystate = 78; continue 'yyl; } 0xF0 => { input.cursor += 1; yystate = 79; continue 'yyl; } 0xF1 ..= 0xF3 => { input.cursor += 1; yystate = 80; continue 'yyl; } 0xF4 => { input.cursor += 1; yystate = 81; continue 'yyl; } _ => { yystate = 10; continue 'yyl; } } } 10 => { return input.error("unterminated string") } 11 => { yych = input.data[input.cursor]; match yych { 0x3D => { input.cursor += 1; yystate = 82; continue 'yyl; } _ => { yystate = 12; continue 'yyl; } } } 12 => { return input.token(TName::Mod) } 13 => { yych = input.data[input.cursor]; match yych { 0x26 => { input.cursor += 1; yystate = 83; continue 'yyl; } 0x3D => { input.cursor += 1; yystate = 84; continue 'yyl; } _ => { yystate = 14; continue 'yyl; } } } 14 => { return input.token(TName::Amper) } 15 => { yyaccept = 1; input.marker = input.cursor; yych = input.data[input.cursor]; match yych { 0x01 ..= 0x09 | 0x0B ..= 0x26 | 0x28 ..= 0x7F | 0xC2 ..= 0xF4 => { yystate = 86; continue 'yyl; } _ => { yystate = 3; continue 'yyl; } } } 16 => { return input.token(TName::OParen) } 17 => { return input.token(TName::CParen) } 18 => { yych = input.data[input.cursor]; match yych { 0x3D => { input.cursor += 1; yystate = 95; continue 'yyl; } _ => { yystate = 19; continue 'yyl; } } } 19 => { return input.token(TName::Aster) } 20 => { yych = input.data[input.cursor]; match yych { 0x2B => { input.cursor += 1; yystate = 96; continue 'yyl; } 0x3D => { input.cursor += 1; yystate = 97; continue 'yyl; } _ => { yystate = 21; continue 'yyl; } } } 21 => { return input.token(TName::Add) } 22 => { return input.token(TName::Comma) } 23 => { yych = input.data[input.cursor]; match yych { 0x2D => { input.cursor += 1; yystate = 98; continue 'yyl; } 0x3D => { input.cursor += 1; yystate = 99; continue 'yyl; } 0x3E => { input.cursor += 1; yystate = 100; continue 'yyl; } _ => { yystate = 24; continue 'yyl; } } } 24 => { return input.token(TName::Sub) } 25 => { yyaccept = 2; input.marker = input.cursor; yych = input.data[input.cursor]; match yych { 0x2E => { input.cursor += 1; yystate = 101; continue 'yyl; } 0x30 ..= 0x39 => { input.cursor += 1; yystate = 102; continue 'yyl; } _ => { yystate = 26; continue 'yyl; } } } 26 => { return input.token(TName::Dot) } 27 => { yych = input.data[input.cursor]; match yych { 0x2A => { input.cursor += 1; yystate = 104; continue 'yyl; } 0x2F => { input.cursor += 1; yystate = 106; continue 'yyl; } 0x3D => { input.cursor += 1; yystate = 108; continue 'yyl; } _ => { yystate = 28; continue 'yyl; } } } 28 => { return input.token(TName::Div) } 29 => { yyaccept = 3; input.marker = input.cursor; yych = input.data[input.cursor]; match yych { 0x58 | 0x78 => { input.cursor += 1; yystate = 117; continue 'yyl; } _ => { yystate = 112; continue 'yyl; } } } 30 => { return input.token(TName::IntConst) } 31 => { yyaccept = 4; input.marker = input.cursor; yych = input.data[input.cursor]; match yych { 0x2E => { input.cursor += 1; yystate = 109; continue 'yyl; } 0x30 ..= 0x39 => { input.cursor += 1; yystate = 31; continue 'yyl; } 0x45 | 0x65 => { input.cursor += 1; yystate = 114; continue 'yyl; } 0x4C => { input.cursor += 1; yystate = 119; continue 'yyl; } 0x55 | 0x75 => { input.cursor += 1; yystate = 120; continue 'yyl; } 0x6C => { input.cursor += 1; yystate = 121; continue 'yyl; } _ => { yystate = 32; continue 'yyl; } } } 32 => { return input.token(TName::IntConst) } 33 => { return input.token(TName::Colon) } 34 => { return input.token(TName::Semi) } 35 => { yych = input.data[input.cursor]; match yych { 0x3C => { input.cursor += 1; yystate = 122; continue 'yyl; } 0x3D => { input.cursor += 1; yystate = 124; continue 'yyl; } _ => { yystate = 36; continue 'yyl; } } } 36 => { return input.token(TName::LT) } 37 => { yych = input.data[input.cursor]; match yych { 0x3D => { input.cursor += 1; yystate = 125; continue 'yyl; } _ => { yystate = 38; continue 'yyl; } } } 38 => { return input.token(TName::Asgn) } 39 => { yych = input.data[input.cursor]; match yych { 0x3D => { input.cursor += 1; yystate = 126; continue 'yyl; } 0x3E => { input.cursor += 1; yystate = 127; continue 'yyl; } _ => { yystate = 40; continue 'yyl; } } } 40 => { return input.token(TName::GT) } 41 => { return input.token(TName::Ques) } 42 => { yych = input.data[input.cursor]; yystate = 43; continue 'yyl; } 43 => { match yych { 0x30 ..= 0x39 | 0x41 ..= 0x5A | 0x5F | 0x61 ..= 0x7A => { input.cursor += 1; yystate = 42; continue 'yyl; } _ => { yystate = 44; continue 'yyl; } } } 44 => { return input.check_type() } 45 => { yyaccept = 5; input.marker = input.cursor; yych = input.data[input.cursor]; match yych { 0x22 => { input.cursor += 1; yystate = 9; continue 'yyl; } 0x27 => { input.cursor += 1; yystate = 129; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 46 => { return input.token(TName::OBrack) } 47 => { return input.token(TName::CBrack) } 48 => { yych = input.data[input.cursor]; match yych { 0x3D => { input.cursor += 1; yystate = 130; continue 'yyl; } _ => { yystate = 49; continue 'yyl; } } } 49 => { return input.token(TName::BXor) } 50 => { yych = input.data[input.cursor]; match yych { 0x41 => { input.cursor += 1; yystate = 131; continue 'yyl; } 0x42 => { input.cursor += 1; yystate = 132; continue 'yyl; } 0x43 => { input.cursor += 1; yystate = 133; continue 'yyl; } 0x47 => { input.cursor += 1; yystate = 134; continue 'yyl; } 0x49 => { input.cursor += 1; yystate = 135; continue 'yyl; } 0x4E => { input.cursor += 1; yystate = 136; continue 'yyl; } 0x53 => { input.cursor += 1; yystate = 137; continue 'yyl; } 0x54 => { input.cursor += 1; yystate = 138; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 51 => { yych = input.data[input.cursor]; match yych { 0x75 => { input.cursor += 1; yystate = 139; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 52 => { yych = input.data[input.cursor]; match yych { 0x72 => { input.cursor += 1; yystate = 140; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 53 => { yych = input.data[input.cursor]; match yych { 0x61 => { input.cursor += 1; yystate = 141; continue 'yyl; } 0x68 => { input.cursor += 1; yystate = 142; continue 'yyl; } 0x6F => { input.cursor += 1; yystate = 143; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 54 => { yych = input.data[input.cursor]; match yych { 0x65 => { input.cursor += 1; yystate = 144; continue 'yyl; } 0x6F => { input.cursor += 1; yystate = 145; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 55 => { yych = input.data[input.cursor]; match yych { 0x6C => { input.cursor += 1; yystate = 147; continue 'yyl; } 0x6E => { input.cursor += 1; yystate = 148; continue 'yyl; } 0x78 => { input.cursor += 1; yystate = 149; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 56 => { yych = input.data[input.cursor]; match yych { 0x6C => { input.cursor += 1; yystate = 150; continue 'yyl; } 0x6F => { input.cursor += 1; yystate = 151; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 57 => { yych = input.data[input.cursor]; match yych { 0x6F => { input.cursor += 1; yystate = 152; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 58 => { yych = input.data[input.cursor]; match yych { 0x66 => { input.cursor += 1; yystate = 153; continue 'yyl; } 0x6E => { input.cursor += 1; yystate = 155; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 59 => { yych = input.data[input.cursor]; match yych { 0x6F => { input.cursor += 1; yystate = 156; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 60 => { yych = input.data[input.cursor]; match yych { 0x65 => { input.cursor += 1; yystate = 157; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 61 => { yych = input.data[input.cursor]; match yych { 0x68 => { input.cursor += 1; yystate = 158; continue 'yyl; } 0x69 => { input.cursor += 1; yystate = 159; continue 'yyl; } 0x74 => { input.cursor += 1; yystate = 160; continue 'yyl; } 0x77 => { input.cursor += 1; yystate = 161; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 62 => { yych = input.data[input.cursor]; match yych { 0x79 => { input.cursor += 1; yystate = 162; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 63 => { yyaccept = 5; input.marker = input.cursor; yych = input.data[input.cursor]; match yych { 0x22 => { input.cursor += 1; yystate = 9; continue 'yyl; } 0x27 => { input.cursor += 1; yystate = 129; continue 'yyl; } 0x38 => { input.cursor += 1; yystate = 163; continue 'yyl; } 0x6E => { input.cursor += 1; yystate = 164; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 64 => { yych = input.data[input.cursor]; match yych { 0x6F => { input.cursor += 1; yystate = 165; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 65 => { yych = input.data[input.cursor]; match yych { 0x68 => { input.cursor += 1; yystate = 166; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 66 => { return input.token(TName::OBrace) } 67 => { yych = input.data[input.cursor]; match yych { 0x3D => { input.cursor += 1; yystate = 167; continue 'yyl; } 0x7C => { input.cursor += 1; yystate = 168; continue 'yyl; } _ => { yystate = 68; continue 'yyl; } } } 68 => { return input.token(TName::BOr) } 69 => { return input.token(TName::CBrace) } 70 => { return input.token(TName::BNot) } 71 => { return input.token(TName::NEq) } 72 => { yyaccept = 6; input.marker = input.cursor; yych = input.data[input.cursor]; match yych { 0x09 ..= 0x0C | 0x20 => { input.cursor += 1; yystate = 72; continue 'yyl; } 0x22 => { input.cursor += 1; yystate = 169; continue 'yyl; } 0x4C | 0x55 => { input.cursor += 1; yystate = 170; continue 'yyl; } 0x75 => { input.cursor += 1; yystate = 171; continue 'yyl; } _ => { yystate = 73; continue 'yyl; } } } 73 => { return input.token(TName::StringLiteral) } 74 => { yych = input.data[input.cursor]; match yych { 0x22 | 0x27 | 0x30 ..= 0x37 | 0x3F | 0x5C | 0x61 ..= 0x62 | 0x66 | 0x6E | 0x72 | 0x74 | 0x76 => { input.cursor += 1; yystate = 9; continue 'yyl; } 0x78 => { input.cursor += 1; yystate = 172; continue 'yyl; } _ => { yystate = 75; continue 'yyl; } } } 75 => { input.cursor = input.marker; match yyaccept { 0 => { yystate = 10; continue 'yyl; } 1 => { yystate = 3; continue 'yyl; } 2 => { yystate = 26; continue 'yyl; } 3 => { yystate = 30; continue 'yyl; } 4 => { yystate = 32; continue 'yyl; } 5 => { yystate = 44; continue 'yyl; } 6 => { yystate = 73; continue 'yyl; } 7 => { yystate = 87; continue 'yyl; } 8 => { yystate = 103; continue 'yyl; } 9 => { yystate = 105; continue 'yyl; } 10 => { yystate = 107; continue 'yyl; } 11 => { yystate = 110; continue 'yyl; } 12 => { yystate = 202; continue 'yyl; } _ => { yystate = 262; continue 'yyl; } } } 76 => { yych = input.data[input.cursor]; match yych { 0x80 ..= 0xBF => { input.cursor += 1; yystate = 9; continue 'yyl; } _ => { yystate = 75; continue 'yyl; } } } 77 => { yych = input.data[input.cursor]; match yych { 0xA0 ..= 0xBF => { input.cursor += 1; yystate = 76; continue 'yyl; } _ => { yystate = 75; continue 'yyl; } } } 78 => { yych = input.data[input.cursor]; match yych { 0x80 ..= 0xBF => { input.cursor += 1; yystate = 76; continue 'yyl; } _ => { yystate = 75; continue 'yyl; } } } 79 => { yych = input.data[input.cursor]; match yych { 0x90 ..= 0xBF => { input.cursor += 1; yystate = 78; continue 'yyl; } _ => { yystate = 75; continue 'yyl; } } } 80 => { yych = input.data[input.cursor]; match yych { 0x80 ..= 0xBF => { input.cursor += 1; yystate = 78; continue 'yyl; } _ => { yystate = 75; continue 'yyl; } } } 81 => { yych = input.data[input.cursor]; match yych { 0x80 ..= 0x8F => { input.cursor += 1; yystate = 78; continue 'yyl; } _ => { yystate = 75; continue 'yyl; } } } 82 => { return input.token(TName::ModAsgn) } 83 => { return input.token(TName::LAnd) } 84 => { return input.token(TName::BAndAsgn) } 85 => { yyaccept = 7; input.marker = input.cursor; yych = input.data[input.cursor]; yystate = 86; continue 'yyl; } 86 => { match yych { 0x01 ..= 0x09 | 0x0B ..= 0x26 | 0x28 ..= 0x5B | 0x5D ..= 0x7F => { input.cursor += 1; yystate = 85; continue 'yyl; } 0x27 => { input.cursor += 1; yystate = 173; continue 'yyl; } 0x5C => { input.cursor += 1; yystate = 88; continue 'yyl; } 0xC2 ..= 0xDF => { input.cursor += 1; yystate = 89; continue 'yyl; } 0xE0 => { input.cursor += 1; yystate = 90; continue 'yyl; } 0xE1 ..= 0xEF => { input.cursor += 1; yystate = 91; continue 'yyl; } 0xF0 => { input.cursor += 1; yystate = 92; continue 'yyl; } 0xF1 ..= 0xF3 => { input.cursor += 1; yystate = 93; continue 'yyl; } 0xF4 => { input.cursor += 1; yystate = 94; continue 'yyl; } _ => { yystate = 87; continue 'yyl; } } } 87 => { return input.error("unterminated character constant") } 88 => { yych = input.data[input.cursor]; match yych { 0x22 | 0x27 | 0x30 ..= 0x37 | 0x3F | 0x5C | 0x61 ..= 0x62 | 0x66 | 0x6E | 0x72 | 0x74 | 0x76 => { input.cursor += 1; yystate = 85; continue 'yyl; } 0x78 => { input.cursor += 1; yystate = 174; continue 'yyl; } _ => { yystate = 75; continue 'yyl; } } } 89 => { yych = input.data[input.cursor]; match yych { 0x80 ..= 0xBF => { input.cursor += 1; yystate = 85; continue 'yyl; } _ => { yystate = 75; continue 'yyl; } } } 90 => { yych = input.data[input.cursor]; match yych { 0xA0 ..= 0xBF => { input.cursor += 1; yystate = 89; continue 'yyl; } _ => { yystate = 75; continue 'yyl; } } } 91 => { yych = input.data[input.cursor]; match yych { 0x80 ..= 0xBF => { input.cursor += 1; yystate = 89; continue 'yyl; } _ => { yystate = 75; continue 'yyl; } } } 92 => { yych = input.data[input.cursor]; match yych { 0x90 ..= 0xBF => { input.cursor += 1; yystate = 91; continue 'yyl; } _ => { yystate = 75; continue 'yyl; } } } 93 => { yych = input.data[input.cursor]; match yych { 0x80 ..= 0xBF => { input.cursor += 1; yystate = 91; continue 'yyl; } _ => { yystate = 75; continue 'yyl; } } } 94 => { yych = input.data[input.cursor]; match yych { 0x80 ..= 0x8F => { input.cursor += 1; yystate = 91; continue 'yyl; } _ => { yystate = 75; continue 'yyl; } } } 95 => { return input.token(TName::MulAsgn) } 96 => { return input.token(TName::Incr) } 97 => { return input.token(TName::AddAsgn) } 98 => { return input.token(TName::Decr) } 99 => { return input.token(TName::SubAsgn) } 100 => { return input.token(TName::Arrow) } 101 => { yych = input.data[input.cursor]; match yych { 0x2E => { input.cursor += 1; yystate = 175; continue 'yyl; } _ => { yystate = 75; continue 'yyl; } } } 102 => { yyaccept = 8; input.marker = input.cursor; yych = input.data[input.cursor]; match yych { 0x30 ..= 0x39 => { input.cursor += 1; yystate = 102; continue 'yyl; } 0x45 | 0x65 => { input.cursor += 1; yystate = 176; continue 'yyl; } 0x46 | 0x4C | 0x66 | 0x6C => { input.cursor += 1; yystate = 177; continue 'yyl; } _ => { yystate = 103; continue 'yyl; } } } 103 => { return input.token(TName::FloatConst) } 104 => { yyaccept = 9; input.marker = input.cursor; yych = input.data[input.cursor]; match yych { 0x01 ..= 0x29 | 0x2B ..= 0x7F => { input.cursor += 1; yystate = 104; continue 'yyl; } 0x2A => { input.cursor += 1; yystate = 178; continue 'yyl; } 0xC2 ..= 0xDF => { input.cursor += 1; yystate = 179; continue 'yyl; } 0xE0 => { input.cursor += 1; yystate = 180; continue 'yyl; } 0xE1 ..= 0xEF => { input.cursor += 1; yystate = 181; continue 'yyl; } 0xF0 => { input.cursor += 1; yystate = 182; continue 'yyl; } 0xF1 ..= 0xF3 => { input.cursor += 1; yystate = 183; continue 'yyl; } 0xF4 => { input.cursor += 1; yystate = 184; continue 'yyl; } _ => { yystate = 105; continue 'yyl; } } } 105 => { return input.error("unterminated comment") } 106 => { yyaccept = 10; input.marker = input.cursor; yych = input.data[input.cursor]; match yych { 0x01 ..= 0x09 | 0x0B ..= 0x7F => { input.cursor += 1; yystate = 106; continue 'yyl; } 0xC2 ..= 0xDF => { input.cursor += 1; yystate = 185; continue 'yyl; } 0xE0 => { input.cursor += 1; yystate = 186; continue 'yyl; } 0xE1 ..= 0xEF => { input.cursor += 1; yystate = 187; continue 'yyl; } 0xF0 => { input.cursor += 1; yystate = 188; continue 'yyl; } 0xF1 ..= 0xF3 => { input.cursor += 1; yystate = 189; continue 'yyl; } 0xF4 => { input.cursor += 1; yystate = 190; continue 'yyl; } _ => { yystate = 107; continue 'yyl; } } } 107 => { return input.token(TName::Comment) } 108 => { return input.token(TName::DivAsgn) } 109 => { yyaccept = 11; input.marker = input.cursor; yych = input.data[input.cursor]; match yych { 0x30 ..= 0x39 => { input.cursor += 1; yystate = 102; continue 'yyl; } 0x45 | 0x65 => { input.cursor += 1; yystate = 191; continue 'yyl; } 0x46 | 0x4C | 0x66 | 0x6C => { input.cursor += 1; yystate = 192; continue 'yyl; } _ => { yystate = 110; continue 'yyl; } } } 110 => { return input.token(TName::FloatConst) } 111 => { yyaccept = 3; input.marker = input.cursor; yych = input.data[input.cursor]; yystate = 112; continue 'yyl; } 112 => { match yych { 0x2E => { input.cursor += 1; yystate = 109; continue 'yyl; } 0x30 ..= 0x37 => { input.cursor += 1; yystate = 111; continue 'yyl; } 0x38 ..= 0x39 => { input.cursor += 1; yystate = 113; continue 'yyl; } 0x45 | 0x65 => { input.cursor += 1; yystate = 114; continue 'yyl; } 0x4C => { input.cursor += 1; yystate = 115; continue 'yyl; } 0x55 | 0x75 => { input.cursor += 1; yystate = 116; continue 'yyl; } 0x6C => { input.cursor += 1; yystate = 118; continue 'yyl; } _ => { yystate = 30; continue 'yyl; } } } 113 => { yych = input.data[input.cursor]; match yych { 0x2E => { input.cursor += 1; yystate = 109; continue 'yyl; } 0x30 ..= 0x39 => { input.cursor += 1; yystate = 113; continue 'yyl; } 0x45 | 0x65 => { input.cursor += 1; yystate = 114; continue 'yyl; } _ => { yystate = 75; continue 'yyl; } } } 114 => { yych = input.data[input.cursor]; match yych { 0x2B | 0x2D => { input.cursor += 1; yystate = 193; continue 'yyl; } 0x30 ..= 0x39 => { input.cursor += 1; yystate = 194; continue 'yyl; } _ => { yystate = 75; continue 'yyl; } } } 115 => { yych = input.data[input.cursor]; match yych { 0x4C => { input.cursor += 1; yystate = 196; continue 'yyl; } 0x55 | 0x75 => { input.cursor += 1; yystate = 197; continue 'yyl; } _ => { yystate = 30; continue 'yyl; } } } 116 => { yych = input.data[input.cursor]; match yych { 0x4C => { input.cursor += 1; yystate = 198; continue 'yyl; } 0x6C => { input.cursor += 1; yystate = 199; continue 'yyl; } _ => { yystate = 30; continue 'yyl; } } } 117 => { yych = input.data[input.cursor]; match yych { 0x2E => { input.cursor += 1; yystate = 200; continue 'yyl; } 0x30 ..= 0x39 | 0x41 ..= 0x46 | 0x61 ..= 0x66 => { input.cursor += 1; yystate = 201; continue 'yyl; } _ => { yystate = 75; continue 'yyl; } } } 118 => { yych = input.data[input.cursor]; match yych { 0x55 | 0x75 => { input.cursor += 1; yystate = 197; continue 'yyl; } 0x6C => { input.cursor += 1; yystate = 196; continue 'yyl; } _ => { yystate = 30; continue 'yyl; } } } 119 => { yych = input.data[input.cursor]; match yych { 0x4C => { input.cursor += 1; yystate = 203; continue 'yyl; } 0x55 | 0x75 => { input.cursor += 1; yystate = 204; continue 'yyl; } _ => { yystate = 32; continue 'yyl; } } } 120 => { yych = input.data[input.cursor]; match yych { 0x4C => { input.cursor += 1; yystate = 205; continue 'yyl; } 0x6C => { input.cursor += 1; yystate = 206; continue 'yyl; } _ => { yystate = 32; continue 'yyl; } } } 121 => { yych = input.data[input.cursor]; match yych { 0x55 | 0x75 => { input.cursor += 1; yystate = 204; continue 'yyl; } 0x6C => { input.cursor += 1; yystate = 203; continue 'yyl; } _ => { yystate = 32; continue 'yyl; } } } 122 => { yych = input.data[input.cursor]; match yych { 0x3D => { input.cursor += 1; yystate = 207; continue 'yyl; } _ => { yystate = 123; continue 'yyl; } } } 123 => { return input.token(TName::LShift) } 124 => { return input.token(TName::LE) } 125 => { return input.token(TName::Eq) } 126 => { return input.token(TName::GE) } 127 => { yych = input.data[input.cursor]; match yych { 0x3D => { input.cursor += 1; yystate = 208; continue 'yyl; } _ => { yystate = 128; continue 'yyl; } } } 128 => { return input.token(TName::RShift) } 129 => { yych = input.data[input.cursor]; match yych { 0x01 ..= 0x09 | 0x0B ..= 0x26 | 0x28 ..= 0x7F | 0xC2 ..= 0xF4 => { yystate = 86; continue 'yyl; } _ => { yystate = 75; continue 'yyl; } } } 130 => { return input.token(TName::BXorAsgn) } 131 => { yych = input.data[input.cursor]; match yych { 0x6C => { input.cursor += 1; yystate = 209; continue 'yyl; } 0x74 => { input.cursor += 1; yystate = 210; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 132 => { yych = input.data[input.cursor]; match yych { 0x6F => { input.cursor += 1; yystate = 211; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 133 => { yych = input.data[input.cursor]; match yych { 0x6F => { input.cursor += 1; yystate = 212; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 134 => { yych = input.data[input.cursor]; match yych { 0x65 => { input.cursor += 1; yystate = 213; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 135 => { yych = input.data[input.cursor]; match yych { 0x6D => { input.cursor += 1; yystate = 214; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 136 => { yych = input.data[input.cursor]; match yych { 0x6F => { input.cursor += 1; yystate = 215; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 137 => { yych = input.data[input.cursor]; match yych { 0x74 => { input.cursor += 1; yystate = 216; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 138 => { yych = input.data[input.cursor]; match yych { 0x68 => { input.cursor += 1; yystate = 217; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 139 => { yych = input.data[input.cursor]; match yych { 0x74 => { input.cursor += 1; yystate = 218; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 140 => { yych = input.data[input.cursor]; match yych { 0x65 => { input.cursor += 1; yystate = 219; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 141 => { yych = input.data[input.cursor]; match yych { 0x73 => { input.cursor += 1; yystate = 220; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 142 => { yych = input.data[input.cursor]; match yych { 0x61 => { input.cursor += 1; yystate = 221; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 143 => { yych = input.data[input.cursor]; match yych { 0x6E => { input.cursor += 1; yystate = 222; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 144 => { yych = input.data[input.cursor]; match yych { 0x66 => { input.cursor += 1; yystate = 223; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 145 => { yych = input.data[input.cursor]; match yych { 0x30 ..= 0x39 | 0x41 ..= 0x5A | 0x5F | 0x61 ..= 0x74 | 0x76 ..= 0x7A => { input.cursor += 1; yystate = 42; continue 'yyl; } 0x75 => { input.cursor += 1; yystate = 224; continue 'yyl; } _ => { yystate = 146; continue 'yyl; } } } 146 => { return input.token(TName::Do) } 147 => { yych = input.data[input.cursor]; match yych { 0x73 => { input.cursor += 1; yystate = 225; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 148 => { yych = input.data[input.cursor]; match yych { 0x75 => { input.cursor += 1; yystate = 226; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 149 => { yych = input.data[input.cursor]; match yych { 0x74 => { input.cursor += 1; yystate = 227; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 150 => { yych = input.data[input.cursor]; match yych { 0x6F => { input.cursor += 1; yystate = 228; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 151 => { yych = input.data[input.cursor]; match yych { 0x72 => { input.cursor += 1; yystate = 229; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 152 => { yych = input.data[input.cursor]; match yych { 0x74 => { input.cursor += 1; yystate = 231; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 153 => { yych = input.data[input.cursor]; match yych { 0x30 ..= 0x39 | 0x41 ..= 0x5A | 0x5F | 0x61 ..= 0x7A => { input.cursor += 1; yystate = 42; continue 'yyl; } _ => { yystate = 154; continue 'yyl; } } } 154 => { return input.token(TName::If) } 155 => { yych = input.data[input.cursor]; match yych { 0x6C => { input.cursor += 1; yystate = 232; continue 'yyl; } 0x74 => { input.cursor += 1; yystate = 233; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 156 => { yych = input.data[input.cursor]; match yych { 0x6E => { input.cursor += 1; yystate = 235; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 157 => { yych = input.data[input.cursor]; match yych { 0x67 => { input.cursor += 1; yystate = 236; continue 'yyl; } 0x73 => { input.cursor += 1; yystate = 237; continue 'yyl; } 0x74 => { input.cursor += 1; yystate = 238; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 158 => { yych = input.data[input.cursor]; match yych { 0x6F => { input.cursor += 1; yystate = 239; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 159 => { yych = input.data[input.cursor]; match yych { 0x67 => { input.cursor += 1; yystate = 240; continue 'yyl; } 0x7A => { input.cursor += 1; yystate = 241; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 160 => { yych = input.data[input.cursor]; match yych { 0x61 => { input.cursor += 1; yystate = 242; continue 'yyl; } 0x72 => { input.cursor += 1; yystate = 243; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 161 => { yych = input.data[input.cursor]; match yych { 0x69 => { input.cursor += 1; yystate = 244; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 162 => { yych = input.data[input.cursor]; match yych { 0x70 => { input.cursor += 1; yystate = 245; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 163 => { yych = input.data[input.cursor]; match yych { 0x22 => { input.cursor += 1; yystate = 9; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 164 => { yych = input.data[input.cursor]; match yych { 0x69 => { input.cursor += 1; yystate = 246; continue 'yyl; } 0x73 => { input.cursor += 1; yystate = 247; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 165 => { yych = input.data[input.cursor]; match yych { 0x69 => { input.cursor += 1; yystate = 248; continue 'yyl; } 0x6C => { input.cursor += 1; yystate = 249; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 166 => { yych = input.data[input.cursor]; match yych { 0x69 => { input.cursor += 1; yystate = 250; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 167 => { return input.token(TName::BOrAsgn) } 168 => { return input.token(TName::LOr) } 169 => { yych = input.data[input.cursor]; match yych { 0x01 ..= 0x09 | 0x0B ..= 0x21 | 0x23 ..= 0x5B | 0x5D ..= 0x7F => { input.cursor += 1; yystate = 169; continue 'yyl; } 0x22 => { input.cursor += 1; yystate = 72; continue 'yyl; } 0x5C => { input.cursor += 1; yystate = 251; continue 'yyl; } 0xC2 ..= 0xDF => { input.cursor += 1; yystate = 252; continue 'yyl; } 0xE0 => { input.cursor += 1; yystate = 253; continue 'yyl; } 0xE1 ..= 0xEF => { input.cursor += 1; yystate = 254; continue 'yyl; } 0xF0 => { input.cursor += 1; yystate = 255; continue 'yyl; } 0xF1 ..= 0xF3 => { input.cursor += 1; yystate = 256; continue 'yyl; } 0xF4 => { input.cursor += 1; yystate = 257; continue 'yyl; } _ => { yystate = 75; continue 'yyl; } } } 170 => { yych = input.data[input.cursor]; match yych { 0x22 => { input.cursor += 1; yystate = 169; continue 'yyl; } _ => { yystate = 75; continue 'yyl; } } } 171 => { yych = input.data[input.cursor]; match yych { 0x22 => { input.cursor += 1; yystate = 169; continue 'yyl; } 0x38 => { input.cursor += 1; yystate = 170; continue 'yyl; } _ => { yystate = 75; continue 'yyl; } } } 172 => { yych = input.data[input.cursor]; match yych { 0x30 ..= 0x39 | 0x41 ..= 0x46 | 0x61 ..= 0x66 => { input.cursor += 1; yystate = 9; continue 'yyl; } _ => { yystate = 75; continue 'yyl; } } } 173 => { return input.token(TName::IntConst) } 174 => { yych = input.data[input.cursor]; match yych { 0x30 ..= 0x39 | 0x41 ..= 0x46 | 0x61 ..= 0x66 => { input.cursor += 1; yystate = 85; continue 'yyl; } _ => { yystate = 75; continue 'yyl; } } } 175 => { return input.token(TName::Ellipsis) } 176 => { yych = input.data[input.cursor]; match yych { 0x2B | 0x2D => { input.cursor += 1; yystate = 258; continue 'yyl; } 0x30 ..= 0x39 => { input.cursor += 1; yystate = 259; continue 'yyl; } _ => { yystate = 75; continue 'yyl; } } } 177 => { yystate = 103; continue 'yyl; } 178 => { yych = input.data[input.cursor]; match yych { 0x01 ..= 0x29 | 0x2B ..= 0x2E | 0x30 ..= 0x7F => { input.cursor += 1; yystate = 104; continue 'yyl; } 0x2A => { input.cursor += 1; yystate = 260; continue 'yyl; } 0x2F => { input.cursor += 1; yystate = 261; continue 'yyl; } 0xC2 ..= 0xDF => { input.cursor += 1; yystate = 179; continue 'yyl; } 0xE0 => { input.cursor += 1; yystate = 180; continue 'yyl; } 0xE1 ..= 0xEF => { input.cursor += 1; yystate = 181; continue 'yyl; } 0xF0 => { input.cursor += 1; yystate = 182; continue 'yyl; } 0xF1 ..= 0xF3 => { input.cursor += 1; yystate = 183; continue 'yyl; } 0xF4 => { input.cursor += 1; yystate = 184; continue 'yyl; } _ => { yystate = 75; continue 'yyl; } } } 179 => { yych = input.data[input.cursor]; match yych { 0x80 ..= 0xBF => { input.cursor += 1; yystate = 104; continue 'yyl; } _ => { yystate = 75; continue 'yyl; } } } 180 => { yych = input.data[input.cursor]; match yych { 0xA0 ..= 0xBF => { input.cursor += 1; yystate = 179; continue 'yyl; } _ => { yystate = 75; continue 'yyl; } } } 181 => { yych = input.data[input.cursor]; match yych { 0x80 ..= 0xBF => { input.cursor += 1; yystate = 179; continue 'yyl; } _ => { yystate = 75; continue 'yyl; } } } 182 => { yych = input.data[input.cursor]; match yych { 0x90 ..= 0xBF => { input.cursor += 1; yystate = 181; continue 'yyl; } _ => { yystate = 75; continue 'yyl; } } } 183 => { yych = input.data[input.cursor]; match yych { 0x80 ..= 0xBF => { input.cursor += 1; yystate = 181; continue 'yyl; } _ => { yystate = 75; continue 'yyl; } } } 184 => { yych = input.data[input.cursor]; match yych { 0x80 ..= 0x8F => { input.cursor += 1; yystate = 181; continue 'yyl; } _ => { yystate = 75; continue 'yyl; } } } 185 => { yych = input.data[input.cursor]; match yych { 0x80 ..= 0xBF => { input.cursor += 1; yystate = 106; continue 'yyl; } _ => { yystate = 75; continue 'yyl; } } } 186 => { yych = input.data[input.cursor]; match yych { 0xA0 ..= 0xBF => { input.cursor += 1; yystate = 185; continue 'yyl; } _ => { yystate = 75; continue 'yyl; } } } 187 => { yych = input.data[input.cursor]; match yych { 0x80 ..= 0xBF => { input.cursor += 1; yystate = 185; continue 'yyl; } _ => { yystate = 75; continue 'yyl; } } } 188 => { yych = input.data[input.cursor]; match yych { 0x90 ..= 0xBF => { input.cursor += 1; yystate = 187; continue 'yyl; } _ => { yystate = 75; continue 'yyl; } } } 189 => { yych = input.data[input.cursor]; match yych { 0x80 ..= 0xBF => { input.cursor += 1; yystate = 187; continue 'yyl; } _ => { yystate = 75; continue 'yyl; } } } 190 => { yych = input.data[input.cursor]; match yych { 0x80 ..= 0x8F => { input.cursor += 1; yystate = 187; continue 'yyl; } _ => { yystate = 75; continue 'yyl; } } } 191 => { yych = input.data[input.cursor]; match yych { 0x2B | 0x2D => { input.cursor += 1; yystate = 263; continue 'yyl; } 0x30 ..= 0x39 => { input.cursor += 1; yystate = 264; continue 'yyl; } _ => { yystate = 75; continue 'yyl; } } } 192 => { yystate = 110; continue 'yyl; } 193 => { yych = input.data[input.cursor]; match yych { 0x30 ..= 0x39 => { input.cursor += 1; yystate = 194; continue 'yyl; } _ => { yystate = 75; continue 'yyl; } } } 194 => { yych = input.data[input.cursor]; match yych { 0x30 ..= 0x39 => { input.cursor += 1; yystate = 194; continue 'yyl; } 0x46 | 0x4C | 0x66 | 0x6C => { input.cursor += 1; yystate = 265; continue 'yyl; } _ => { yystate = 195; continue 'yyl; } } } 195 => { return input.token(TName::FloatConst) } 196 => { yych = input.data[input.cursor]; match yych { 0x55 | 0x75 => { input.cursor += 1; yystate = 197; continue 'yyl; } _ => { yystate = 30; continue 'yyl; } } } 197 => { yystate = 30; continue 'yyl; } 198 => { yych = input.data[input.cursor]; match yych { 0x4C => { input.cursor += 1; yystate = 197; continue 'yyl; } _ => { yystate = 30; continue 'yyl; } } } 199 => { yych = input.data[input.cursor]; match yych { 0x6C => { input.cursor += 1; yystate = 197; continue 'yyl; } _ => { yystate = 30; continue 'yyl; } } } 200 => { yych = input.data[input.cursor]; match yych { 0x50 | 0x70 => { yystate = 75; continue 'yyl; } _ => { yystate = 267; continue 'yyl; } } } 201 => { yyaccept = 12; input.marker = input.cursor; yych = input.data[input.cursor]; match yych { 0x2E => { input.cursor += 1; yystate = 268; continue 'yyl; } 0x30 ..= 0x39 | 0x41 ..= 0x46 | 0x61 ..= 0x66 => { input.cursor += 1; yystate = 201; continue 'yyl; } 0x4C => { input.cursor += 1; yystate = 269; continue 'yyl; } 0x50 | 0x70 => { input.cursor += 1; yystate = 270; continue 'yyl; } 0x55 | 0x75 => { input.cursor += 1; yystate = 271; continue 'yyl; } 0x6C => { input.cursor += 1; yystate = 272; continue 'yyl; } _ => { yystate = 202; continue 'yyl; } } } 202 => { return input.token(TName::IntConst) } 203 => { yych = input.data[input.cursor]; match yych { 0x55 | 0x75 => { input.cursor += 1; yystate = 204; continue 'yyl; } _ => { yystate = 32; continue 'yyl; } } } 204 => { yystate = 32; continue 'yyl; } 205 => { yych = input.data[input.cursor]; match yych { 0x4C => { input.cursor += 1; yystate = 204; continue 'yyl; } _ => { yystate = 32; continue 'yyl; } } } 206 => { yych = input.data[input.cursor]; match yych { 0x6C => { input.cursor += 1; yystate = 204; continue 'yyl; } _ => { yystate = 32; continue 'yyl; } } } 207 => { return input.token(TName::LSAsgn) } 208 => { return input.token(TName::RSAsgn) } 209 => { yych = input.data[input.cursor]; match yych { 0x69 => { input.cursor += 1; yystate = 273; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 210 => { yych = input.data[input.cursor]; match yych { 0x6F => { input.cursor += 1; yystate = 274; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 211 => { yych = input.data[input.cursor]; match yych { 0x6F => { input.cursor += 1; yystate = 275; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 212 => { yych = input.data[input.cursor]; match yych { 0x6D => { input.cursor += 1; yystate = 276; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 213 => { yych = input.data[input.cursor]; match yych { 0x6E => { input.cursor += 1; yystate = 277; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 214 => { yych = input.data[input.cursor]; match yych { 0x61 => { input.cursor += 1; yystate = 278; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 215 => { yych = input.data[input.cursor]; match yych { 0x72 => { input.cursor += 1; yystate = 279; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 216 => { yych = input.data[input.cursor]; match yych { 0x61 => { input.cursor += 1; yystate = 280; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 217 => { yych = input.data[input.cursor]; match yych { 0x72 => { input.cursor += 1; yystate = 281; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 218 => { yych = input.data[input.cursor]; match yych { 0x6F => { input.cursor += 1; yystate = 282; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 219 => { yych = input.data[input.cursor]; match yych { 0x61 => { input.cursor += 1; yystate = 284; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 220 => { yych = input.data[input.cursor]; match yych { 0x65 => { input.cursor += 1; yystate = 285; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 221 => { yych = input.data[input.cursor]; match yych { 0x72 => { input.cursor += 1; yystate = 287; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 222 => { yych = input.data[input.cursor]; match yych { 0x73 => { input.cursor += 1; yystate = 289; continue 'yyl; } 0x74 => { input.cursor += 1; yystate = 290; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 223 => { yych = input.data[input.cursor]; match yych { 0x61 => { input.cursor += 1; yystate = 291; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 224 => { yych = input.data[input.cursor]; match yych { 0x62 => { input.cursor += 1; yystate = 292; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 225 => { yych = input.data[input.cursor]; match yych { 0x65 => { input.cursor += 1; yystate = 293; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 226 => { yych = input.data[input.cursor]; match yych { 0x6D => { input.cursor += 1; yystate = 295; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 227 => { yych = input.data[input.cursor]; match yych { 0x65 => { input.cursor += 1; yystate = 297; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 228 => { yych = input.data[input.cursor]; match yych { 0x61 => { input.cursor += 1; yystate = 298; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 229 => { yych = input.data[input.cursor]; match yych { 0x30 ..= 0x39 | 0x41 ..= 0x5A | 0x5F | 0x61 ..= 0x7A => { input.cursor += 1; yystate = 42; continue 'yyl; } _ => { yystate = 230; continue 'yyl; } } } 230 => { return input.token(TName::For) } 231 => { yych = input.data[input.cursor]; match yych { 0x6F => { input.cursor += 1; yystate = 299; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 232 => { yych = input.data[input.cursor]; match yych { 0x69 => { input.cursor += 1; yystate = 301; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 233 => { yych = input.data[input.cursor]; match yych { 0x30 ..= 0x39 | 0x41 ..= 0x5A | 0x5F | 0x61 ..= 0x7A => { input.cursor += 1; yystate = 42; continue 'yyl; } _ => { yystate = 234; continue 'yyl; } } } 234 => { return input.token(TName::Int) } 235 => { yych = input.data[input.cursor]; match yych { 0x67 => { input.cursor += 1; yystate = 302; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 236 => { yych = input.data[input.cursor]; match yych { 0x69 => { input.cursor += 1; yystate = 304; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 237 => { yych = input.data[input.cursor]; match yych { 0x74 => { input.cursor += 1; yystate = 305; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 238 => { yych = input.data[input.cursor]; match yych { 0x75 => { input.cursor += 1; yystate = 306; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 239 => { yych = input.data[input.cursor]; match yych { 0x72 => { input.cursor += 1; yystate = 307; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 240 => { yych = input.data[input.cursor]; match yych { 0x6E => { input.cursor += 1; yystate = 308; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 241 => { yych = input.data[input.cursor]; match yych { 0x65 => { input.cursor += 1; yystate = 309; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 242 => { yych = input.data[input.cursor]; match yych { 0x74 => { input.cursor += 1; yystate = 310; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 243 => { yych = input.data[input.cursor]; match yych { 0x75 => { input.cursor += 1; yystate = 311; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 244 => { yych = input.data[input.cursor]; match yych { 0x74 => { input.cursor += 1; yystate = 312; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 245 => { yych = input.data[input.cursor]; match yych { 0x65 => { input.cursor += 1; yystate = 313; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 246 => { yych = input.data[input.cursor]; match yych { 0x6F => { input.cursor += 1; yystate = 314; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 247 => { yych = input.data[input.cursor]; match yych { 0x69 => { input.cursor += 1; yystate = 315; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 248 => { yych = input.data[input.cursor]; match yych { 0x64 => { input.cursor += 1; yystate = 316; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 249 => { yych = input.data[input.cursor]; match yych { 0x61 => { input.cursor += 1; yystate = 318; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 250 => { yych = input.data[input.cursor]; match yych { 0x6C => { input.cursor += 1; yystate = 319; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 251 => { yych = input.data[input.cursor]; match yych { 0x22 | 0x27 | 0x30 ..= 0x37 | 0x3F | 0x5C | 0x61 ..= 0x62 | 0x66 | 0x6E | 0x72 | 0x74 | 0x76 => { input.cursor += 1; yystate = 169; continue 'yyl; } 0x78 => { input.cursor += 1; yystate = 320; continue 'yyl; } _ => { yystate = 75; continue 'yyl; } } } 252 => { yych = input.data[input.cursor]; match yych { 0x80 ..= 0xBF => { input.cursor += 1; yystate = 169; continue 'yyl; } _ => { yystate = 75; continue 'yyl; } } } 253 => { yych = input.data[input.cursor]; match yych { 0xA0 ..= 0xBF => { input.cursor += 1; yystate = 252; continue 'yyl; } _ => { yystate = 75; continue 'yyl; } } } 254 => { yych = input.data[input.cursor]; match yych { 0x80 ..= 0xBF => { input.cursor += 1; yystate = 252; continue 'yyl; } _ => { yystate = 75; continue 'yyl; } } } 255 => { yych = input.data[input.cursor]; match yych { 0x90 ..= 0xBF => { input.cursor += 1; yystate = 254; continue 'yyl; } _ => { yystate = 75; continue 'yyl; } } } 256 => { yych = input.data[input.cursor]; match yych { 0x80 ..= 0xBF => { input.cursor += 1; yystate = 254; continue 'yyl; } _ => { yystate = 75; continue 'yyl; } } } 257 => { yych = input.data[input.cursor]; match yych { 0x80 ..= 0x8F => { input.cursor += 1; yystate = 254; continue 'yyl; } _ => { yystate = 75; continue 'yyl; } } } 258 => { yych = input.data[input.cursor]; match yych { 0x30 ..= 0x39 => { input.cursor += 1; yystate = 259; continue 'yyl; } _ => { yystate = 75; continue 'yyl; } } } 259 => { yych = input.data[input.cursor]; match yych { 0x30 ..= 0x39 => { input.cursor += 1; yystate = 259; continue 'yyl; } 0x46 | 0x4C | 0x66 | 0x6C => { input.cursor += 1; yystate = 177; continue 'yyl; } _ => { yystate = 103; continue 'yyl; } } } 260 => { yyaccept = 9; input.marker = input.cursor; yych = input.data[input.cursor]; match yych { 0x01 ..= 0x29 | 0x2B ..= 0x2E | 0x30 ..= 0x7F => { input.cursor += 1; yystate = 104; continue 'yyl; } 0x2A => { input.cursor += 1; yystate = 260; continue 'yyl; } 0x2F => { input.cursor += 1; yystate = 321; continue 'yyl; } 0xC2 ..= 0xDF => { input.cursor += 1; yystate = 179; continue 'yyl; } 0xE0 => { input.cursor += 1; yystate = 180; continue 'yyl; } 0xE1 ..= 0xEF => { input.cursor += 1; yystate = 181; continue 'yyl; } 0xF0 => { input.cursor += 1; yystate = 182; continue 'yyl; } 0xF1 ..= 0xF3 => { input.cursor += 1; yystate = 183; continue 'yyl; } 0xF4 => { input.cursor += 1; yystate = 184; continue 'yyl; } _ => { yystate = 105; continue 'yyl; } } } 261 => { yystate = 262; continue 'yyl; } 262 => { return input.token(TName::Comment) } 263 => { yych = input.data[input.cursor]; match yych { 0x30 ..= 0x39 => { input.cursor += 1; yystate = 264; continue 'yyl; } _ => { yystate = 75; continue 'yyl; } } } 264 => { yych = input.data[input.cursor]; match yych { 0x30 ..= 0x39 => { input.cursor += 1; yystate = 264; continue 'yyl; } 0x46 | 0x4C | 0x66 | 0x6C => { input.cursor += 1; yystate = 192; continue 'yyl; } _ => { yystate = 110; continue 'yyl; } } } 265 => { yystate = 195; continue 'yyl; } 266 => { yych = input.data[input.cursor]; yystate = 267; continue 'yyl; } 267 => { match yych { 0x30 ..= 0x39 | 0x41 ..= 0x46 | 0x61 ..= 0x66 => { input.cursor += 1; yystate = 266; continue 'yyl; } 0x50 | 0x70 => { input.cursor += 1; yystate = 322; continue 'yyl; } _ => { yystate = 75; continue 'yyl; } } } 268 => { yych = input.data[input.cursor]; match yych { 0x50 | 0x70 => { input.cursor += 1; yystate = 323; continue 'yyl; } _ => { yystate = 267; continue 'yyl; } } } 269 => { yych = input.data[input.cursor]; match yych { 0x4C => { input.cursor += 1; yystate = 324; continue 'yyl; } 0x55 | 0x75 => { input.cursor += 1; yystate = 325; continue 'yyl; } _ => { yystate = 202; continue 'yyl; } } } 270 => { yych = input.data[input.cursor]; match yych { 0x2B | 0x2D => { input.cursor += 1; yystate = 326; continue 'yyl; } 0x30 ..= 0x39 => { input.cursor += 1; yystate = 327; continue 'yyl; } _ => { yystate = 75; continue 'yyl; } } } 271 => { yych = input.data[input.cursor]; match yych { 0x4C => { input.cursor += 1; yystate = 329; continue 'yyl; } 0x6C => { input.cursor += 1; yystate = 330; continue 'yyl; } _ => { yystate = 202; continue 'yyl; } } } 272 => { yych = input.data[input.cursor]; match yych { 0x55 | 0x75 => { input.cursor += 1; yystate = 325; continue 'yyl; } 0x6C => { input.cursor += 1; yystate = 324; continue 'yyl; } _ => { yystate = 202; continue 'yyl; } } } 273 => { yych = input.data[input.cursor]; match yych { 0x67 => { input.cursor += 1; yystate = 331; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 274 => { yych = input.data[input.cursor]; match yych { 0x6D => { input.cursor += 1; yystate = 332; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 275 => { yych = input.data[input.cursor]; match yych { 0x6C => { input.cursor += 1; yystate = 333; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 276 => { yych = input.data[input.cursor]; match yych { 0x70 => { input.cursor += 1; yystate = 335; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 277 => { yych = input.data[input.cursor]; match yych { 0x65 => { input.cursor += 1; yystate = 336; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 278 => { yych = input.data[input.cursor]; match yych { 0x67 => { input.cursor += 1; yystate = 337; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 279 => { yych = input.data[input.cursor]; match yych { 0x65 => { input.cursor += 1; yystate = 338; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 280 => { yych = input.data[input.cursor]; match yych { 0x74 => { input.cursor += 1; yystate = 339; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 281 => { yych = input.data[input.cursor]; match yych { 0x65 => { input.cursor += 1; yystate = 340; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 282 => { yych = input.data[input.cursor]; match yych { 0x30 ..= 0x39 | 0x41 ..= 0x5A | 0x5F | 0x61 ..= 0x7A => { input.cursor += 1; yystate = 42; continue 'yyl; } _ => { yystate = 283; continue 'yyl; } } } 283 => { return input.token(TName::Auto) } 284 => { yych = input.data[input.cursor]; match yych { 0x6B => { input.cursor += 1; yystate = 341; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 285 => { yych = input.data[input.cursor]; match yych { 0x30 ..= 0x39 | 0x41 ..= 0x5A | 0x5F | 0x61 ..= 0x7A => { input.cursor += 1; yystate = 42; continue 'yyl; } _ => { yystate = 286; continue 'yyl; } } } 286 => { return input.token(TName::Case) } 287 => { yych = input.data[input.cursor]; match yych { 0x30 ..= 0x39 | 0x41 ..= 0x5A | 0x5F | 0x61 ..= 0x7A => { input.cursor += 1; yystate = 42; continue 'yyl; } _ => { yystate = 288; continue 'yyl; } } } 288 => { return input.token(TName::Char) } 289 => { yych = input.data[input.cursor]; match yych { 0x74 => { input.cursor += 1; yystate = 343; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 290 => { yych = input.data[input.cursor]; match yych { 0x69 => { input.cursor += 1; yystate = 345; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 291 => { yych = input.data[input.cursor]; match yych { 0x75 => { input.cursor += 1; yystate = 346; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 292 => { yych = input.data[input.cursor]; match yych { 0x6C => { input.cursor += 1; yystate = 347; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 293 => { yych = input.data[input.cursor]; match yych { 0x30 ..= 0x39 | 0x41 ..= 0x5A | 0x5F | 0x61 ..= 0x7A => { input.cursor += 1; yystate = 42; continue 'yyl; } _ => { yystate = 294; continue 'yyl; } } } 294 => { return input.token(TName::Else) } 295 => { yych = input.data[input.cursor]; match yych { 0x30 ..= 0x39 | 0x41 ..= 0x5A | 0x5F | 0x61 ..= 0x7A => { input.cursor += 1; yystate = 42; continue 'yyl; } _ => { yystate = 296; continue 'yyl; } } } 296 => { return input.token(TName::Enum) } 297 => { yych = input.data[input.cursor]; match yych { 0x72 => { input.cursor += 1; yystate = 348; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 298 => { yych = input.data[input.cursor]; match yych { 0x74 => { input.cursor += 1; yystate = 349; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 299 => { yych = input.data[input.cursor]; match yych { 0x30 ..= 0x39 | 0x41 ..= 0x5A | 0x5F | 0x61 ..= 0x7A => { input.cursor += 1; yystate = 42; continue 'yyl; } _ => { yystate = 300; continue 'yyl; } } } 300 => { return input.token(TName::Goto) } 301 => { yych = input.data[input.cursor]; match yych { 0x6E => { input.cursor += 1; yystate = 351; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 302 => { yych = input.data[input.cursor]; match yych { 0x30 ..= 0x39 | 0x41 ..= 0x5A | 0x5F | 0x61 ..= 0x7A => { input.cursor += 1; yystate = 42; continue 'yyl; } _ => { yystate = 303; continue 'yyl; } } } 303 => { return input.token(TName::Long) } 304 => { yych = input.data[input.cursor]; match yych { 0x73 => { input.cursor += 1; yystate = 352; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 305 => { yych = input.data[input.cursor]; match yych { 0x72 => { input.cursor += 1; yystate = 353; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 306 => { yych = input.data[input.cursor]; match yych { 0x72 => { input.cursor += 1; yystate = 354; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 307 => { yych = input.data[input.cursor]; match yych { 0x74 => { input.cursor += 1; yystate = 355; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 308 => { yych = input.data[input.cursor]; match yych { 0x65 => { input.cursor += 1; yystate = 357; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 309 => { yych = input.data[input.cursor]; match yych { 0x6F => { input.cursor += 1; yystate = 358; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 310 => { yych = input.data[input.cursor]; match yych { 0x69 => { input.cursor += 1; yystate = 359; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 311 => { yych = input.data[input.cursor]; match yych { 0x63 => { input.cursor += 1; yystate = 360; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 312 => { yych = input.data[input.cursor]; match yych { 0x63 => { input.cursor += 1; yystate = 361; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 313 => { yych = input.data[input.cursor]; match yych { 0x64 => { input.cursor += 1; yystate = 362; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 314 => { yych = input.data[input.cursor]; match yych { 0x6E => { input.cursor += 1; yystate = 363; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 315 => { yych = input.data[input.cursor]; match yych { 0x67 => { input.cursor += 1; yystate = 365; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 316 => { yych = input.data[input.cursor]; match yych { 0x30 ..= 0x39 | 0x41 ..= 0x5A | 0x5F | 0x61 ..= 0x7A => { input.cursor += 1; yystate = 42; continue 'yyl; } _ => { yystate = 317; continue 'yyl; } } } 317 => { return input.token(TName::Void) } 318 => { yych = input.data[input.cursor]; match yych { 0x74 => { input.cursor += 1; yystate = 366; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 319 => { yych = input.data[input.cursor]; match yych { 0x65 => { input.cursor += 1; yystate = 367; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 320 => { yych = input.data[input.cursor]; match yych { 0x30 ..= 0x39 | 0x41 ..= 0x46 | 0x61 ..= 0x66 => { input.cursor += 1; yystate = 169; continue 'yyl; } _ => { yystate = 75; continue 'yyl; } } } 321 => { yyaccept = 13; input.marker = input.cursor; yych = input.data[input.cursor]; match yych { 0x01 ..= 0x29 | 0x2B ..= 0x7F => { input.cursor += 1; yystate = 104; continue 'yyl; } 0x2A => { input.cursor += 1; yystate = 178; continue 'yyl; } 0xC2 ..= 0xDF => { input.cursor += 1; yystate = 179; continue 'yyl; } 0xE0 => { input.cursor += 1; yystate = 180; continue 'yyl; } 0xE1 ..= 0xEF => { input.cursor += 1; yystate = 181; continue 'yyl; } 0xF0 => { input.cursor += 1; yystate = 182; continue 'yyl; } 0xF1 ..= 0xF3 => { input.cursor += 1; yystate = 183; continue 'yyl; } 0xF4 => { input.cursor += 1; yystate = 184; continue 'yyl; } _ => { yystate = 262; continue 'yyl; } } } 322 => { yych = input.data[input.cursor]; match yych { 0x2B | 0x2D => { input.cursor += 1; yystate = 369; continue 'yyl; } 0x30 ..= 0x39 => { input.cursor += 1; yystate = 370; continue 'yyl; } _ => { yystate = 75; continue 'yyl; } } } 323 => { yych = input.data[input.cursor]; match yych { 0x2B | 0x2D => { input.cursor += 1; yystate = 372; continue 'yyl; } 0x30 ..= 0x39 => { input.cursor += 1; yystate = 373; continue 'yyl; } _ => { yystate = 75; continue 'yyl; } } } 324 => { yych = input.data[input.cursor]; match yych { 0x55 | 0x75 => { input.cursor += 1; yystate = 325; continue 'yyl; } _ => { yystate = 202; continue 'yyl; } } } 325 => { yystate = 202; continue 'yyl; } 326 => { yych = input.data[input.cursor]; match yych { 0x30 ..= 0x39 => { input.cursor += 1; yystate = 327; continue 'yyl; } _ => { yystate = 75; continue 'yyl; } } } 327 => { yych = input.data[input.cursor]; match yych { 0x30 ..= 0x39 => { input.cursor += 1; yystate = 327; continue 'yyl; } 0x46 | 0x4C | 0x66 | 0x6C => { input.cursor += 1; yystate = 375; continue 'yyl; } _ => { yystate = 328; continue 'yyl; } } } 328 => { return input.token(TName::FloatConst) } 329 => { yych = input.data[input.cursor]; match yych { 0x4C => { input.cursor += 1; yystate = 325; continue 'yyl; } _ => { yystate = 202; continue 'yyl; } } } 330 => { yych = input.data[input.cursor]; match yych { 0x6C => { input.cursor += 1; yystate = 325; continue 'yyl; } _ => { yystate = 202; continue 'yyl; } } } 331 => { yych = input.data[input.cursor]; match yych { 0x6E => { input.cursor += 1; yystate = 376; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 332 => { yych = input.data[input.cursor]; match yych { 0x69 => { input.cursor += 1; yystate = 377; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 333 => { yych = input.data[input.cursor]; match yych { 0x30 ..= 0x39 | 0x41 ..= 0x5A | 0x5F | 0x61 ..= 0x7A => { input.cursor += 1; yystate = 42; continue 'yyl; } _ => { yystate = 334; continue 'yyl; } } } 334 => { return input.token(TName::Bool) } 335 => { yych = input.data[input.cursor]; match yych { 0x6C => { input.cursor += 1; yystate = 378; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 336 => { yych = input.data[input.cursor]; match yych { 0x72 => { input.cursor += 1; yystate = 379; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 337 => { yych = input.data[input.cursor]; match yych { 0x69 => { input.cursor += 1; yystate = 380; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 338 => { yych = input.data[input.cursor]; match yych { 0x74 => { input.cursor += 1; yystate = 381; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 339 => { yych = input.data[input.cursor]; match yych { 0x69 => { input.cursor += 1; yystate = 382; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 340 => { yych = input.data[input.cursor]; match yych { 0x61 => { input.cursor += 1; yystate = 383; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 341 => { yych = input.data[input.cursor]; match yych { 0x30 ..= 0x39 | 0x41 ..= 0x5A | 0x5F | 0x61 ..= 0x7A => { input.cursor += 1; yystate = 42; continue 'yyl; } _ => { yystate = 342; continue 'yyl; } } } 342 => { return input.token(TName::Break) } 343 => { yych = input.data[input.cursor]; match yych { 0x30 ..= 0x39 | 0x41 ..= 0x5A | 0x5F | 0x61 ..= 0x7A => { input.cursor += 1; yystate = 42; continue 'yyl; } _ => { yystate = 344; continue 'yyl; } } } 344 => { return input.token(TName::Const) } 345 => { yych = input.data[input.cursor]; match yych { 0x6E => { input.cursor += 1; yystate = 384; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 346 => { yych = input.data[input.cursor]; match yych { 0x6C => { input.cursor += 1; yystate = 385; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 347 => { yych = input.data[input.cursor]; match yych { 0x65 => { input.cursor += 1; yystate = 386; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 348 => { yych = input.data[input.cursor]; match yych { 0x6E => { input.cursor += 1; yystate = 388; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 349 => { yych = input.data[input.cursor]; match yych { 0x30 ..= 0x39 | 0x41 ..= 0x5A | 0x5F | 0x61 ..= 0x7A => { input.cursor += 1; yystate = 42; continue 'yyl; } _ => { yystate = 350; continue 'yyl; } } } 350 => { return input.token(TName::Float) } 351 => { yych = input.data[input.cursor]; match yych { 0x65 => { input.cursor += 1; yystate = 390; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 352 => { yych = input.data[input.cursor]; match yych { 0x74 => { input.cursor += 1; yystate = 392; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 353 => { yych = input.data[input.cursor]; match yych { 0x69 => { input.cursor += 1; yystate = 393; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 354 => { yych = input.data[input.cursor]; match yych { 0x6E => { input.cursor += 1; yystate = 394; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 355 => { yych = input.data[input.cursor]; match yych { 0x30 ..= 0x39 | 0x41 ..= 0x5A | 0x5F | 0x61 ..= 0x7A => { input.cursor += 1; yystate = 42; continue 'yyl; } _ => { yystate = 356; continue 'yyl; } } } 356 => { return input.token(TName::Short) } 357 => { yych = input.data[input.cursor]; match yych { 0x64 => { input.cursor += 1; yystate = 396; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 358 => { yych = input.data[input.cursor]; match yych { 0x66 => { input.cursor += 1; yystate = 398; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 359 => { yych = input.data[input.cursor]; match yych { 0x63 => { input.cursor += 1; yystate = 400; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 360 => { yych = input.data[input.cursor]; match yych { 0x74 => { input.cursor += 1; yystate = 402; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 361 => { yych = input.data[input.cursor]; match yych { 0x68 => { input.cursor += 1; yystate = 404; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 362 => { yych = input.data[input.cursor]; match yych { 0x65 => { input.cursor += 1; yystate = 406; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 363 => { yych = input.data[input.cursor]; match yych { 0x30 ..= 0x39 | 0x41 ..= 0x5A | 0x5F | 0x61 ..= 0x7A => { input.cursor += 1; yystate = 42; continue 'yyl; } _ => { yystate = 364; continue 'yyl; } } } 364 => { return input.token(TName::Union) } 365 => { yych = input.data[input.cursor]; match yych { 0x6E => { input.cursor += 1; yystate = 407; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 366 => { yych = input.data[input.cursor]; match yych { 0x69 => { input.cursor += 1; yystate = 408; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 367 => { yych = input.data[input.cursor]; match yych { 0x30 ..= 0x39 | 0x41 ..= 0x5A | 0x5F | 0x61 ..= 0x7A => { input.cursor += 1; yystate = 42; continue 'yyl; } _ => { yystate = 368; continue 'yyl; } } } 368 => { return input.token(TName::While) } 369 => { yych = input.data[input.cursor]; match yych { 0x30 ..= 0x39 => { input.cursor += 1; yystate = 370; continue 'yyl; } _ => { yystate = 75; continue 'yyl; } } } 370 => { yych = input.data[input.cursor]; match yych { 0x30 ..= 0x39 => { input.cursor += 1; yystate = 370; continue 'yyl; } 0x46 | 0x4C | 0x66 | 0x6C => { input.cursor += 1; yystate = 409; continue 'yyl; } _ => { yystate = 371; continue 'yyl; } } } 371 => { return input.token(TName::FloatConst) } 372 => { yych = input.data[input.cursor]; match yych { 0x30 ..= 0x39 => { input.cursor += 1; yystate = 373; continue 'yyl; } _ => { yystate = 75; continue 'yyl; } } } 373 => { yych = input.data[input.cursor]; match yych { 0x30 ..= 0x39 => { input.cursor += 1; yystate = 373; continue 'yyl; } 0x46 | 0x4C | 0x66 | 0x6C => { input.cursor += 1; yystate = 410; continue 'yyl; } _ => { yystate = 374; continue 'yyl; } } } 374 => { return input.token(TName::FloatConst) } 375 => { yystate = 328; continue 'yyl; } 376 => { yych = input.data[input.cursor]; match yych { 0x61 => { input.cursor += 1; yystate = 411; continue 'yyl; } 0x6F => { input.cursor += 1; yystate = 412; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 377 => { yych = input.data[input.cursor]; match yych { 0x63 => { input.cursor += 1; yystate = 413; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 378 => { yych = input.data[input.cursor]; match yych { 0x65 => { input.cursor += 1; yystate = 415; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 379 => { yych = input.data[input.cursor]; match yych { 0x69 => { input.cursor += 1; yystate = 416; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 380 => { yych = input.data[input.cursor]; match yych { 0x6E => { input.cursor += 1; yystate = 417; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 381 => { yych = input.data[input.cursor]; match yych { 0x75 => { input.cursor += 1; yystate = 418; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 382 => { yych = input.data[input.cursor]; match yych { 0x63 => { input.cursor += 1; yystate = 419; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 383 => { yych = input.data[input.cursor]; match yych { 0x64 => { input.cursor += 1; yystate = 420; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 384 => { yych = input.data[input.cursor]; match yych { 0x75 => { input.cursor += 1; yystate = 421; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 385 => { yych = input.data[input.cursor]; match yych { 0x74 => { input.cursor += 1; yystate = 422; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 386 => { yych = input.data[input.cursor]; match yych { 0x30 ..= 0x39 | 0x41 ..= 0x5A | 0x5F | 0x61 ..= 0x7A => { input.cursor += 1; yystate = 42; continue 'yyl; } _ => { yystate = 387; continue 'yyl; } } } 387 => { return input.token(TName::Double) } 388 => { yych = input.data[input.cursor]; match yych { 0x30 ..= 0x39 | 0x41 ..= 0x5A | 0x5F | 0x61 ..= 0x7A => { input.cursor += 1; yystate = 42; continue 'yyl; } _ => { yystate = 389; continue 'yyl; } } } 389 => { return input.token(TName::Extern) } 390 => { yych = input.data[input.cursor]; match yych { 0x30 ..= 0x39 | 0x41 ..= 0x5A | 0x5F | 0x61 ..= 0x7A => { input.cursor += 1; yystate = 42; continue 'yyl; } _ => { yystate = 391; continue 'yyl; } } } 391 => { return input.token(TName::Inline) } 392 => { yych = input.data[input.cursor]; match yych { 0x65 => { input.cursor += 1; yystate = 424; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 393 => { yych = input.data[input.cursor]; match yych { 0x63 => { input.cursor += 1; yystate = 425; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 394 => { yych = input.data[input.cursor]; match yych { 0x30 ..= 0x39 | 0x41 ..= 0x5A | 0x5F | 0x61 ..= 0x7A => { input.cursor += 1; yystate = 42; continue 'yyl; } _ => { yystate = 395; continue 'yyl; } } } 395 => { return input.token(TName::Return) } 396 => { yych = input.data[input.cursor]; match yych { 0x30 ..= 0x39 | 0x41 ..= 0x5A | 0x5F | 0x61 ..= 0x7A => { input.cursor += 1; yystate = 42; continue 'yyl; } _ => { yystate = 397; continue 'yyl; } } } 397 => { return input.token(TName::Signed) } 398 => { yych = input.data[input.cursor]; match yych { 0x30 ..= 0x39 | 0x41 ..= 0x5A | 0x5F | 0x61 ..= 0x7A => { input.cursor += 1; yystate = 42; continue 'yyl; } _ => { yystate = 399; continue 'yyl; } } } 399 => { return input.token(TName::Sizeof) } 400 => { yych = input.data[input.cursor]; match yych { 0x30 ..= 0x39 | 0x41 ..= 0x5A | 0x5F | 0x61 ..= 0x7A => { input.cursor += 1; yystate = 42; continue 'yyl; } _ => { yystate = 401; continue 'yyl; } } } 401 => { return input.token(TName::Static) } 402 => { yych = input.data[input.cursor]; match yych { 0x30 ..= 0x39 | 0x41 ..= 0x5A | 0x5F | 0x61 ..= 0x7A => { input.cursor += 1; yystate = 42; continue 'yyl; } _ => { yystate = 403; continue 'yyl; } } } 403 => { return input.token(TName::Struct) } 404 => { yych = input.data[input.cursor]; match yych { 0x30 ..= 0x39 | 0x41 ..= 0x5A | 0x5F | 0x61 ..= 0x7A => { input.cursor += 1; yystate = 42; continue 'yyl; } _ => { yystate = 405; continue 'yyl; } } } 405 => { return input.token(TName::Switch) } 406 => { yych = input.data[input.cursor]; match yych { 0x66 => { input.cursor += 1; yystate = 426; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 407 => { yych = input.data[input.cursor]; match yych { 0x65 => { input.cursor += 1; yystate = 428; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 408 => { yych = input.data[input.cursor]; match yych { 0x6C => { input.cursor += 1; yystate = 429; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 409 => { yystate = 371; continue 'yyl; } 410 => { yystate = 374; continue 'yyl; } 411 => { yych = input.data[input.cursor]; match yych { 0x73 => { input.cursor += 1; yystate = 430; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 412 => { yych = input.data[input.cursor]; match yych { 0x66 => { input.cursor += 1; yystate = 432; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 413 => { yych = input.data[input.cursor]; match yych { 0x30 ..= 0x39 | 0x41 ..= 0x5A | 0x5F | 0x61 ..= 0x7A => { input.cursor += 1; yystate = 42; continue 'yyl; } _ => { yystate = 414; continue 'yyl; } } } 414 => { return input.token(TName::Atomic) } 415 => { yych = input.data[input.cursor]; match yych { 0x78 => { input.cursor += 1; yystate = 434; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 416 => { yych = input.data[input.cursor]; match yych { 0x63 => { input.cursor += 1; yystate = 436; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 417 => { yych = input.data[input.cursor]; match yych { 0x61 => { input.cursor += 1; yystate = 438; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 418 => { yych = input.data[input.cursor]; match yych { 0x72 => { input.cursor += 1; yystate = 439; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 419 => { yych = input.data[input.cursor]; match yych { 0x5F => { input.cursor += 1; yystate = 440; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 420 => { yych = input.data[input.cursor]; match yych { 0x5F => { input.cursor += 1; yystate = 441; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 421 => { yych = input.data[input.cursor]; match yych { 0x65 => { input.cursor += 1; yystate = 442; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 422 => { yych = input.data[input.cursor]; match yych { 0x30 ..= 0x39 | 0x41 ..= 0x5A | 0x5F | 0x61 ..= 0x7A => { input.cursor += 1; yystate = 42; continue 'yyl; } _ => { yystate = 423; continue 'yyl; } } } 423 => { return input.token(TName::Default) } 424 => { yych = input.data[input.cursor]; match yych { 0x72 => { input.cursor += 1; yystate = 444; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 425 => { yych = input.data[input.cursor]; match yych { 0x74 => { input.cursor += 1; yystate = 446; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 426 => { yych = input.data[input.cursor]; match yych { 0x30 ..= 0x39 | 0x41 ..= 0x5A | 0x5F | 0x61 ..= 0x7A => { input.cursor += 1; yystate = 42; continue 'yyl; } _ => { yystate = 427; continue 'yyl; } } } 427 => { return input.token(TName::Typedef) } 428 => { yych = input.data[input.cursor]; match yych { 0x64 => { input.cursor += 1; yystate = 448; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 429 => { yych = input.data[input.cursor]; match yych { 0x65 => { input.cursor += 1; yystate = 450; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 430 => { yych = input.data[input.cursor]; match yych { 0x30 ..= 0x39 | 0x41 ..= 0x5A | 0x5F | 0x61 ..= 0x7A => { input.cursor += 1; yystate = 42; continue 'yyl; } _ => { yystate = 431; continue 'yyl; } } } 431 => { return input.token(TName::Alignas) } 432 => { yych = input.data[input.cursor]; match yych { 0x30 ..= 0x39 | 0x41 ..= 0x5A | 0x5F | 0x61 ..= 0x7A => { input.cursor += 1; yystate = 42; continue 'yyl; } _ => { yystate = 433; continue 'yyl; } } } 433 => { return input.token(TName::Alignof) } 434 => { yych = input.data[input.cursor]; match yych { 0x30 ..= 0x39 | 0x41 ..= 0x5A | 0x5F | 0x61 ..= 0x7A => { input.cursor += 1; yystate = 42; continue 'yyl; } _ => { yystate = 435; continue 'yyl; } } } 435 => { return input.token(TName::Complex) } 436 => { yych = input.data[input.cursor]; match yych { 0x30 ..= 0x39 | 0x41 ..= 0x5A | 0x5F | 0x61 ..= 0x7A => { input.cursor += 1; yystate = 42; continue 'yyl; } _ => { yystate = 437; continue 'yyl; } } } 437 => { return input.token(TName::Generic) } 438 => { yych = input.data[input.cursor]; match yych { 0x72 => { input.cursor += 1; yystate = 452; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 439 => { yych = input.data[input.cursor]; match yych { 0x6E => { input.cursor += 1; yystate = 453; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 440 => { yych = input.data[input.cursor]; match yych { 0x61 => { input.cursor += 1; yystate = 455; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 441 => { yych = input.data[input.cursor]; match yych { 0x6C => { input.cursor += 1; yystate = 456; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 442 => { yych = input.data[input.cursor]; match yych { 0x30 ..= 0x39 | 0x41 ..= 0x5A | 0x5F | 0x61 ..= 0x7A => { input.cursor += 1; yystate = 42; continue 'yyl; } _ => { yystate = 443; continue 'yyl; } } } 443 => { return input.token(TName::Continue) } 444 => { yych = input.data[input.cursor]; match yych { 0x30 ..= 0x39 | 0x41 ..= 0x5A | 0x5F | 0x61 ..= 0x7A => { input.cursor += 1; yystate = 42; continue 'yyl; } _ => { yystate = 445; continue 'yyl; } } } 445 => { return input.token(TName::Register) } 446 => { yych = input.data[input.cursor]; match yych { 0x30 ..= 0x39 | 0x41 ..= 0x5A | 0x5F | 0x61 ..= 0x7A => { input.cursor += 1; yystate = 42; continue 'yyl; } _ => { yystate = 447; continue 'yyl; } } } 447 => { return input.token(TName::Restrict) } 448 => { yych = input.data[input.cursor]; match yych { 0x30 ..= 0x39 | 0x41 ..= 0x5A | 0x5F | 0x61 ..= 0x7A => { input.cursor += 1; yystate = 42; continue 'yyl; } _ => { yystate = 449; continue 'yyl; } } } 449 => { return input.token(TName::Unsigned) } 450 => { yych = input.data[input.cursor]; match yych { 0x30 ..= 0x39 | 0x41 ..= 0x5A | 0x5F | 0x61 ..= 0x7A => { input.cursor += 1; yystate = 42; continue 'yyl; } _ => { yystate = 451; continue 'yyl; } } } 451 => { return input.token(TName::Volatile) } 452 => { yych = input.data[input.cursor]; match yych { 0x79 => { input.cursor += 1; yystate = 457; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 453 => { yych = input.data[input.cursor]; match yych { 0x30 ..= 0x39 | 0x41 ..= 0x5A | 0x5F | 0x61 ..= 0x7A => { input.cursor += 1; yystate = 42; continue 'yyl; } _ => { yystate = 454; continue 'yyl; } } } 454 => { return input.token(TName::Noreturn) } 455 => { yych = input.data[input.cursor]; match yych { 0x73 => { input.cursor += 1; yystate = 459; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 456 => { yych = input.data[input.cursor]; match yych { 0x6F => { input.cursor += 1; yystate = 460; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 457 => { yych = input.data[input.cursor]; match yych { 0x30 ..= 0x39 | 0x41 ..= 0x5A | 0x5F | 0x61 ..= 0x7A => { input.cursor += 1; yystate = 42; continue 'yyl; } _ => { yystate = 458; continue 'yyl; } } } 458 => { return input.token(TName::Imaginary) } 459 => { yych = input.data[input.cursor]; match yych { 0x73 => { input.cursor += 1; yystate = 461; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 460 => { yych = input.data[input.cursor]; match yych { 0x63 => { input.cursor += 1; yystate = 462; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 461 => { yych = input.data[input.cursor]; match yych { 0x65 => { input.cursor += 1; yystate = 463; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 462 => { yych = input.data[input.cursor]; match yych { 0x61 => { input.cursor += 1; yystate = 464; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 463 => { yych = input.data[input.cursor]; match yych { 0x72 => { input.cursor += 1; yystate = 465; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 464 => { yych = input.data[input.cursor]; match yych { 0x6C => { input.cursor += 1; yystate = 466; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 465 => { yych = input.data[input.cursor]; match yych { 0x74 => { input.cursor += 1; yystate = 468; continue 'yyl; } _ => { yystate = 43; continue 'yyl; } } } 466 => { yych = input.data[input.cursor]; match yych { 0x30 ..= 0x39 | 0x41 ..= 0x5A | 0x5F | 0x61 ..= 0x7A => { input.cursor += 1; yystate = 42; continue 'yyl; } _ => { yystate = 467; continue 'yyl; } } } 467 => { return input.token(TName::ThreadLocal) } 468 => { yych = input.data[input.cursor]; match yych { 0x30 ..= 0x39 | 0x41 ..= 0x5A | 0x5F | 0x61 ..= 0x7A => { input.cursor += 1; yystate = 42; continue 'yyl; } _ => { yystate = 469; continue 'yyl; } } } 469 => { return input.token(TName::StaticAssert) } _ => { panic!("internal lexer error") } } } } } const DEBUG: bool = false; macro_rules! log { ($($fmt:expr)? $(, $args:expr)*) => { if DEBUG { println!($($fmt)? $(, $args)*) } } } fn main() -> std::io::Result<()> { use std::env; use std::fs; // Treats the first command line argument as a filename and returns file // contents as a string. If there is no filename, returns a pre-defined // example string (this is used for testing). let args: Vec<String> = env::args().collect(); // We append a '\0' at the end of the string to act as a sentinel. let mut str: String; if args.len() < 2 { str = "int main() { return 0; }\0".to_string(); // example C program } else { str = fs::read_to_string(&args[1])?; str.push('\0'); } let mut input = Input::new(str); loop { match next_token(&mut input) { Ok(Some(token)) => log!("{:#?}", token), Ok(None) => { log!("EOF"); break; }, Err(error) => { log!("error: {:#?}", error); break; }, }; }; Ok(()) }