9d40cdd995
[lexer] Move number integration tests to their own module
2018-09-13 07:55:42 -07:00
107bb394b7
[lexer] Link sibiltypes
2018-09-08 16:24:04 -07:00
9f5165f0aa
[lexer] Add expression tests; add explicit_sign to identifier_initials
2018-09-08 11:24:46 -07:00
061868d2c2
[lexer] Add Quote token
2018-09-08 11:16:53 -07:00
34d612a832
[lexer] Add state for finding Dots at the beginning of input
...
This happens to be a valid token by itself and the beginning of a decimal number.
2018-09-06 18:07:40 -07:00
15e275513d
[lexer] Pass Builders around by reference instead of implicitly Copying
2018-09-06 17:21:30 -07:00
9365e51893
[lexer] Correctly set line/offset for emitted Lexes
2018-09-05 22:18:27 -07:00
8b96eb190c
[lexer] Continue on to Digit state after lexing Prefix characters
2018-09-05 22:17:18 -07:00
c8de135d2f
[lexer] Update failing integer lexing test after fixing #12
2018-09-05 17:36:29 -07:00
e139cf0c6b
[lexer] Lex and discard whitespace
...
Closes #12 .
2018-09-04 20:09:47 -07:00
0bdfc24abd
[lexer] Simply some Option logic
2018-09-03 19:24:06 -07:00
569fe82c1a
[lexer] Identify delimiters and emit numbers
2018-09-03 17:20:27 -07:00
853312ce67
[lexer] We can lex integers!
2018-09-03 17:17:49 -07:00
d272b211ae
[lexer] WIP number::Digit state
2018-09-03 17:08:07 -07:00
176686b3a7
[lexer] Let states handle their own creation in from_char
2018-09-03 16:06:52 -07:00
eabc8f98e8
[lexer] Add number::Sign state
2018-09-03 15:49:13 -07:00
663ae3a9f1
[lexer] move char::is_hash() to chars::Lexable
2018-09-03 15:48:48 -07:00
dc8f5a7686
[lexer] Replace String error messages with Error type
2018-09-03 15:30:48 -07:00
def35966eb
[lexer] Re-kajigger the states for numbers
2018-09-03 15:19:28 -07:00
b759ee4c57
[lexer] Add Error::invalid_char constructor
2018-09-03 15:18:15 -07:00
469929fb8f
[lexer] Make a states::number module
...
There will be several number-specific states.
2018-09-03 14:05:57 -07:00
14ea07e441
[lexer] Move Bool state to its own file
2018-09-03 12:27:09 -07:00
ebee8c8646
[lexer] Add Num token type, which only takes ints for now...
2018-09-02 17:24:07 -07:00
0f18569292
[lexer] Add (failing) test for integers
2018-09-02 17:23:48 -07:00
04f2eb0937
[lexer] Remove empty Lexer impl
2018-09-02 17:23:32 -07:00
757f943fff
[lexer] Oops forgot a return type on Hash::new()
2018-09-02 14:05:56 -07:00
7a6c2b91d1
[lexer] Bit of code cleanup in Lexer
2018-09-02 14:05:35 -07:00
f35fe5fd08
[lexer] Implement Hash::new()
2018-09-02 13:50:33 -07:00
aa4de7d4bd
[lexer] Laying groundwork for lexing numbers...
2018-09-01 22:25:40 -07:00
7b6259977f
[lexer] Add fail() constructor to StateResult
2018-09-01 22:21:21 -07:00
d69c3dbc31
[lexer] Obey Rust book recommendation about order of leading lines
2018-09-01 22:21:05 -07:00
e61dc0b6a4
[lexer] Add failing test for issue #12
2018-08-27 06:56:48 -07:00
1304e04808
[lexer] Bring over the REPL from the parser
2018-08-26 13:45:52 -07:00
a23b917785
[lexer] Lex bools!
...
Extend the lexer to support Scheme bools like this: #t, #f, #true, #false.
Add some positive tests for this too.
2018-08-26 13:40:27 -07:00
b0b4699476
[lexer] Rewrite the Lexer!
...
Implement structs for each state in the lexer. The State objects are responsible
for determining how to handle a character and emit a Result indicating to the
driver (the Lexer struct) how to proceed.
2018-08-26 11:47:18 -07:00
4fa07ceec7
[lexer] Add Error::msg()
2018-08-23 20:19:16 -07:00
8475720a71
Add accessor for Lex::value
2018-08-20 15:21:20 -07:00
281c29ee26
[lexer] Expose token field via method; Clone and Copy Tokens
2018-08-19 22:30:19 -07:00
cc43ffd135
[lexer] Lexer emits Lexes instead of Tokens
2017-06-26 21:54:57 -07:00
5f3770914f
[lexer] Basic handling of input offsets
2017-06-26 21:54:05 -07:00
2a7626c75f
Add a type def for lexer Result
2017-06-18 16:50:14 -07:00
d994316392
Character checks for identifier initial and subsequent
2017-05-13 17:21:23 -07:00
237dca4b4b
Add some character class methods to a Lexable trait for char
2017-05-13 15:37:01 -07:00
1dfdc001b3
Add an error class
2017-05-13 15:26:41 -07:00
b5f76deb98
Add some single token tests for the tokens we have
2017-05-02 21:45:10 -07:00
28e5814101
Check for EOF (aka input.next() -> None) and emit what we have before finishing forever
2017-05-02 21:44:57 -07:00
5fe10fe002
Simplify the resume check -- just use an if
2017-05-02 21:44:01 -07:00
c5b769ff45
A peekable lexer
...
Use the chars() iterator on &str, with the Peekable wrapper on Iterators, to iterate the input, rather than needing to hold the whole input and do iteration by indexes.
2017-04-30 17:46:42 -07:00
a4282e7760
Blow away the lexer code =o
2017-04-30 16:32:31 -07:00
31c68034a8
Fix a good portion of the build errors in sibillexer (but not all...)
2017-04-30 16:00:51 -07:00