i tried to write a predicate and N={Expression,Number,Digit,Operator,Variable}
T={1,2,3,+,-,*,(,),X,Y,Z}
and S is expression and program p defines as
Expression-->Number
**Expression-->(Expression) Operator (Expression)**
Number-->Digit
**Number --> Digit Number**
Digit-->1
Digit-->2
Digit-->3
Operator-->+
Operator-->-
Operator-->*
Variable-->X
Variable-->Y
Variable-->Z
I think that i implemented many parts however could not implement bold parts!!
my prolog code that describes the terminals by depending program P:
expression(S,S).
expression(S,R):-number(S,R).
expression(S,R):-expression(S,R),-operator(S,['('|S]),expression(S,[')'|R]).
expression(S,R):-operator(S,[','|S1]),expression(S1,R).
expression(S,R):-variable(S,[','|S1]),expression(S1,R).
number(S,R):-digit(S,R).
digit(['1'|R],R).
digit(['2'|R],R).
digit(['3'|R],R).
operator(['+'|R],R).
operator(['-'|R],R).
operator(['*'|R],R).
variable(['X'|R],R).
variable(['Y'|R],R).
variable(['Z'|R],R).
Please help me.