Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- %1
- <01> ::= <|<=|=|<>|>=|>|in
- <02> ::= +|-|or
- <03> ::= /|div|mod|and
- <04> ::= not
- <w1> ::= <w2>|<w1><01><w2>
- <w2> ::= <w3>|-<w3>|<w2><02><w3>
- <w3> ::= <w4>|<w3>|<03><w4>
- <w4> ::= <w>|<04><w>
- <w> ::= <atom>|(<w1>)
- %2
- <wyr bool> ::= <wyr><op_bool><wyr>
- <wyr> ::= <skladnik>|<wyr><op_add><skladnik>
- <skladnik> ::=<czynnik>|<skladnik><op_mul><czynnik>
- <czynnik> ::= <wyr at>|<wyr at><op_pot><czynnik>
- <wyr at> ::= <liczba>|(<wyr>)
- <liczba> ::= <cyfra>|<cyfra><liczba>
- <cyfra> ::= 0|1|...|9
- <op_bool> ::= <|=
- <op_add> ::= +
- <op_mul> ::= *
- <op_pot> ::= ^
- %3
- <cyfra> ::= 0|1|...|9
- <ciag cyfr> ::= <cyfra>|<ciag cyfr><cyfra.
- <znak> ::= +|-|<puste>
- <puste> ::=
- <wyk> ::= e
- <liczba> ::= <znak><ciag cyfr><wyk>|<znak><ciag cyfr>.<ciag cyfr>|<znak><ciag cyfr>.<ciag cyfr><wyk>
- %7
- /*
- :- op(200, xf, !).
- :- arithmetic_function(!/1).
- */
- :- op(200, xf, !!).
- :- arithmetic_function(!!/1).
- /*
- !(N, M):-
- !(1, N, 1, M).
- */
- !(N, N, Acc, Acc):-!.
- !(Num, N, Acc, Wyn):-
- NewNum is Num+1,
- NewAcc is NewNum*Acc,
- !(NewNum, N, NewAcc, Wyn).
- '!!'(N, M):-
- '!!'(1, N, 1, M).
- '!!'(Num, N, Acc, Acc):-
- Num is N-1, !.
- '!!'(N, N, Acc, Acc):-!.
- '!!'(Num, N, Acc, Wyn):-
- NewNum is Num+2,
- NewAcc is NewNum*Acc,
- '!!'(NewNum, N, NewAcc, Wyn).
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement