10.07.2015 Views

Analyse syntaxique - LAMP

Analyse syntaxique - LAMP

Analyse syntaxique - LAMP

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Analyse</strong> <strong>syntaxique</strong> par descente récursive<strong>Analyse</strong> <strong>syntaxique</strong> ascendanteGestion des erreurs<strong>Analyse</strong> <strong>syntaxique</strong> d’une grammaire non-contextuelleExemple : <strong>Analyse</strong>ur <strong>syntaxique</strong> EBNFGrammaires LL(1)/* term = {factor} */void term () {while (sym == IDENT || sym == LITERAL || sym == LPAREN || sym == LBRACK || sym == LBRACE)factor();}/* factor = identifier | string | "(" expression ")" |"[" expression "]" | "{" expression "}" */void factor () {switch(sym) {case IDENT: nextToken(); break;case LITERAL: nextToken(); break;case LPAREN:nextToken();expression();if (sym == RPAREN) nextToken();else error("’)’␣expected");break;case LBRACK:nextToken();expression();if (sym == RBRACK) nextToken();else error("’]’␣expected");break;case LBRACE:nextToken();expression();if (sym == RBRACE) nextToken();else error("’}’␣expected");break;default: error("illegal␣start␣of␣factor");}}}<strong>Analyse</strong> <strong>syntaxique</strong> Martin Odersky 10 de 42

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!