Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /******** Grammaire : à faire **********/
- float F(float x)
- {
- if (currentToken()->type == VAR)
- {
- consume(VAR);
- return x;
- }
- else if (currentToken()->type == NUMBER)
- {
- consume(NUMBER);
- return x;
- }
- else if (currentToken()->type == LB)
- {
- consume(LB);
- return A(x);
- consume(RB);
- }
- }
- float Tp(float x)
- {
- if (currentToken()->type == MULT || currentToken()->type == DIV)
- {
- consume(currentToken()->type);
- x=F(x);
- return Tp(x);
- }else
- {
- return x;
- }
- }
- float T(float x)
- {
- x=F(x);
- return Tp(x);
- }
- float Ep(float x)
- {
- if (currentToken()->type == MINUS || currentToken()->type == PLUS)
- {
- consume(currentToken()->type);
- x=T(x);
- return Ep(x);
- }else
- {
- return x;
- }
- }
- float E(float x)
- {
- x=T(x);
- return Ep(x);
- }
- float A(float x)
- {
- if (currentToken()->type == VAR)
- {
- consume(VAR);
- consume(ASSIGN);
- return A(x);
- }
- else
- {
- return E(x);
- }
- }
- void Sp(float x)
- {
- A(x);
- consume(SEMICOLON);
- printf("%f",x);
- }
- /******** Exemple de programme principal (lecture du fichier passé en paramètres ******/
- int main(int argc, char *argv[])
- {
- fprintf(stderr, "Lexing from %s.\n", argv[1]);
- initLexer(argv[1]);
- // Appeler la racine de la grammaire...
- Sp(0);
- // Vérifier que tout le programme a été lu...
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement