Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- assign(assign(ID, equals, EXPR, semicolon)) --> id(ID), equals, expr(EXPR), semicolon.
- assign([E|Es]) --> assign(E), assign(Es).
- semicolon --> [';'].
- equals --> [=].
- id(id(ID)) --> [ID], { atom(ID) }.
- expr(expr(TERM, ADD_SUB, EXPR)) --> term(TERM), operator(ADD_SUB), expr(EXPR).
- expr(expr(TERM)) --> term(TERM).
- term(term(FACTOR, MULT_DIV, TERM)) --> factor(FACTOR), operator(MULT_DIV), term(TERM).
- term(term(FACTOR)) --> factor(FACTOR).
- factor([factor, LEFT, EXPR, RIGHT]) --> paren(LEFT), expr(EXPR), paren(RIGHT).
- factor(factor(INT)) --> value(INT).
- operator(ADD_SUB) --> [ADD_SUB], { memberchk(ADD_SUB, [+, -]) }.
- operator(MULT_DIV) --> [MULT_DIV], { memberchk(MULT_DIV, [*, /]) }.
- paren(PARA) --> [PARA], { memberchk(PARA, ['(', ')']) }.
- value(int(INT)) --> [INT], {integer(INT)}.
- value(symbol(SYMBOL)) --> [SYMBOL], {atom(SYMBOL)}.
- parse(ParseTree, Program, []):-
- write(Program),
- assign(ParseTree,Program,[]),
- write('Parser output:\n'), write(ParseTree), write('\n').
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement