From 5a04b5512a128bd1805792cca4eabacf5fd49b27 Mon Sep 17 00:00:00 2001 From: Marc Vertes Date: Sun, 11 Jan 2026 19:02:27 +0100 Subject: fix: handle assign statements on map elements A new token MapAssign is added to implement assignements involving a map, slice or array, an index key expression and a value expression. --- lang/token.go | 1 + lang/token_string.go | 109 ++++++++++++++++++++++++++------------------------- 2 files changed, 56 insertions(+), 54 deletions(-) (limited to 'lang') diff --git a/lang/token.go b/lang/token.go index 4f5da35..46a5bb4 100644 --- a/lang/token.go +++ b/lang/token.go @@ -59,6 +59,7 @@ const ( AndNotAssign // &^= Inc // ++ Dec // -- + MapAssign // Unary operations. Plus // unary + diff --git a/lang/token_string.go b/lang/token_string.go index 44215b3..7f06092 100644 --- a/lang/token_string.go +++ b/lang/token_string.go @@ -51,63 +51,64 @@ func _() { _ = x[AndNotAssign-40] _ = x[Inc-41] _ = x[Dec-42] - _ = x[Plus-43] - _ = x[Minus-44] - _ = x[Addr-45] - _ = x[Deref-46] - _ = x[BitComp-47] - _ = x[Arrow-48] - _ = x[Ellipsis-49] - _ = x[Not-50] - _ = x[Tilde-51] - _ = x[Comma-52] - _ = x[Semicolon-53] - _ = x[Colon-54] - _ = x[ParenBlock-55] - _ = x[BracketBlock-56] - _ = x[BraceBlock-57] - _ = x[Break-58] - _ = x[Case-59] - _ = x[Chan-60] - _ = x[Const-61] - _ = x[Continue-62] - _ = x[Default-63] - _ = x[Defer-64] - _ = x[Else-65] - _ = x[Fallthrough-66] - _ = x[For-67] - _ = x[Func-68] - _ = x[Go-69] - _ = x[Goto-70] - _ = x[If-71] - _ = x[Import-72] - _ = x[Interface-73] - _ = x[Map-74] - _ = x[Package-75] - _ = x[Range-76] - _ = x[Return-77] - _ = x[Select-78] - _ = x[Struct-79] - _ = x[Switch-80] - _ = x[Type-81] - _ = x[Var-82] - _ = x[Call-83] - _ = x[CallX-84] - _ = x[Composite-85] - _ = x[EqualSet-86] - _ = x[Grow-87] - _ = x[Index-88] - _ = x[JumpFalse-89] - _ = x[JumpSetFalse-90] - _ = x[JumpSetTrue-91] - _ = x[Label-92] - _ = x[New-93] - _ = x[MaxTok-94] + _ = x[MapAssign-43] + _ = x[Plus-44] + _ = x[Minus-45] + _ = x[Addr-46] + _ = x[Deref-47] + _ = x[BitComp-48] + _ = x[Arrow-49] + _ = x[Ellipsis-50] + _ = x[Not-51] + _ = x[Tilde-52] + _ = x[Comma-53] + _ = x[Semicolon-54] + _ = x[Colon-55] + _ = x[ParenBlock-56] + _ = x[BracketBlock-57] + _ = x[BraceBlock-58] + _ = x[Break-59] + _ = x[Case-60] + _ = x[Chan-61] + _ = x[Const-62] + _ = x[Continue-63] + _ = x[Default-64] + _ = x[Defer-65] + _ = x[Else-66] + _ = x[Fallthrough-67] + _ = x[For-68] + _ = x[Func-69] + _ = x[Go-70] + _ = x[Goto-71] + _ = x[If-72] + _ = x[Import-73] + _ = x[Interface-74] + _ = x[Map-75] + _ = x[Package-76] + _ = x[Range-77] + _ = x[Return-78] + _ = x[Select-79] + _ = x[Struct-80] + _ = x[Switch-81] + _ = x[Type-82] + _ = x[Var-83] + _ = x[Call-84] + _ = x[CallX-85] + _ = x[Composite-86] + _ = x[EqualSet-87] + _ = x[Grow-88] + _ = x[Index-89] + _ = x[JumpFalse-90] + _ = x[JumpSetFalse-91] + _ = x[JumpSetTrue-92] + _ = x[Label-93] + _ = x[New-94] + _ = x[MaxTok-95] } -const _Token_name = "IllegalCommentIdentCharFloatImagIntStringAddSubMulQuoRemAndOrXorShlShrAndNotPeriodEqualGreaterGreaterEqualLandLessLessEqualLorNotEqualDefineAssignAddAssignSubAssignMulAssignQuoAssignRemAssignAndAssignOrAssignXorAssignShlAssignShrAssignAndNotAssignIncDecPlusMinusAddrDerefBitCompArrowEllipsisNotTildeCommaSemicolonColonParenBlockBracketBlockBraceBlockBreakCaseChanConstContinueDefaultDeferElseFallthroughForFuncGoGotoIfImportInterfaceMapPackageRangeReturnSelectStructSwitchTypeVarCallCallXCompositeEqualSetGrowIndexJumpFalseJumpSetFalseJumpSetTrueLabelNewMaxTok" +const _Token_name = "IllegalCommentIdentCharFloatImagIntStringAddSubMulQuoRemAndOrXorShlShrAndNotPeriodEqualGreaterGreaterEqualLandLessLessEqualLorNotEqualDefineAssignAddAssignSubAssignMulAssignQuoAssignRemAssignAndAssignOrAssignXorAssignShlAssignShrAssignAndNotAssignIncDecMapAssignPlusMinusAddrDerefBitCompArrowEllipsisNotTildeCommaSemicolonColonParenBlockBracketBlockBraceBlockBreakCaseChanConstContinueDefaultDeferElseFallthroughForFuncGoGotoIfImportInterfaceMapPackageRangeReturnSelectStructSwitchTypeVarCallCallXCompositeEqualSetGrowIndexJumpFalseJumpSetFalseJumpSetTrueLabelNewMaxTok" -var _Token_index = [...]uint16{0, 7, 14, 19, 23, 28, 32, 35, 41, 44, 47, 50, 53, 56, 59, 61, 64, 67, 70, 76, 82, 87, 94, 106, 110, 114, 123, 126, 134, 140, 146, 155, 164, 173, 182, 191, 200, 208, 217, 226, 235, 247, 250, 253, 257, 262, 266, 271, 278, 283, 291, 294, 299, 304, 313, 318, 328, 340, 350, 355, 359, 363, 368, 376, 383, 388, 392, 403, 406, 410, 412, 416, 418, 424, 433, 436, 443, 448, 454, 460, 466, 472, 476, 479, 483, 488, 497, 505, 509, 514, 523, 535, 546, 551, 554, 560} +var _Token_index = [...]uint16{0, 7, 14, 19, 23, 28, 32, 35, 41, 44, 47, 50, 53, 56, 59, 61, 64, 67, 70, 76, 82, 87, 94, 106, 110, 114, 123, 126, 134, 140, 146, 155, 164, 173, 182, 191, 200, 208, 217, 226, 235, 247, 250, 253, 262, 266, 271, 275, 280, 287, 292, 300, 303, 308, 313, 322, 327, 337, 349, 359, 364, 368, 372, 377, 385, 392, 397, 401, 412, 415, 419, 421, 425, 427, 433, 442, 445, 452, 457, 463, 469, 475, 481, 485, 488, 492, 497, 506, 514, 518, 523, 532, 544, 555, 560, 563, 569} func (i Token) String() string { idx := int(i) - 0 -- cgit v1.2.3