Ejemplo n.º 1
0
def analyze(string):
    scanner = Tokenizer()
    list_of_tokens= scanner.tokenize(string)
    print "-------------"
    print "TOKEN LIST:"
    print list_of_tokens
    parser = QueryParser()
    print "----------------"
    print "PARSING RESULT"
    print "----------------"
    print parser.parse(list_of_tokens)

    semparser = QuerySemanticParser(parser.parse(list_of_tokens))
    semparser.parse()
Ejemplo n.º 2
0
from parser import BNParser
from parser import QueryParser
from bayesnet import BayesNet

bnfile = open('tests/01.bn')
qfile = open('tests/01.in')

bnparser = BNParser(bnfile)

bnparser.parse()

qparser = QueryParser(bnparser, qfile)

print('dicionario', bnparser.parsed)

qparser.parse()



print(qparser.get_var())
print(qparser.get_evidence())
Ejemplo n.º 3
0
class VimScry(object):
    def __init__(self, cache_path):
        self.database = None
        self.buf_name = "VimScry"
        self.buf = None
        self.qp = None
        self.initialized = False
        self.cache_path = cache_path

    def setup(self):
        self.database = Database(cache_dir=self.cache_path)
        self.database.load()
        self.qp = QueryParser()
        self.initialized = True

    def random_card(self):
        if not self.initialized:
            self.setup()
        print(str(Formatter(random.choice(self.database.data()))))

    def search(self, query, extras=False):
        if not self.initialized:
            self.setup()
        if not extras:
            query = "-(layout:planar or layout:scheme or layout:vanguard or layout:token or layout:emblem) ({})".format(
                query)
        n = self.qp.parse(query)
        res = [c for c in self.database.data() if n.verify(c)]
        return res

    def create_buffer(self):
        vim.command("set switchbuf +=useopen")
        if not self.buf:
            vim.command("vnew")
            vim.command("set filetype=vimscry")
            self.buf = vim.current.buffer
            self.buf.name = self.buf_name
        else:
            vim.command("vert sbuffer {}".format(self.buf_name))
        vim.command("setlocal ma")
        self.buf[:] = None
        vim.current.window.width = 80

    def scry(self):
        """Performs a search, and opens a new window (split vertically) with the results.
        Prints any errors out."""
        query = vim.eval("a:query")
        res = self.search(query)
        self.create_buffer()
        self.buf[0] = '{} cards found for query `{}`'.format(len(res), query)
        for c in res:
            self.buf.append(c["name"])
            face = str(Formatter(c))
            for line in face.splitlines():
                self.buf.append(" | " + line)
        vim.command("setlocal noma")

    def open_card_url(self):
        """Opens the current card in a web browser"""
        if vim.current.buffer != self.buf:
            return
        row, col = vim.current.window.cursor
        if row == 1:
            print("No card selected")
            return
        line = self.buf[row - 1]
        while not 'https://scryfall.com' in line:
            row += 1
            line = self.buf[row - 1]
        try:
            url_start = line.index('https://scryfall.com')
            webbrowser.open(line[url_start:])
        except ValueError as e:
            print("No url found")
        except webbrowser.Error as e:
            print("Error opening url")

    def copy_card_names(self):
        """Copies the name of the current card"""
        if vim.current.buffer != self.buf:
            return
        start = int(vim.eval('a:firstline'))
        end = int(vim.eval('a:lastline'))
        pos = vim.current.window.cursor
        if start == 1 and end == 1:
            print("No card selected")
            return
        if start == 1:
            start = 2
        card_names = []
        for row in range(start, 0, -1):
            if not self.buf[row][0:3] == " | ":
                card_names.append(self.buf[row])
                break
        for card in self.buf[start:end]:
            if not card[0:3] == " | ":
                card_names.append(card)
        vim.command("setlocal ma")
        for card in reversed(card_names):
            self.buf.append(card, 0)
        vim.command('silent 1,{}d'.format(len(card_names)))
        vim.command("setlocal noma")
        vim.current.window.cursor = pos
        print("{} cards copied".format(len(card_names)))
Ejemplo n.º 4
0
 def setup(self):
     self.database = Database(cache_dir=self.cache_path)
     self.database.load()
     self.qp = QueryParser()
     self.initialized = True
Ejemplo n.º 5
0
parser.add_argument('query', type=argparse.FileType('r'), help='an input file where the query and evidence are defined')
parser.add_argument('--verbose', '-v', action='store_true', help='explain what is being done')
args = parser.parse_args()

if __name__ == "__main__":

    # measure time
    start_time_program = time.time()

    print('Parsing Bayesian network from ' + args.bayesnet.name + '... ', end = '')
    bnp = BNParser(args.bayesnet)
    bnp.parse()
    print('Done.')

    print('Parsing query from ' + args.query.name + '... ', end = '')
    qparser = QueryParser(bnp, args.query)
    qparser.parse()
    evidence = qparser.get_evidence()
    vartoinf = qparser.get_var()
    print('Done.\n')

    # create the Bayesian network
    bn = BayesNet(bnp.parsed)

    # compute the poseterior probability distribution
    ppd = bn.ppd([vartoinf], evidence)

    sol_write = SolWriter(args.query.name)
    if args.verbose:
        sol_write.write_sol(ppd, qparser.query_str, qparser.evidence_str, bn.step_by_step)
    else: