diff --git a/lexer/lexer.go b/lexer/lexer.go index d5e1bf7..c49154c 100644 --- a/lexer/lexer.go +++ b/lexer/lexer.go @@ -192,6 +192,16 @@ func (lexer *LexingOperation) tokenizeSymbolBeginning () (err error) { token.kind = TokenKindComma lexer.addToken(token) err = lexer.nextRune() + case '(': + token := lexer.newToken() + token.kind = TokenKindLParen + lexer.addToken(token) + err = lexer.nextRune() + case ')': + token := lexer.newToken() + token.kind = TokenKindRParen + lexer.addToken(token) + err = lexer.nextRune() case '[': token := lexer.newToken() token.kind = TokenKindLBracket diff --git a/lexer/lexer_test.go b/lexer/lexer_test.go index 932c9be..623410c 100644 --- a/lexer/lexer_test.go +++ b/lexer/lexer_test.go @@ -138,6 +138,8 @@ func TestTokenizeAll (test *testing.T) { quickToken(1, TokenKindDot, nil), quickToken(1, TokenKindComma, nil), quickToken(2, TokenKindElipsis, nil), + quickToken(1, TokenKindLParen, nil), + quickToken(1, TokenKindRParen, nil), quickToken(1, TokenKindLBracket, nil), quickToken(1, TokenKindRBracket, nil), quickToken(1, TokenKindLBrace, nil), diff --git a/lexer/token.go b/lexer/token.go index c8b6624..033bd06 100644 --- a/lexer/token.go +++ b/lexer/token.go @@ -28,6 +28,8 @@ const ( TokenKindElipsis TokenKindComma + TokenKindLParen + TokenKindRParen TokenKindLBracket TokenKindRBracket TokenKindLBrace @@ -166,6 +168,10 @@ func (tokenKind TokenKind) Describe () (description string) { description = "Elipsis" case TokenKindComma: description = "Comma" + case TokenKindLParen: + description = "LParen" + case TokenKindRParen: + description = "RParen" case TokenKindLBracket: description = "LBracket" case TokenKindRBracket: diff --git a/parser/enum.go b/parser/enum.go index 8c71e0c..92f01ec 100644 --- a/parser/enum.go +++ b/parser/enum.go @@ -73,9 +73,11 @@ func (parser *ParsingOperation) parseEnumMembers ( if err != nil { return } // parse default value - member.value, err = parser.parseArgument() - into.members = append(into.members, member) - if err != nil { return } + if !parser.token.Is(lexer.TokenKindNewline) { + member.value, err = parser.parseArgument() + into.members = append(into.members, member) + if err != nil { return } + } err = parser.expect(lexer.TokenKindNewline) if err != nil { return } diff --git a/parser/type-notation.go b/parser/type-notation.go index c28bbe7..e72ab20 100644 --- a/parser/type-notation.go +++ b/parser/type-notation.go @@ -69,4 +69,3 @@ func (parser *ParsingOperation) parseType () (what Type, err error) { return } - diff --git a/tests/lexer/all.arf b/tests/lexer/all.arf index aeacf53..950ece0 100644 --- a/tests/lexer/all.arf +++ b/tests/lexer/all.arf @@ -1,3 +1,3 @@ :arf ---- rw -> -349820394 932748397 239485.37520 "hello world!\n" 'E' helloWorld:.,..[]{} +--- rw -> -349820394 932748397 239485.37520 "hello world!\n" 'E' helloWorld:.,..()[]{} + - ++ -- * / @ ! % %= ~ ~= = == != < <= << <<= > >= >> >>= | |= || & &= && ^ ^=