Sasha Koshka
bc9beb0317
Created test case for type section
2022-08-18 16:56:42 -04:00
Sasha Koshka
a548dcc585
Changed permission codes to only determine private/public/readonly
...
Changing permissions within the module was redundant and would have just
conflicted with the :mut type qualifier. This is easier to understand.
2022-08-18 12:09:17 -04:00
Sasha Koshka
15eb96e8ac
Lexer passes all width tests
2022-08-18 11:35:48 -04:00
Sasha Koshka
120976a0f3
Numbers now tokenize with the correct width
2022-08-18 11:32:50 -04:00
Sasha Koshka
bde4bf8493
String and rune literals now have correct width
2022-08-18 11:25:40 -04:00
Sasha Koshka
a013d4caad
Lexer tests now check token width
2022-08-18 11:14:42 -04:00
Sasha Koshka
be9a3603d2
Made structural change to lexer test definitions
2022-08-18 11:02:49 -04:00
Sasha Koshka
54de3d1270
Fixed test columns and widths
2022-08-18 02:06:00 -04:00
Sasha Koshka
a87973c141
Error widths now work properly
2022-08-18 02:04:49 -04:00
Sasha Koshka
85996b2554
Added more error test cases
2022-08-18 01:47:35 -04:00
Sasha Koshka
4780d9cc28
Fixed bug in file where it would report its location one step ahead
2022-08-18 01:35:46 -04:00
Sasha Koshka
bb89009742
Add description method to Location
2022-08-18 01:31:01 -04:00
Sasha Koshka
9e66305001
Created test to check lexer errors
2022-08-18 01:25:02 -04:00
Sasha Koshka
39e4fbe844
Replaced references to file.Error with infoerr.Error
2022-08-18 00:58:40 -04:00
Sasha Koshka
d42d0c5b34
Renamed error module to infoerr
2022-08-18 00:56:45 -04:00
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
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
Sasha Koshka
00bcfaab0b
Parser tests now work by checking the ToString() of the parsed tree
2022-08-15 14:17:29 -04:00
Sasha Koshka
d91423863b
Added ToString methods for syntax tree nodes
2022-08-15 14:04:57 -04:00
Sasha Koshka
b02ff6cda6
Created structs needed to represent a data section
2022-08-15 01:47:42 -04:00
Sasha Koshka
0a067524ce
Added base parse body function
2022-08-14 22:38:57 -04:00
sashakoshka
8f42fa9c2a
Add some more guidelines to readme
2022-08-12 20:32:58 -04:00
Sasha Koshka
cd157cc69b
Added more information about the language's design to readme
2022-08-09 21:15:49 -04:00
Sasha Koshka
488af74b75
Laid out basic lexer structure
2022-08-09 20:45:06 -04:00
Sasha Koshka
c23413eedf
Added print method to error
2022-08-09 20:12:33 -04:00
Sasha Koshka
a755fc9f41
Error handling is now done with a custom error in the file package
2022-08-09 02:25:45 -04:00
Sasha Koshka
2ea0c86c54
Added README
2022-08-09 01:51:56 -04:00
Sasha Koshka
3a0fc0d57c
Added ReadString method to file
2022-08-09 01:13:49 -04:00
Sasha Koshka
47517d7139
Added ReadRune method to file
2022-08-09 01:07:14 -04:00
Sasha Koshka
3ba528509c
Added licesnse
2022-08-09 01:02:03 -04:00
Sasha Koshka
e7bd6ee02c
Added stub arfc command
2022-08-08 03:09:16 -04:00
Sasha Koshka
e8f6165f38
Created stub high-level module compilation function
2022-08-08 03:08:50 -04:00
Sasha Koshka
93f0ac945f
Added gitignore
2022-08-08 03:08:20 -04:00
Sasha Koshka
47234e9f36
Added lexer stub
2022-08-07 15:18:59 -04:00
Sasha Koshka
68a6bdf511
Added token struct
2022-08-07 15:18:30 -04:00
Sasha Koshka
c3a5b15049
Added Location struct
...
Its purpose is to carry error reporting information with it outside of files.
2022-08-03 13:40:00 -04:00
Sasha Koshka
64a8a2445a
File is now capable of printing errors
2022-08-03 13:28:37 -04:00
Sasha Koshka
4d94e5738d
Added file struct that satisfies io/fs.File
...
This will be used to abstract os.File and enable error reporting.
2022-08-03 12:11:59 -04:00
Sasha Koshka
ff01213da4
Initial commit
2022-08-03 11:09:00 -04:00