summaryrefslogtreecommitdiff
path: root/prolog/util.py
diff options
context:
space:
mode:
Diffstat (limited to 'prolog/util.py')
-rw-r--r--prolog/util.py10
1 files changed, 8 insertions, 2 deletions
diff --git a/prolog/util.py b/prolog/util.py
index 83a3ade..3130ea5 100644
--- a/prolog/util.py
+++ b/prolog/util.py
@@ -2,8 +2,6 @@
from collections import namedtuple
-from .lexer import lexer, operators
-
# Stores a token's type and value, and optionally the position of the first
# character in the lexed stream.
class Token(namedtuple('Token', ['type', 'val', 'pos', 'rule', 'part', 'stop'])):
@@ -39,6 +37,9 @@ class Token(namedtuple('Token', ['type', 'val', 'pos', 'rule', 'part', 'stop']))
self.part if part is None else part,
self.stop if stop is None else stop)
+from .lexer import lexer, operators
+from .parser import parser
+
# Return a list of tokens in [text].
def tokenize(text):
lexer.input(text)
@@ -142,6 +143,11 @@ def compose(tokens):
prev = t
return code.strip()
+# Parse [text] into an AST.
+def parse(text):
+ tree = parser.parse(text)
+ return tree
+
# Rename variables in [tokens] to A0, A1, A2,… in order of appearance.
def rename_vars(tokens, names=None):
if names is None: