Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


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; Мы поможем в написании ваших работ!; просмотров: 420 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Люди избавились бы от половины своих неприятностей, если бы договорились о значении слов. © Рене Декарт
==> читать все изречения...

4482 - | 4344 -


© 2015-2026 lektsii.org - Контакты - Последнее добавление

Ген: 0.01 с.