Skip to content

Instantly share code, notes, and snippets.

@kn9ts
Created December 6, 2015 07:24
Show Gist options
  • Save kn9ts/fe26d472497e8f1e3e89 to your computer and use it in GitHub Desktop.
Save kn9ts/fe26d472497e8f1e3e89 to your computer and use it in GitHub Desktop.
An example of defining a programming language grammer
# Expanding Exp
# This is very, very difficult.
grammar = [
("exp", ["exp", "+", "exp"]),
("exp", ["exp", "-", "exp"]),
("exp", ["(", "exp", ")"]),
("exp", ["num"]),
]
def expand(tokens, grammar):
for pos in range(len(tokens)):
for rule in grammar:
if tokens[pos] == rule[0]:
yield tokens[0:pos] + rule[1] + tokens[pos+1:]
# hmmmm
depth = 2
utterances = [["exp"]]
for x in range(depth):
for sentence in utterances:
utterances = utterances + [ i for i in expand(sentence, grammar)]
for sentence in utterances:
print sentence
# ['exp']
# ['exp', '+', 'exp']
# ['exp', '-', 'exp']
# ['(', 'exp', ')']
# ['num']
@kenju254
Copy link

kenju254 commented Dec 7, 2015

@kn9ts looks very interesting

@kenju254
Copy link

kenju254 commented Dec 7, 2015

fuck i am not understanding shit.. need to read more and more to understand what is going on and why we are doing shit

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment