Commit Graph
100 Commits
Author SHA1 Message Date
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