This item is deleted.

Pomoc - Java - parsovani souboru

Návštěvník at 2009-04-15 17:38:49

Zdravim!

Shanim nekoho kdo ma zkusenosti s programovanim v Jave (a to vice nez ja :-)). Mam tady par textovych souboru a asi tak 10 stran vysvetlujicich jakou muzou mit strukturu. Potrebuji je preparsovat do vhodnejsiho formatu, pripadne poznat pokud neodpovidaji danym pravidlum. Prave tento druhy pozadavek mi dela problemy, asi na to jdu spatne.
Takze, hledam nekoho kdo by mi pomohl tohleto naprogramovat.

Odmena: 250Kc/hod.

Kontakt: audi-tt at email.cz (jinak, bydlim na koleji 17.listopadu)

Diky!

Osiris at 2009-04-15 18:57:08

Proč si na to nenapíšeš LALR(1) gramatiku?

Návštěvník at 2009-04-15 23:56:50

Ahoj!

Musim priznat ze s tim nemam moc zkusenosti, ale nevim jak moc se tento pristup hodi, jelikoz se v techto souborech ani zblizka nepouzivaji vsechny informace, hodne se preskakuje, jednotlive atributy obcas nejsou vubec oddelovany, urcuji se na zaklade pozice ve stringu.
Pokud jsi nekdy delal s temi gramatikami, a myslis si ze by se opravdu daly pouzit, byl bych vdecny za odkaz na nejaky dobry zdroj informaci...

Osiris at 2009-04-16 19:45:36

Návštěvník wrote:Ahoj!

Musim priznat ze s tim nemam moc zkusenosti, ale nevim jak moc se tento pristup hodi, jelikoz se v techto souborech ani zblizka nepouzivaji vsechny informace, hodne se preskakuje, jednotlive atributy obcas nejsou vubec oddelovany, urcuji se na zaklade pozice ve stringu.
Pokud jsi nekdy delal s temi gramatikami, a myslis si ze by se opravdu daly pouzit, byl bych vdecny za odkaz na nejaky dobry zdroj informaci...

Ahoj.
No pokud ti hodně záleží na korektnosti těch dat, tak ta gramatika je nejjednodušší způsob, jak to ověřit. Nejjednodušší je použít nějaký předprogramovaný nástroj na generování gramatik typu flex/bison. Stačí zadat do google bison a vyjede ti hromada odkazů.

Například:
http://www.gnu.org/software/bison/
http://flex.sourceforge.net/

Zde je příklad kalkulačky:
http://www.esiee.fr/~coupriem/Bison/bison_5.html

A zde je příklad kódu gramatiky:

input:    /* empty */
        | input line
;

line:     '
'
        | exp '
'  { printf ("\t%.10g
", $1); }
;

exp:      NUM             { $$ = $1;         }
        | exp exp '+'     { $$ = $1 + $2;    }
        | exp exp '-'     { $$ = $1 - $2;    }
        | exp exp '*'     { $$ = $1 * $2;    }
        | exp exp '/'     { $$ = $1 / $2;    }
      /* Exponentiation */
        | exp exp '^'     { $$ = pow ($1, $2); }
      /* Unary minus    */
        | exp 'n'         { $$ = -$1;        }
;
%%
hippies at 2009-04-20 12:14:31

bison je sice peknej, ale umi jen C (a pseudo C++) .. ale vyber je veliky: http://en.wikipedia.org/wiki/Comparison ... generators