Portál AbcLinuxu, 19. dubna 2024 12:58


Dotaz: Parser

29.11.2013 13:04 Alx
Parser
Přečteno: 508×
Odpovědět | Admin
Rad by som si urobil jasno v pojmoch.

Lexer prevedie retazec zdrojoveho kodu na pole tokenov.

Nasledne parser z pola tokenov urobi abstraktny syntakticky strom (AST).

Napriklad v lispe z prvkov medzi pravou a lavou zatvorkou parser urobi List a potom prechadza rekurzivne vsetky prvky toho Listu a z nich tiez vygeneruje bud List, Identifikator alebo Literal?

Nasledne cely strom vyhodnoti funkcia eval?

chapem tomu spravne? Alebo sa mylim? A ako sa nazyva polozka toho AST?
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

29.11.2013 14:34 Ivan
Rozbalit Rozbalit vše Re: Parser
Odpovědět | | Sbalit | Link | Blokovat | Admin
Chapes to spravne. Ten AST by se jeste mel projit aby se provedla semanticka kontrola. Napr: ' 1 + "Ahoj"  ' je syntakticky spravne, ale semanticky to nedava smysl (alespon u casti jazyku).

V realu je casto potreba provadet vsechny kroky najednou (paralelne). Napr. tzv "kontext sensitive lexer" by mel poznat jestli je "ahoj" jmeno typu anebo ne. Bez toho by dalsi parsovani nemelo smysl.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.