torstai 18. syyskuuta 2008

Harjoitusmaailman XML-kuvaus

Sain vihdoin laadituksi kuvaksen alla esitetystä 20:stä lojban-bridistä:
http://www.freedrive.com/member/viewfolder/173153
XML-tiedosto on siis esitys lauseiden syntaktisesta rakenteesta. Vääntäessäni tiedostoa löysin paljon virheitä lojban-lauseista. Korjaan virheet. Olen varma, että virheitä on vielä kaikkialla, lojban-tasolla, XML-tasolla ja koko ajattelussani. Seuraavaksi (päivitettyäni virheelliset lauseet) ladattuani sekä suomenkieliset että lojbanikieliset tiedostot XML:n seuraksi, teen neljänneksi esitykseksi PEG-kieliopin (Parsing Expression Grammar), jonka pitäisi olla jälleen yhtäpitävä edellisten kanssa. Sen jälkeen olisin kai valmis alkamaan vääntämään C++-koodia, jonka tietysti myöskin pitäisi olla sopusoinnussa edellisten kanssa. Koodin siis pitäisi lojban-tekstistä PEG-kielioppia käyttäen pystyä työstämään valmiiksi vertailumalliksi väsätty XML-tiedosto. Sitten ensimmäinen vaihe on valmis.

2 kommenttia:

Anonyymi kirjoitti...

Laitoin tuonne graafisen esityksen rakenteesta. (Pääsy vain käyttäjälle Carvtum, koska minulla ei ole tietenkään copyrightiä tiedostoon.)

http://www.freedrive.com/folder/173242

Tein hätäisesti jotain muutoksia. Siirsin mm. sumtit erottavat numerot elementistä (sumti1) attribuuttiin (sumti="1"). Ja korvasin subbridin bridillä.

JuSa kirjoitti...

Ymmärrän erittäin hyvin, että yhdistämällä sumtit, ja laittamalla paikkatyypin vain atribuutiksi asia näyttää kauniimmalta. Mutta sitten kun paikkakoodiin sidotuksi tulee vielä "fa, fe, fi.." tägit samoin kun "se, te, ve.." cmavot, niin pitää vielä hiukan miettiä, miltä asia kieliopin tasolla näyttää. Mutta ihan kauniita kuvia joka tapauksessa.

Koitan nyt syventyä PEG-kieliopin muodon ideointiin, eteenkin miten saisin sen saumattomasti .h-tiedoston muotoon, ilman että kielioppia tarvitsee erikseen parsia. Tässä vaiheessa ei niin vielä, mutta jatkossa huolena ovat myös "left-recursive" tapaukset kuten relatiivilauseet, internal-sumti-rakenteet, abastraktioiden sisältämät abstraktiot ym. Vaatii hieman opiskelua. Mutta toiset ovat jo ratkaisuja löytäneet. Useimmiten rekursion voi jotenkin kuulemma korvata selkeällä iteraatiolla, mutta en nyt vielä ymmärrä..