Fixed bug with identifier parsing
This commit is contained in:
parent
ec21a1d05e
commit
b76cb30d94
@ -103,7 +103,7 @@ func (parser *ParsingOperation) parseEnumMember () (
|
||||
if err != nil { return }
|
||||
err = parser.expect (
|
||||
lexer.TokenKindLessThan,
|
||||
lexer.TokenKindGreaterThan)
|
||||
lexer.TokenKindLParen)
|
||||
if err != nil { return }
|
||||
|
||||
if parser.token.Is(lexer.TokenKindLessThan) {
|
||||
|
@ -20,14 +20,33 @@ enum ro AffrontToGod:Int:4
|
||||
3
|
||||
4>
|
||||
enum ro NamedColor:U32
|
||||
- red: <0xFF0000>
|
||||
- green: <0x00FF00>
|
||||
- blue: <0x0000FF>
|
||||
enum ro ThisIsTerrible:Obj:(.rw x:Int .rw y:Int)
|
||||
- up: (.x: 0 .y: -1)
|
||||
- down: (.x: 0 .y: 1)
|
||||
- left: (.x: -1 .y: 0)
|
||||
- right: (.x: 1 .y: 0)
|
||||
- red:<0xFF0000>
|
||||
- green:<0x00FF00>
|
||||
- blue:<0x0000FF>
|
||||
enum ro ThisIsTerrible:Obj:
|
||||
(
|
||||
.rw x:Int
|
||||
.rw y:Int
|
||||
)
|
||||
- up:
|
||||
(
|
||||
.x:<0>
|
||||
.y:<-1>
|
||||
)
|
||||
- down:
|
||||
(
|
||||
.x:<0>
|
||||
.y:<1>)
|
||||
- left:
|
||||
(
|
||||
.x:<-1>
|
||||
.y:<0>
|
||||
)
|
||||
- right:
|
||||
(
|
||||
.x:<1>
|
||||
.y:<0>
|
||||
)
|
||||
enum ro Weekday:Int
|
||||
- sunday
|
||||
- monday
|
||||
|
@ -12,7 +12,10 @@ func (parser *ParsingOperation) parseIdentifier () (
|
||||
identifier.location = parser.token.Location()
|
||||
|
||||
for {
|
||||
if !parser.token.Is(lexer.TokenKindName) { break }
|
||||
if !parser.token.Is(lexer.TokenKindName) {
|
||||
parser.previousToken()
|
||||
break
|
||||
}
|
||||
|
||||
identifier.trail = append (
|
||||
identifier.trail,
|
||||
|
@ -364,10 +364,10 @@ func (section EnumSection) ToString (indent int) (output string) {
|
||||
member.value.kind == ArgumentKindArrayDefaultValues
|
||||
|
||||
if isComplexInitialization {
|
||||
output += "\n"
|
||||
output += ":\n"
|
||||
output += member.value.ToString(indent + 2, true)
|
||||
} else if member.value.kind != ArgumentKindNil {
|
||||
output += " " + member.value.ToString(0, false)
|
||||
output += ":<" + member.value.ToString(0, false) + ">"
|
||||
}
|
||||
output += "\n"
|
||||
}
|
||||
|
@ -6,7 +6,10 @@ import "git.tebibyte.media/arf/arf/types"
|
||||
|
||||
// parseType parses a type notation of the form Name, {Name}, etc.
|
||||
func (parser *ParsingOperation) parseType () (what Type, err error) {
|
||||
println("START")
|
||||
defer println("END")
|
||||
err = parser.expect(lexer.TokenKindName, lexer.TokenKindLBrace)
|
||||
println(parser.token.Describe())
|
||||
if err != nil { return }
|
||||
what.location = parser.token.Location()
|
||||
|
||||
@ -181,11 +184,11 @@ func (parser *ParsingOperation) parseObjectDefaultValueAndMembers () (
|
||||
} else if parser.token.Is(lexer.TokenKindPermission) {
|
||||
// parsing a member declaration
|
||||
var member TypeMember
|
||||
member,
|
||||
err = parser.parseObjectNewMember()
|
||||
member, err = parser.parseObjectNewMember()
|
||||
|
||||
// TODO: error on duplicate
|
||||
members = append(members, member)
|
||||
if err != nil { return }
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user