Commit graph

175 commits

Author SHA1 Message Date
c3113742a3 Convert state_hash() 2016-12-27 11:52:25 -07:00
59a8804fd8 Convert state_dot() 2016-12-27 11:36:43 -07:00
64435689fc Remove semicolon; add &self to generic_error() 2016-12-27 11:30:08 -07:00
0870727241 Convert state_identifier 2016-12-27 11:23:56 -07:00
245e6e711f Convert state_initial to return a StateResult 2016-12-27 11:18:30 -07:00
71fb678c50 Add token_result() helper 2016-12-27 11:18:15 -07:00
8d00e3afcf Take a String by move into error_string() 2016-12-27 11:18:06 -07:00
7d42ad280f error_string method 2016-12-27 10:57:16 -07:00
f2ff1acdd1 Emit line and offset information with tokens in Lex objects 2016-12-27 10:53:38 -07:00
5b88ec73ec Track character offset relative to line 2016-12-27 10:50:43 -07:00
f7e990925c Add StateResult type 2016-12-27 10:47:18 -07:00
77c3df99c0 New simple expression test 2016-12-27 10:39:07 -07:00
b731b0323a Update test names: finds for single tokens, lexes for expressions 2016-12-27 10:38:57 -07:00
b00615a7b6 Some tests for exact numbers; adding sign after exact specifier 2016-12-27 10:14:03 -07:00
00d8380eac Add exactness indicator 2016-12-27 10:08:44 -07:00
9ac596187d Properly make hex numbers 2016-12-27 09:52:26 -07:00
798539d219 Add convenience from_* methods to Sign and Radix 2016-12-27 09:52:11 -07:00
0675f17e32 Remove char.is_identifier_single() 2016-12-27 09:51:24 -07:00
af73947ffd Straighten out the NumberBuilder so it works
Also fix the Number lexing :D
2016-12-27 08:18:44 -07:00
bbefd98dbd Some tests for the NumberBuilder 2016-12-26 18:41:42 -07:00
aba541ed4d Attempting numbers; tests are failing though :-( 2016-12-26 18:23:58 -07:00
9e3d4f155e Rough copy of Number and NumberBuilder 2016-12-26 13:58:17 -07:00
59f9b5dd97 Dot state 2016-12-26 11:51:03 -07:00
7b4d3c62b9 Check single character identifiers: +, - 2016-12-26 11:37:45 -07:00
d63494fc32 Check that forward progress is always made by lexer states 2016-12-26 09:15:53 -07:00
b0b9a38932 Straighten out test failures 2016-12-26 09:15:43 -07:00
0a9da3b7e8 Assert invalid characters in states 2016-12-26 08:52:15 -07:00
dfc528e8e7 Find left vector parens 2016-12-25 20:59:21 -07:00
c42d69bd47 Lex dots: . 2016-12-25 20:54:47 -07:00
c34064f51a TODO about using Results 2016-12-25 20:49:46 -07:00
3d369daa66 Check single tokens in the lexer 2016-12-25 20:49:15 -07:00
5a28b06434 Move lexer tests to a #[cfg(test)] mod tests { } modules 2016-12-25 19:23:01 -07:00
81a84a796a Lex basic strings (no escapes yet) 2016-12-25 15:03:18 -07:00
ea4758e442 Clean up end of next() 2016-12-25 14:41:06 -07:00
953870fae0 Check for EOF ("\0") when reading comments 2016-12-25 14:34:11 -07:00
b2f7afef07 Lexer::new takes a &str instead of a String 2016-12-25 14:33:58 -07:00
a74228d11a Add char::is_eof() 2016-12-25 14:33:26 -07:00
7f19c78127 Make some unit tests for the lexer 2016-12-25 14:20:25 -07:00
7e784ffce1 Make the Lex at the end, make tokens in state methods 2016-12-25 14:20:16 -07:00
0d89cfefc1 Add Comment token 2016-12-25 13:50:34 -07:00
c925939faf Break apart is_boolean test into true/false variants 2016-12-25 12:24:31 -07:00
acbde03786 Token is an enum with values; Lex contains a token and several useful bits of info 2016-12-25 12:24:04 -07:00
6b8ba6b6e8 use #[derive(Debug)] on Token, Kind, State... SO MUCH EASIER 2016-12-24 14:03:37 -07:00
c84251b56f Display for State enum 2016-12-24 10:29:24 -07:00
43054b3f49 Lex hashes and booleans 2016-12-24 10:29:12 -07:00
e9b0eab38a Sort out advancing pointers for whitespace 2016-12-24 09:59:35 -07:00
8140e3c5e6 Pass over whitespace and count lines 2016-12-24 09:17:08 -07:00
f7c28c6732 Add single character identifiers 2016-12-24 09:07:38 -07:00
fd3f6f9f29 Remove characters module declaration 2016-12-24 09:07:20 -07:00
f7cedb3536 Doc clean up 2016-12-24 09:05:10 -07:00