func ParseFileWithChecks(fp string) (map[string]interface{}, error) {
	data, err := ioutil.ReadFile(fp)
	if err != nil {
		return nil, err
	}
	p, err := parse(string(data), fp, true)
	if err != nil {
		return nil, err
	}
	return p.mapping, nil
}
ParseFileWithChecks is equivalent to ParseFile but runs in pedantic mode.
package conf
import (
	"fmt"
	"io/ioutil"
	"os"
	"path/filepath"
	"strconv"
	"strings"
	"time"
	"unicode"
)
type parser struct {
	mapping map[string]interface{}
	lx      *lexer
	ctx interface{}
	ctxs []interface{}
	keys []string
	ikeys []item
	fp string
	pedantic bool
}
func Parse(data string) (map[string]interface{}, error) {
	p, err := parse(data, "", false)
	if err != nil {
		return nil, err
	}
	return p.mapping, nil
}
func ParseFile(fp string) (map[string]interface{}, error) {
	data, err := ioutil.ReadFile(fp)
	if err != nil {
		return nil, fmt.Errorf("error opening config file: %v", err)
	}
	p, err := parse(string(data), fp, false)
	if err != nil {
		return nil, err
	}
	return p.mapping, nil
}