Ejemplo n.º 1
0
def repl(hook):
    lineno = 0
    tokens = []

    while True:
        try:
            log = agentspeak.Log(agentspeak.get_logger(__name__), 3)

            if not tokens:
                line = agentspeak.util.prompt("agentspeak.parser >>> ")
            else:
                line = agentspeak.util.prompt("agentspeak.parser ... ")

            lineno += 1

            tokens.extend(agentspeak.lexer.tokenize(agentspeak.StringSource("<stdin>", line), log, lineno))

            while tokens:
                token_stream = iter(tokens)
                try:
                    agent = parse_agent("<stdin>", token_stream, log, frozenset())
                except StopIteration:
                    log.throw()
                    break
                else:
                    log.throw()
                    hook(agent)
                    tokens = list(token_stream)
        except agentspeak.AggregatedError as error:
            print(str(error), file=sys.stderr)
            tokens = []
        except KeyboardInterrupt:
            print()
            sys.exit(0)
Ejemplo n.º 2
0
    def test_unexpected_eof(self):
        src = agentspeak.StringSource("<test>", "a")
        log = agentspeak.Log(agentspeak.get_logger(__name__), 3)
        tokens = agentspeak.lexer.TokenStream(src, log)

        with self.assertRaises(agentspeak.AggregatedError):
            agentspeak.parser.parse("<test>", tokens, log, frozenset())
Ejemplo n.º 3
0
def main(source, lineno=1):
    log = agentspeak.Log(agentspeak.get_logger(__name__), 3)

    for tok in tokenize(source, log, lineno):
        log.info("%s", tok.lexeme, loc=tok.loc)

    log.throw()
Ejemplo n.º 4
0
    def test_unify_return_value(self):
        src = agentspeak.StringSource("<test>", "+!p <- (X = 2) + 1 > 0.")
        log = agentspeak.Log(agentspeak.get_logger(__name__), 3)
        tokens = agentspeak.lexer.TokenStream(src, log)

        with self.assertRaises(agentspeak.AggregatedError):
            agentspeak.parser.parse("<test>", tokens, log, frozenset())
            log.throw()
Ejemplo n.º 5
0
    def test_rule_head_not_unifiable(self):
        src = agentspeak.StringSource("<test>", "rule(X + 1) :- true.")
        log = agentspeak.Log(agentspeak.get_logger(__name__), 3)
        tokens = agentspeak.lexer.TokenStream(src, log)
        agentspeak.parser.parse("<test>", tokens, log, frozenset())

        with self.assertRaises(agentspeak.AggregatedError):
            log.throw()
Ejemplo n.º 6
0
    def test_formula_type(self):
        src = agentspeak.StringSource("<test>", "+!plan <- ?true.")
        log = agentspeak.Log(agentspeak.get_logger(__name__), 3)
        tokens = agentspeak.lexer.TokenStream(src, log)
        agentspeak.parser.parse("<test>", tokens, log, frozenset())

        with self.assertRaises(agentspeak.AggregatedError):
            log.throw()
Ejemplo n.º 7
0
def main(source, hook):
    log = agentspeak.Log(agentspeak.get_logger(__name__), 3)

    tokens = agentspeak.lexer.TokenStream(source, log, 1)
    agent = parse(source.name, tokens, log)

    log.throw()

    hook(agent)
Ejemplo n.º 8
0
import collections
import copy
import functools
import os.path
import time

import agentspeak
import agentspeak.parser
import agentspeak.lexer
import agentspeak.util

from agentspeak import UnaryOp, BinaryOp, AslError, asl_str

from stag_logger.Logger import Logger

LOGGER = agentspeak.get_logger(__name__)


class BuildTermVisitor:
    def __init__(self, variables):
        self.variables = variables

    def visit_literal(self, ast_literal):
        return agentspeak.Literal(ast_literal.functor,
                                  (t.accept(self) for t in ast_literal.terms),
                                  (t.accept(self)
                                   for t in ast_literal.annotations))

    def visit_const(self, ast_const):
        return ast_const.value