Support for in and function calls
diff --git a/plyxproto/logicparser.py b/plyxproto/logicparser.py
index 4af0cb6..30b1bf6 100644
--- a/plyxproto/logicparser.py
+++ b/plyxproto/logicparser.py
@@ -9,7 +9,7 @@
from helpers import LexHelper, LU
class FOLLexer(object):
- keywords = ('forall', 'exists', 'True', 'False', 'not')
+ keywords = ('forall', 'exists', 'True', 'False', 'not', 'in')
tokens = ['STRING_LITERAL', 'NUM', 'ESCAPE', 'COLON', 'IMPLIES', 'OR', 'AND', 'LPAREN', 'RPAREN', 'EQUALS', 'SYMBOL', 'LT', 'RT'] + [k.upper() for k in keywords]
# literals = '()+-*/=?:,.^|&~!=[]{};<>@%'
@@ -47,7 +47,7 @@
t.lexer.lineno += t.value.count('\n')
def t_SYMBOL(self, t):
- '[A-Za-z_$][\.A-Za-z0-9_+$]*'
+ '[A-Za-z_$][\.A-Za-z2-9_+$]*(\(\))?'
if t.value in FOLLexer.keywords:
t.type = t.value.upper()
return t
@@ -100,6 +100,10 @@
"fole : LPAREN fole RPAREN"
p[0] = p[2]
+ def p_fole_in(self, p):
+ "fole : term IN term"
+ p[0] = {'in': (p[1], p[3])}
+
def p_fole_equals(self, p):
"fole : term EQUALS term"
p[0] = {'=': (p[1], p[3])}