@ -52,7 +52,7 @@ func (p *Parser) parseObject() JsonObject {
// Ensure the current token is the beginning of an object
// Ensure the current token is the beginning of an object
if ! p . curTokenIs ( token . BEGIN_OBJECT ) {
if ! p . curTokenIs ( token . BEGIN_OBJECT ) {
p . addError ( "expected '{' ")
p . addError ( fmt . Sprintf ( "expected '{' at line %d, column %d, got '%s' ", p . curToken . Line , p . curToken . Column , p . curToken . Value ) )
return nil
return nil
}
}
@ -88,7 +88,7 @@ func (p *Parser) parseObject() JsonObject {
// Handle comma separation for multiple key-value pairs
// Handle comma separation for multiple key-value pairs
if p . curTokenIs ( token . VALUE_SEPARATOR ) {
if p . curTokenIs ( token . VALUE_SEPARATOR ) {
if p . peekToken . Type == token . END_OBJECT { // No comma just before the end of the object
if p . peekToken . Type == token . END_OBJECT { // No comma just before the end of the object
p . addError ( "No ',' before '}' ")
p . addError ( fmt . Sprintf ( "No ',' before '}' at line %d, column %d ", p . curToken . Line , p . curToken . Column ) )
return nil
return nil
}
}
@ -98,7 +98,7 @@ func (p *Parser) parseObject() JsonObject {
// Ensure the end of the object is reached
// Ensure the end of the object is reached
if ! p . curTokenIs ( token . END_OBJECT ) {
if ! p . curTokenIs ( token . END_OBJECT ) {
p . addError ( "expected '}' ")
p . addError ( fmt . Sprintf ( "expected '}' at line %d, column %d, got '%s' ", p . curToken . Line , p . curToken . Column , p . curToken . Value ) )
return nil
return nil
}
}
@ -111,7 +111,7 @@ func (p *Parser) parseArray() JsonArray {
// Ensure the current token is the beginning of an array
// Ensure the current token is the beginning of an array
if ! p . curTokenIs ( token . BEGIN_ARRAY ) {
if ! p . curTokenIs ( token . BEGIN_ARRAY ) {
p . addError ( "expected '[' ")
p . addError ( fmt . Sprintf ( "expected '[' at line %d, column %d, got '%s' ", p . curToken . Line , p . curToken . Column , p . curToken . Value ) )
return nil
return nil
}
}
@ -153,7 +153,7 @@ func (p *Parser) addError(msg string) {
// parseObjectKey parses and returns the key of an object field.
// parseObjectKey parses and returns the key of an object field.
func ( p * Parser ) parseObjectKey ( ) string {
func ( p * Parser ) parseObjectKey ( ) string {
if p . curToken . Type != token . STRING {
if p . curToken . Type != token . STRING {
p . addError ( "expected string for key ")
p . addError ( fmt . Sprintf ( "expected string for key at line %d, column %d, got '%s' ", p . curToken . Line , p . curToken . Column , p . curToken . Value ) )
return ""
return ""
}
}
return p . curToken . Value
return p . curToken . Value
@ -175,7 +175,7 @@ func (p *Parser) parseValue() (interface{}, error) {
case token . BEGIN_ARRAY :
case token . BEGIN_ARRAY :
return p . parseArray ( ) , nil
return p . parseArray ( ) , nil
default :
default :
p . addError ( "unexpected token ")
p . addError ( fmt . Sprintf ( "unexpected token '%s' at line %d, column %d ", p . curToken . Value , p . curToken . Line , p . curToken . Column ) )
return nil , errors . New ( "unexpected token" )
return nil , errors . New ( "unexpected token" )
}
}
}
}
@ -189,7 +189,7 @@ func (p *Parser) parseNumber() interface{} {
// Parse as float
// Parse as float
val , err := strconv . ParseFloat ( numStr , 64 )
val , err := strconv . ParseFloat ( numStr , 64 )
if err != nil {
if err != nil {
p . addError ( fmt . Sprintf ( "could not parse %q as float ", numStr ) )
p . addError ( fmt . Sprintf ( "could not parse %q as float at line %d, column %d ", numStr , p . curToken . Line , p . curToken . Column ) )
return nil
return nil
}
}
return val
return val
@ -198,7 +198,7 @@ func (p *Parser) parseNumber() interface{} {
// Parse as integer
// Parse as integer
val , err := strconv . ParseInt ( numStr , 10 , 64 )
val , err := strconv . ParseInt ( numStr , 10 , 64 )
if err != nil {
if err != nil {
p . addError ( fmt . Sprintf ( "could not parse %q as integer ", numStr ) )
p . addError ( fmt . Sprintf ( "could not parse %q as integer at line %d, column %d ", numStr , p . curToken . Line , p . curToken . Column ) )
return nil
return nil
}
}
return val
return val
@ -215,7 +215,7 @@ func (p *Parser) expectPeek(t token.TokenType) bool {
p . nextToken ( )
p . nextToken ( )
return true
return true
} else {
} else {
p . addError ( fmt . Sprintf ( "expected next token to be %v, got %v instead ", t , p . peekToken . Type ) )
p . addError ( fmt . Sprintf ( "expected next token to be %v, got %v instead , at line %d, column %d ", t , p . peekToken . Type , p . curToken . Line , p . curToken . Column ) )
return false
return false
}
}
}
}