Main Page | File List | Globals

operations.c File Reference

Operations effectuees par la calculette. More...

#include "table.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "erreur.h"

Include dependency graph for operations.c:

Include dependency graph

Go to the source code of this file.

Functions

int recupereArgument (const char *arg, int *r)
char * split (char *s, char c)
int op_f (const char *arg, int *r, int(*op)(int, int))
int print (const char *arg)
int add_f (const char *arg, int *r)
int mult_f (const char *arg, int *r)
int sub_f (const char *arg, int *r)
int quo_f (const char *arg, int *r)
int mod_f (const char *arg, int *r)
int traiteConstante (const char *ligne)
int traiteInstruction (const char *ligne)
void end ()

Variables

table_t t = NULL
int mem
int mem_pret = 0


Detailed Description

Operations effectuees par la calculette.

Author:
Sylvain Lombardy
Date:
6 novembre 2008

Definition in file operations.c.


Function Documentation

int add_f const char *  arg,
int *  r
[static]
 

Effectue l'addition sur les deux arguments presents dans la chaine arg. Le resultat est stocke dans *r. En cas d'echec, num_erreur est fixe a E_SYNTAXE, E_INIT ou E_NOT_FOUND

See also:
error_type
Parameters:
arg : la chaine contenant les deux arguments separes par un espace
r : adresse ou stocker le resultat
Returns:
1 en cas de succes, 0 sinon

void end  ) 
 

Termine la session. Apres cet appel, les fonctions traiteConstante et traiteInstruction auront le meme comportement que lorsqu'on demarre la calculette.

Definition at line 229 of file operations.c.

References free_table(), mem_pret, and t.

Referenced by analyse().

int mod_f const char *  arg,
int *  r
[static]
 

Calcul le reste de la division des deux arguments presents dans la chaine arg. Le resultat est stocke dans *r. En cas d'echec, num_erreur est fixe a E_SYNTAXE, E_INIT ou E_NOT_FOUND

See also:
error_type
Parameters:
arg : la chaine contenant les deux arguments separes par un espace
r : adresse ou stocker le resultat
Returns:
1 en cas de succes, 0 sinon

Referenced by traiteInstruction().

int mult_f const char *  arg,
int *  r
[static]
 

Effectue la multiplication sur les deux arguments presents dans la chaine arg. Le resultat est stocke dans *r. En cas d'echec, num_erreur est fixe a E_SYNTAXE, E_INIT ou E_NOT_FOUND

See also:
error_type
Parameters:
arg : la chaine contenant les deux arguments separes par un espace
r : adresse ou stocker le resultat
Returns:
1 en cas de succes, 0 sinon

int op_f const char *  arg,
int *  r,
int(*)(int, int)  op
[static]
 

Cette fonction effectue l'operation passee en troisieme argument sur les deux arguments presents dans la chaine arg. Le resultat est stocke dans *r. C'est elle qui est appellee par add_f, etc. En cas d'echec, num_erreur est fixe a E_SYNTAXE, E_INIT ou E_NOT_FOUND

See also:
error_type
Parameters:
arg : la chaine contenant les deux arguments separes par un espace
r : adresse ou stocker le resultat
op : adresse de la fonction a appliquer aux arguments
Returns:
1 en cas de succes, 0 sinon

Definition at line 134 of file operations.c.

References mem, mem_pret, recupereArgument(), and split().

int print const char *  arg  )  [static]
 

Cette fonction affiche l'argument qui est analyse par recupereArgument() En cas d'echec, num_erreur est fixe a E_INIT ou E_NOT_FOUND

See also:
error_type
Parameters:
arg : la chaine contenant l'argument
Returns:
1 en cas de succes, 0 sinon

Definition at line 177 of file operations.c.

References recupereArgument().

Referenced by traiteInstruction().

int quo_f const char *  arg,
int *  r
[static]
 

Effectue la division sur les deux arguments presents dans la chaine arg. Le resultat est stocke dans *r. En cas d'echec, num_erreur est fixe a E_SYNTAXE, E_INIT ou E_NOT_FOUND

See also:
error_type
Parameters:
arg : la chaine contenant les deux arguments separes par un espace
r : adresse ou stocker le resultat
Returns:
1 en cas de succes, 0 sinon

int recupereArgument const char *  arg,
int *  r
[static]
 

Analyse la chaine arg, et selon qu'il s'agit d'un variable declaree, d'un nombre ou de $, place la valeur idoine dans *r. En cas d'echec, num_erreur est fixe a E_INIT ou E_NOT_FOUND

See also:
error_type
Parameters:
arg : la chaine a analyser
r : adresse ou stocker le resultat
Returns:
1 en cas de succes, 0 sinon

Definition at line 104 of file operations.c.

References find(), and t.

Referenced by op_f(), print(), and traiteConstante().

char * split char *  s,
char  c
[static]
 

Separe la chaine s en 2 selon le caractere c et retourne un pointeur sur le second morceau, ou NULL si c n'apparait pas dans la chaine

Parameters:
s : chaine a couper en deux
c : caractere indiquant la coupe
Returns:
pointeur sur le debut de la seconde moitie ou NULL en cas d'echec

Definition at line 127 of file operations.c.

Referenced by op_f(), traiteConstante(), and traiteInstruction().

int sub_f const char *  arg,
int *  r
[static]
 

Effectue la soustraction sur les deux arguments presents dans la chaine arg. Le resultat est stocke dans *r. En cas d'echec, num_erreur est fixe a E_SYNTAXE, E_INIT ou E_NOT_FOUND

See also:
error_type
Parameters:
arg : la chaine contenant les deux arguments separes par un espace
r : adresse ou stocker le resultat
Returns:
1 en cas de succes, 0 sinon

int traiteConstante const char *  ligne  ) 
 

Attends une chaine de la forme variable=valeur, ou variable est une chaine quelconque, valeur est soit une constante entiere, soit une variable declaree precedemment, soit $. En cas d'echec, num_erreur est fixe a E_SYNTAXE, E_INIT ou E_NOT_FOUND

See also:
error_type
Parameters:
ligne : la chaine representant l'affectation
Returns:
1 en cas de succes, 0 sinon

Definition at line 184 of file operations.c.

References add_symbole(), init_table(), recupereArgument(), split(), and t.

Referenced by analyse().

int traiteInstruction const char *  ligne  ) 
 

Attends une chaine de la forme "op arg [arg2]", ou op vaut add, div, sub, mult, mod ou print. Calcule l'operation correspondante et stocke le resultat dans $. En cas d'echec, num_erreur est fixe a E_SYNTAXE, E_UNSUP, E_INIT ou E_NOT_FOUND

See also:
error_type
Parameters:
ligne : la chaine representant l'instruction
Returns:
1 en cas de succes, 0 sinon

Definition at line 206 of file operations.c.

References mod_f(), print(), and split().

Referenced by analyse().


Variable Documentation

int mem [static]
 

La valeur de "$"

Definition at line 17 of file operations.c.

Referenced by op_f().

int mem_pret = 0 [static]
 

mem est-il initialise ?

Definition at line 19 of file operations.c.

Referenced by end(), and op_f().

table_t t = NULL [static]
 

La table des symboles

Definition at line 15 of file operations.c.

Referenced by end(), recupereArgument(), and traiteConstante().


Generated on Mon Nov 10 16:02:57 2008 for Calculette by  doxygen 1.3.9.1