Ejemplo n.º 1
0
func Parse(input string) (query []Query, err error) {
	s := parsec.NewScanner([]byte(input))
	result, next := y(s)
	if next.Endof() {
		query = result.([]Query)
	} else {
		err = errors.New("Failed to parse input")
	}

	return
}
Ejemplo n.º 2
0
func genDocuments(b *couchbase.Bucket, prodfile string, idx, n int) {
	// compile
	text, err := ioutil.ReadFile(prodfile)
	if err != nil {
		log.Fatal(err)
	}
	scope := compile(parsec.NewScanner(text)).(mcommon.Scope)
	seed, bagdir := uint64(options.seed), options.bagdir
	scope = monster.BuildContext(scope, seed, bagdir, prodfile)
	nterms := scope["_nonterminals"].(mcommon.NTForms)
	// evaluate
	for i := 0; i < options.count; i++ {
		scope = scope.RebuildContext()
		doc := evaluate("root", scope, nterms["s"]).(string)
		key := makeKey(prodfile, idx, i+1)
		err = b.SetRaw(key, options.expiry, []byte(doc))
		if err != nil {
			fmt.Printf("%T %v\n", err, err)
		}
		mf(err, "error setting document")
	}
	fmt.Printf("routine %v generated %v documents for %q\n", idx, n, b.Name)
	done <- true
}