Commit Graph

129 Commits

Author SHA1 Message Date
Sasha Koshka ca5f8202bb Put Error in its own module 2022-08-18 00:51:19 -04:00
Sasha Koshka abc6e44fb2 Removed Location's dependency on Error 2022-08-18 00:50:57 -04:00
Sasha Koshka cce841f48e Add getters to File 2022-08-18 00:50:39 -04:00
Sasha Koshka 568134a7e9 Add getter functions to Location 2022-08-18 00:42:47 -04:00
Sasha Koshka 57f02ad6f6 Added getter functions to Error 2022-08-18 00:39:08 -04:00
Sasha Koshka dd8bbf8b13 Lexer now uses go's strconv number parsing functions
This allows for better accuracy when parsing floats, at the cost of only
supporting decimal floating point literals. The lexer now passes all tests.
2022-08-18 00:31:27 -04:00
Sasha Koshka ac85c2c725 Remove line break at top of readme 2022-08-17 21:48:06 -04:00
Sasha Koshka 9b62a9b9ed Added logo to README 2022-08-17 20:16:48 -04:00
Sasha Koshka 63110d9a32 Removed bad spacing in ObjectInitializationValues.ToString
If a value had more initialzation values inside of it, it would leave a space
before the newline. This was causing the parser test to believe the parser to be
failing. The parser now passes the test.
2022-08-17 19:40:16 -04:00
Sasha Koshka 6a5851c9eb Parser tests now show exact line and column where data is mismatched 2022-08-17 19:36:33 -04:00
Sasha Koshka e069569c3c Merge pull request 'data-section' (#3) from data-section into main
Reviewed-on: #3
2022-08-17 18:21:19 +00:00
Sasha Koshka d78f150336 Removed data test case initializing pointers with phrases
Phrase parsing is out of scope for this branch. It will be implemented at the
same time as function parsing.
2022-08-17 14:16:54 -04:00
Sasha Koshka e5b92009f0 Re-arranged data parsing test case to be alphabetical 2022-08-17 13:53:08 -04:00
Sasha Koshka 98fb4e9c66 In ToString methods, maps are sorted alphabetically before output
This makes the output of ToString methods deterministic, and as such they can be
used for testing.
2022-08-17 13:50:33 -04:00
Sasha Koshka aee90757e3 Object initialization value parsing is now done recursively 2022-08-17 13:26:18 -04:00
Sasha Koshka 31bb36a4f7 Reworked parsing object initialization values 2022-08-17 12:53:35 -04:00
Sasha Koshka 384de58d41 Added previousToken method to parser 2022-08-17 12:39:26 -04:00
Sasha Koshka 8c03aa880b Reworked array initialization value parsing 2022-08-17 11:30:17 -04:00
Sasha Koshka 7bb6582e01 Added default nil argument kind 2022-08-17 01:07:12 -04:00
Sasha Koshka 0ad1c0b2f4 Fixed extraneous newlines after complex initialization values 2022-08-17 01:04:52 -04:00
Sasha Koshka 9ca1be2204 Fixed array initialization value parsing 2022-08-17 00:55:53 -04:00
Sasha Koshka 0dd9368393 Reworked data section so it stores single initialization argument 2022-08-17 00:49:49 -04:00
Sasha Koshka bd42c95de0 Parser can now sort of parse object member initialization values 2022-08-17 00:14:55 -04:00
Sasha Koshka bd456b72e9 Argument.ToString can now recover on nil interface value 2022-08-17 00:13:14 -04:00
Sasha Koshka eb3fb65c9b Changed object initialization values to be a map 2022-08-16 23:45:25 -04:00
Sasha Koshka bb2948d397 Added parsing array initialization values 2022-08-16 21:31:23 -04:00
Sasha Koshka 210e527b3a parseType method now understands arrays with undefined length 2022-08-16 20:55:43 -04:00
Sasha Koshka 97cb6e54eb Type.ToString now understands array lengths 2022-08-16 20:53:27 -04:00
Sasha Koshka 3407aa7c59 Fixed lexing digraph tokens
Lexer gave wrong token locations and would skip an extra rune when digraph was
not found.
2022-08-16 20:29:00 -04:00
Sasha Koshka 9e01eef45b Added elipsis token 2022-08-16 20:24:27 -04:00
Sasha Koshka efb3bbe21b Added base for parsing initialization values 2022-08-16 20:10:47 -04:00
Sasha Koshka c172c111d8 Rethought how object and array literals will work 2022-08-16 17:45:31 -04:00
Sasha Koshka 16bca57e36 Fixed numerous problems related to type parsing 2022-08-16 17:21:10 -04:00
Sasha Koshka 5e2d8c9955 Parser can now ToString data sections properly 2022-08-16 16:37:20 -04:00
Sasha Koshka 5c23c59c92 Added parsing primitive arguments 2022-08-16 16:27:52 -04:00
Sasha Koshka 0025d03a18 Modified parser data test to have uninitialized pointer cases 2022-08-16 16:16:39 -04:00
Sasha Koshka 45bc798d19 Added identifier and declaration parsing 2022-08-16 15:53:32 -04:00
Sasha Koshka 9cb2f68581 Argument kind is now called .kind instead of .what 2022-08-16 15:50:34 -04:00
Sasha Koshka 4dfb327558 Add subscript and dereference argument kinds 2022-08-16 13:43:36 -04:00
Sasha Koshka f978621673 Parse basic information about data sections (name, type) 2022-08-16 10:44:02 -04:00
Sasha Koshka ac40fa96e5 Improved parser test
Created new cases involving mutable data and phrase initialization arguments,
and always print out the correct and parsed trees.
2022-08-16 01:55:22 -04:00
Sasha Koshka 85b7938843 ParseBody now has a loop, and errors on unrecognized section type 2022-08-15 21:20:13 -04:00
Sasha Koshka d081f363b1 Add guideline I forgot to add earlier 2022-08-15 17:21:34 -04:00
Sasha Koshka e42bad5810 Identifiers can no longer have arguments in them
Previously [[something something].something] would have been syntactically
correct. This can lead to ugly and cluttered syntax due to violating the one
thing per line guideline (that I've forgotten to write down) and would make the
parser incredibly convoluded. Member selection in arf is not an operator and
should not be treated as such. It would be much better to just use variables for
this.
2022-08-15 17:05:57 -04:00
Sasha Koshka 614b5664fc Parser calls ParseDataSection 2022-08-15 15:09:07 -04:00
Sasha Koshka 8b28fe5a4c Added a comma token 2022-08-15 14:50:09 -04:00
Sasha Koshka 608162fa92 Fixed bug in number lexing function that prevented reading zero 2022-08-15 14:42:32 -04:00
Sasha Koshka d27c0ff07c Added single digit zero and eight to lexer number test 2022-08-15 14:32:59 -04:00
Sasha Koshka 7fc51c278f Fixed issue with Error.Error not positioning marker correctly 2022-08-15 14:30:54 -04:00
Sasha Koshka 3a3c588023 Added data test 2022-08-15 14:23:53 -04:00