def __init__(self, parserdir, daskeys, dassystems, operators=None, specials=None, filters=None, aggregators=None, mapreduces=None, verbose=0): self.daskeys = daskeys self.verbose = verbose self.lexer = None # defined at run time using self.build() self.parser = None # defined at run time using self.build() self.dassystems = dassystems self.parsertab_dir = parserdir if not os.path.isdir(self.parsertab_dir): msg = 'Directory %s does not exists' % self.parsertab_dir raise Exception(msg) # test if we have been given a list of desired operators/filters # /aggregators, if not get the lists from das_ql operators = operators if operators else das_operators() filters = filters if filters else das_filters() aggregators = aggregators if aggregators else das_aggregators() mapreduces = mapreduces if mapreduces else das_mapreduces() specials = specials if specials else das_special_keys() # build a map of token->token.type which we can use in the # enlarged VALUE rule self.tokenmap = {} for o in operators: self.tokenmap[o] = 'OPERATOR' for f in filters: self.tokenmap[f] = 'FILTER' for a in aggregators: self.tokenmap[a] = 'AGGREGATOR' for m in mapreduces: self.tokenmap[m] = 'MAPREDUCE' for s in specials: self.tokenmap[s] = 'SPECIALKEY'
def __init__(self, daskeys, dassystems, operators=None, specials=None, filters=None, aggregators=None, mapreduces=None, verbose=0): super(DASQueryParser, self).__init__() self.daskeys = daskeys + ['queries', 'records'] self.verbose = verbose self.dassystems = dassystems # test if we have been given a list of desired operators/filters # /aggregators, if not get the lists from das_ql self.operators = operators if operators else das_operators() self.filters = filters if filters else das_filters() self.aggregators = aggregators if aggregators else das_aggregators() self.mapreduces = mapreduces if mapreduces else das_mapreduces() self.specials = specials if specials else das_special_keys() if self.verbose: print("operators", self.operators) print('filters', self.filters) print('mapreduces', self.mapreduces) print('specials', self.specials) self.daskeys += self.specials