Sasha Koshka
0a87781445
Generator compiles and runs
2024-02-08 13:14:21 -05:00
Sasha Koshka
da4d21a87b
Go mod tidy. No more participle, officially!
2024-02-08 13:12:42 -05:00
Sasha Koshka
807732b460
Parser now accepts multiplication operations
2024-02-08 13:05:47 -05:00
Sasha Koshka
5fa787dc64
Fix TestTypeInterfaceBehaviorUniqueErr
2024-02-08 12:57:20 -05:00
Sasha Koshka
775671442b
Signature positions are stored properly
2024-02-08 12:54:31 -05:00
Sasha Koshka
498df4fad8
Parser now includes positional information in toplevels
2024-02-08 12:52:47 -05:00
Sasha Koshka
19ba849e4b
Bring analyzer tests up to date as much as possible
2024-02-08 12:49:17 -05:00
Sasha Koshka
ba52a2df2e
Change interface prefix from ? to ~
...
? will eventually be used in place of * to denote an optional
pointer, and ~ already means "approximation", which works well for
a polymorphic data structure.
2024-02-08 04:10:11 -05:00
Sasha Koshka
cb7180fa1c
Remove rouge println in parser
2024-02-08 04:00:25 -05:00
Sasha Koshka
c9fa465430
Off by one error oh my god
2024-02-08 03:58:29 -05:00
Sasha Koshka
9e815d0bea
Updated analyzer's test-common.go
2024-02-08 03:56:09 -05:00
Sasha Koshka
5bb9508a76
Rework analyzer code to fit new parser
2024-02-08 03:51:21 -05:00
Sasha Koshka
95e12d6d19
Parse namespaced function calls
2024-02-08 03:28:09 -05:00
Sasha Koshka
202fd1f0bc
Bring most tests up to date
2024-02-08 03:13:40 -05:00
Sasha Koshka
ef7be1f7e8
Parse member access, assignment, method calls
2024-02-08 03:10:02 -05:00
Sasha Koshka
68b144a2df
Loll oops
2024-02-08 02:22:57 -05:00
Sasha Koshka
be314a1b79
Unify entity.Statement and entity.Expression
2024-02-08 02:22:19 -05:00
Sasha Koshka
95118a183b
Relaxed unneeded rules on AST
2024-02-08 02:19:00 -05:00
Sasha Koshka
227a329538
Parse bit and value casts
2024-02-08 01:54:29 -05:00
Sasha Koshka
e1ae32278f
Parse reference operations
2024-02-08 01:37:36 -05:00
Sasha Koshka
335060ce84
Parse length operations
2024-02-08 01:33:55 -05:00
Sasha Koshka
99d4799883
Parse slice operations
2024-02-08 01:29:16 -05:00
Sasha Koshka
de1f873929
Struct literals print correctly
2024-02-08 00:56:43 -05:00
Sasha Koshka
b715dbcce3
Parse operations
2024-02-08 00:50:54 -05:00
Sasha Koshka
e9348ea58f
Added string constructor for entity.Operator
2024-02-08 00:29:24 -05:00
Sasha Koshka
5fad8a79dd
Re-organize the position of parsing functions in expression.go
2024-02-08 00:16:39 -05:00
Sasha Koshka
a0a155c7e6
Parse dereferences and subscripts
2024-02-08 00:14:52 -05:00
Sasha Koshka
1cdc14a313
Lowercased entity descriptions
2024-02-07 22:58:58 -05:00
Sasha Koshka
e4c8268e18
Moved parser expression decision tree diagram to expression.go
...
Because having ASCII flowcharts in comments makes any code base at
least 20% cooler.
2024-02-07 22:53:10 -05:00
Sasha Koshka
1bf47a9ebe
Parse function calls
2024-02-07 22:49:11 -05:00
Sasha Koshka
78786f4ea2
Parse break and return expressions
2024-02-07 22:33:33 -05:00
Sasha Koshka
116a687099
Decision tree infrastructure for LBracket branch
2024-02-07 20:03:18 -05:00
Sasha Koshka
e0c62e40bf
Parse struct literals
2024-02-07 19:48:01 -05:00
Sasha Koshka
1a4bade4dd
Parse blocks
2024-02-07 19:24:57 -05:00
Sasha Koshka
b17ffdc6d9
Update expression-decision-tree
2024-02-07 19:17:25 -05:00
Sasha Koshka
30d479565b
Fix parsing integer 0
2024-02-07 19:16:05 -05:00
Sasha Koshka
f997254270
Parse array literals
2024-02-07 19:14:39 -05:00
Sasha Koshka
2882a28621
Update expression-decision-tree
2024-02-07 18:27:10 -05:00
Sasha Koshka
ac83753c56
Parse if/else expressions
2024-02-07 18:25:42 -05:00
Sasha Koshka
be35cda999
Parse loops
2024-02-07 18:11:12 -05:00
Sasha Koshka
161ee28e7b
Move literal parsing routines to a separate file
2024-02-07 18:01:14 -05:00
Sasha Koshka
c1df3f5ae5
Add stars in expression-decision-tree to mark what isn't done
2024-02-07 17:57:39 -05:00
Sasha Koshka
8cd0871939
Fix expression parsing control flow
2024-02-07 17:51:44 -05:00
Sasha Koshka
ea8d5e6b3a
Add parsing boolean and nil literals
2024-02-07 17:25:00 -05:00
Sasha Koshka
87c6490183
Fix commaList
2024-02-07 17:09:35 -05:00
Sasha Koshka
4a3e06362d
What crack was I smoking when I made LiteralNil.Value
2024-02-07 15:46:42 -05:00
Sasha Koshka
ed239aabb9
Remove entity.Boolean because I have overcome my haters
2024-02-07 15:41:48 -05:00
Sasha Koshka
854abfed1c
Broke out Parser.parseVariable() for consistency
2024-02-07 15:36:33 -05:00
Sasha Koshka
02ec77b855
Updated TestType test case for parser
2024-02-07 03:39:37 -05:00
Sasha Koshka
97605d8c2a
Parse integer, word, and float types
2024-02-07 03:37:02 -05:00
Sasha Koshka
424b621bae
Fix function parsing
2024-02-07 03:22:00 -05:00
Sasha Koshka
48fe20b472
Parse interface types
2024-02-07 03:18:02 -05:00
Sasha Koshka
1529e591e8
Parse signatures
2024-02-07 03:17:50 -05:00
Sasha Koshka
19910b77a9
Parse struct types
2024-02-07 03:02:43 -05:00
Sasha Koshka
f8399612f6
De-ambiguify interface and struct type syntax
2024-02-07 03:02:16 -05:00
Sasha Koshka
cb7734afe6
Array type parsing
2024-02-07 00:32:18 -05:00
Sasha Koshka
23362b058d
Normalize parsing of access control symbols
2024-02-07 00:23:10 -05:00
Sasha Koshka
59e3185500
Parse pointers/slices
2024-02-07 00:22:58 -05:00
Sasha Koshka
6ad56ed4ee
Add some convenience methods to parser, fix appendCopy
2024-02-07 00:21:44 -05:00
Sasha Koshka
8adaa0e053
Added parsing named types
2024-02-06 23:48:25 -05:00
Sasha Koshka
9dab29f5cb
Token.Is and Token.ValueIs work properly
2024-02-06 23:16:48 -05:00
Sasha Koshka
39d8ed088d
Lexer now records the width of tokens
2024-02-06 23:08:25 -05:00
Sasha Koshka
84d88a7644
I want to look at my juicy error formatting even when it passes
2024-02-06 22:33:18 -05:00
Sasha Koshka
100986327e
FINALLY errors and lexer agree on row/col positions properly
2024-02-06 22:11:46 -05:00
Sasha Koshka
6924d39dcb
Fixed error test cases
2024-02-06 21:59:41 -05:00
Sasha Koshka
6fc16c7045
Lexer saves error lines
2024-02-06 21:54:20 -05:00
Sasha Koshka
e6043effe0
Lexer tests check for line content, print formatted errors
2024-02-06 19:08:21 -05:00
Sasha Koshka
f3f8b324dc
Parser errors make more sense
2024-02-06 18:58:09 -05:00
Sasha Koshka
c2d9b4d40f
Added Token.String()
2024-02-06 18:56:04 -05:00
Sasha Koshka
ef14fc2219
Parser is incomplete but compiles
2024-02-06 18:29:37 -05:00
Sasha Koshka
825e71a720
Created a plan for expression parsing
2024-02-06 17:04:59 -05:00
Sasha Koshka
77783c1004
Add a guide to writing parser methods so I don't forget
2024-02-06 16:56:10 -05:00
Sasha Koshka
c1c2ab5124
Further normalize expectation responsibilities of parsing methods
2024-02-06 16:39:15 -05:00
Sasha Koshka
a09a0ce34c
Typedef parsing complete, without detail
2024-02-06 16:32:14 -05:00
Sasha Koshka
76c129f91c
Add type parsing stub
2024-02-06 16:31:53 -05:00
Sasha Koshka
f4e5e1ea3d
Appended -Core to parsing methods that only partially parse things
2024-02-06 16:30:53 -05:00
Sasha Koshka
bca9de4106
Parsing functions *always* begin on current token, leave trailing one
2024-02-06 16:22:49 -05:00
Sasha Koshka
1b50c8f879
Method and function parsing complete, without detail
2024-02-06 16:13:05 -05:00
Sasha Koshka
3c67cf576c
Expression parsing stub
2024-02-06 16:12:51 -05:00
Sasha Koshka
79f51ce4c6
Parser.expectValue() and Parser.expectValueDesc() take in a kind parameter now
2024-02-06 15:57:27 -05:00
Sasha Koshka
3e89953d07
Add parser.Tree.AddDeclaration()
2024-02-06 15:54:21 -05:00
Sasha Koshka
08f1027834
Added commaList function
2024-02-06 12:20:13 -05:00
Sasha Koshka
118e7672bd
Why did I name a prepend function appendr??
2024-02-06 11:45:08 -05:00
Sasha Koshka
4a2671c601
askl;d;sldkf
2024-02-06 02:55:39 -05:00
Sasha Koshka
ac433f07ec
Rename typeStartTokens to startTokensType
2024-02-06 02:41:45 -05:00
Sasha Koshka
3d1bef3a32
Move top-level expect from Parser.parseTopLevel into Parser.parse()
2024-02-06 02:40:19 -05:00
Sasha Koshka
eafc834ef3
Parser.parseSignature stub
2024-02-06 02:36:51 -05:00
Sasha Koshka
8cfb4f3e6d
Parser top-level entity base
2024-02-06 02:32:29 -05:00
Sasha Koshka
cce8c756fc
Parser now remembers last token
2024-02-06 02:28:23 -05:00
Sasha Koshka
66f0e2d8d9
Un-participle-ify entity.Access
2024-02-06 02:27:09 -05:00
Sasha Koshka
5fe6e32f92
Add Dot and DoubleDot as separate tokens
2024-02-06 02:23:15 -05:00
Sasha Koshka
7db231a945
Add ValueIs method to lexer.Token
2024-02-06 02:19:09 -05:00
Sasha Koshka
ec3907d841
Add TokenKind.String
2024-02-06 01:52:29 -05:00
Sasha Koshka
b6a920af58
Added expect functions to parser
2024-02-06 01:45:30 -05:00
Sasha Koshka
ff9c275980
Add Token.Is() to check if token is any of a set of kinds
2024-02-06 01:31:52 -05:00
Sasha Koshka
04e5ead3db
Go mod tidy
2024-02-06 01:14:38 -05:00
Sasha Koshka
0d79482568
Define basic parser structure
2024-02-06 01:12:07 -05:00
Sasha Koshka
dc6a36b548
Cleared particple code from parser
2024-02-06 00:52:31 -05:00
Sasha Koshka
57d1ab9b2a
Parser test-common uses testcommon package
2024-02-06 00:49:28 -05:00
Sasha Koshka
3e9f3553fe
TODO message in errors package
2024-02-01 03:21:23 -05:00