Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Parser - tautologii
Forum PHP.pl > Forum > PHP
AdamT
Witam! Chcę zrobić paraser (jeszcze nie bardzo wiem w czym ale cos miedzy 'php' a 'c' - nie bardzo wiem w ktorym latwiej)
Ale moze od poczatku. Co mialby robic program?! Mialby sprawdzac czy podane wyrazenie jest tautologia, a wiec :

1) Wpisanie wyrazenia : np. ~(avb)

2) Sprawdzenie warunków :
War. 1 - Czy istnieje jeden operator logiczny i jedna litera (v-alternatywa; f-koniunkcja; >-implikacja; = - równość)
War. 2 - Czy ilość nawiasów otwieranych jest równa ilośći nawiasów zamykanych
War. 3 - Czy nie występuje pusty nawias - ()
War. 4 - SPrawdzenie niedozwolonego znaku

3) Wykonanie instrukcji parsera
Jeżeli powyższe warunki są spełnione na TAK to przechodzimy do analizy zdania i tak, program sprawdza wg podanej gramatki czy po sobie nastepujace zmienne sa zgodne z regulami

# Reguly

S->'spacja'S
S->(S
S->~(S1
S->'Z'S2
S->-S5
S1->'spacja'S1
S1->'Z'S2
S1->(S
S2->'spacja'S2
S2->'o2'S3
S2->)S4
S2->-S5
S2->$
S3->'spacja'S3
S3->'Z'S2
S3->(S
S3->S1
S4->'spacja'S4
S4->'o2'S3
S4->-S5
S4->$
S5->'Z'S2
S5->(S
S5->~S1

o2 - operator logiczny
z - liczba

# Koniec regul

Program ma przejsc hmmm mozna to nazwac kazde "miejsce na litere (S)" i sprawdzic czy podana wartosc jest dobra a dalej sprawdzac w zaleznosci od poprzedniego wyrazenia zgodnie z powyzsza tabela

4) Na sam koniec 'ciasteczka' smile.gif Czyli czy wyrazenie jest tautologia czy nie

Ktos moglby podpowiedziec jak to ugrysc ?
Radarek
Troche chaotycznie to napisales.
Cytat
2) Sprawdzenie warunków :
War. 1 - Czy istnieje jeden operator logiczny i jedna litera (v-alternatywa; f-koniunkcja; >-implikacja; = - równość)
War. 2 - Czy ilość nawiasów otwieranych jest równa ilośći nawiasów zamykanych
War. 3 - Czy nie występuje pusty nawias - ()
War. 4 - SPrawdzenie niedozwolonego znaku


Ad1. questionmark.gifquestionmark.gif
Ad2. To nie wystarcza. Np ')a('. Ilosc ( i ) jest taka sama. Ale takie rzeczy powinien zalatwiac parser (bo jak dalej widze probujesz zbudowac jakas gramatyke).
Ad3. Zalatwi to odpowiednia gramatyka.
Ad4. To samo.

Podana przez ciebie 'gramatyka' jest twojego autorstwa? Wydaje mi sie bardzo zagmatwana. Jesli chcesz oprzez to na gramatyce, parsingu to zainteresuj sie takimi narzedziami jak lex (flex), bison (yacc), sa one dostepne pod C/C++.
NuLL
[OT]Pisane parsera to nie jest zabawa dla początkujących programistów[/OT]
AdamT
Cytat(Radarek)
Ad1. questionmark.gifquestionmark.gif

Czy istnieje minimum jeden operator logiczny i jedna litera w ten sposób teoretyznie wyrażenie może mieć sens

Cytat(Radarek)
Ad2. To nie wystarcza. Np ')a('. Ilosc ( i ) jest taka sama. Ale takie rzeczy powinien zalatwiac parser (bo jak dalej widze probujesz zbudowac jakas gramatyke).


No wlasnie czyli zauwazyles ze na pierwszym miejscu moze stac :
Cytat
S->'spacja'S
S->(S
S->~(S1
S->'Z'S2
S->-S5

Nigdzie nie ma ze na pierwszym miejscu moze stac nawias ')' zamykający...


Cytat(Radarek)
Podana przez ciebie 'gramatyka' jest twojego autorstwa? Wydaje mi sie bardzo zagmatwana.

To jest gramatyka podana przez mojego nauczyciela :/. Nie moja wina :-)

Cytat(NuLL)
Pisane parsera to nie jest zabawa dla początkujących programistów

Niby tak ale to jest program na 4 zawsze mogłem sobiue wybrać kompletny progrm na 5 logika Gentzena smile.gif Ten to dopiero jest zakręcony

Więc jak widzicie rozpaczliwie poszukuję pomocy (przedmiot jakoś muszę zaliczyć :/)
mike
Temat był zamknięty przez jakiś czas, ale od teraz otwieram ponownie.

Ten post ma też na celu "podbicia tematu", w związku z tym że pozostawał zamknięty. Z mojego powodu.

W związku z tym że tamat jest za "dobry" na php Pocz. przenoszę go poziom wyżej.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.