.


:




:

































 

 

 

 


Domains. Multexp(TOKL,TOKL,EXP)




TOKL = STRING*

EXP=var(STRING);

Plus(EXP,EXP);

Mult(EXP,EXP)

PREDICATES

Run

Tokl(STRING,TOKL)

S_exp(TOKL,TOKL,EXP)

Multexp(TOKL,TOKL,EXP)

Multexp1(TOKL,TOKL,EXP,EXP)

Plusexp(TOKL,TOKL,EXP)

Plusexp1(TOKL,TOKL,EXP,EXP)

Elmexp(TOKL,TOKL,EXP)

GOAL

Run.

CLAUSES

run: makewindow(1,2,7,"",0,0,25,80),

Readln(STR),tokl(STR,TOKL),

S_exp(TOKL,_,EXP), write(EXP),nl.

tokl(STR,[TOK|TOKL]):

Fronttoken(STR,TOK,STR1),

Tokl(STR1,TOKL).

tokl(_,[]).

s_exp(IL,OL,EXP):plusexp(IL,OL,EXP).

plusexp(IL,OL,EXP2):

Multexp(IL,OL1,EXP1),

Plusexp1(OL1,OL,EXP1,EXP2).

plusexp1(["+"|IL],OL,EXP1,EXP3):

Multexp(IL,OL1,EXP2),

Plusexp1(OL1,OL, plus(EXP1,EXP2),EXP3).

Plusexp1(IL,IL,EXP,EXP).

multexp(IL,OL,EXP2):

Elmexp(IL,OL1,EXP1),

Multexp1(OL1,OL,EXP1,EXP2).

multexp1(["*"|IL],OL,EXP1,EXP3):

Elmexp(IL,OL1,EXP2),

Multexp1(OL1,OL, mult(EXP1,EXP2),EXP3).

Multexp1(IL,IL,EXP,EXP).

elmexp([NAME|IL],IL, var(NAME)).

25. , . , , :

<SENTENCE>::= <NOUN PHRASE> <VERB PHRASE>

<NOUN PHRASE>::=<DETERMINER> <noun> <RELATIONAL CLAUSE>

<DETERMINER>::= < > | <determiner>

<RELATIONAL CLAUSE>::= < > | <relative> <VERB PHRASE>

<VERB PHRASE>::= <verb> | <NOUN PHRASE>

:

DATABASE %,

det(STRING) %

noun(STRING) %

rel(STRING) %

verb(STRING) %

DOMAINS %

DETERM = none; determ(STRING)

NOUNP = nounp(DETERM, STRING, RELCL)

RELCL = none; relcl(STRING, VERBP)

SENTENCE = sent(NOUNP, VERBP)

VERBP = verb(STRING); verbp(STRING, NOUNP)

TOKL = STRING*

PREDICATES

Is_det(STRING)

Is_noun(STRING)

Is_rel(STRING)

Is_verb(STRING)

S_determ(TOKL, TOKL, DETERM)

S_nounp(TOKL, TOKL, NOUNP)

S_relcl(TOKL, TOKL, RELCL)

S_sentence(TOKL, TOKL, SENTENCE)

S_verbp(TOKL, TOKL, VERBP)

Tokl(STRING, TOKL)

Tom(TOKL)

Run1

Run2(STRING)

Sen_an

GOAL makewindow(1,6,0,"",0,0,25,80),

sen_an.

CLAUSES

sen_an: write("Try: every man that lives loves a woman"),

readln(LIN), LIN >< "",

Tokl(LIN,TOKL),

S_sentence(TOKL, _, SENT),

write("PROLOG OBJECT=",SENT," "),

readchar(_),clearwindow,!.

tokl(STR,[TOK|TOKL]):

Fronttoken(STR,TOK,STR1),

Tokl(STR1,TOKL).

tokl(_,[ ]).

s_sentence(TOKL,TOKL2,sent(NOUNP,VERBP)):

S_nounp(TOKL,TOKL1,NOUNP),

S_verbp(TOKL1,TOKL2,VERBP),

TOKL2=[ ],!.

s_sentence(_,_,_):write(">> Sentence not recognized \n"),fail.

%

s_nounp(TOKL,TOKL2,nounp(DETERM,NOUN,RELCL)):

s_determ(TOKL,[NOUN|TOKL1],DETERM),

Is_noun(NOUN),

s_relcl(TOKL1,TOKL2,RELCL).

%

s_determ([DETERM|TOKL],TOKL,determ(DETERM)):





:


: 2015-10-01; !; : 407 |


:

:

, .
==> ...

1520 - | 1406 -


© 2015-2024 lektsii.org - -

: 0.017 .