init: sources étu
This commit is contained in:
commit
ef4d72fcbd
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
_build/
|
188
ast.ml
Normal file
188
ast.ml
Normal file
|
@ -0,0 +1,188 @@
|
|||
open Type
|
||||
|
||||
(* Interface des arbres abstraits *)
|
||||
module type Ast =
|
||||
sig
|
||||
type expression
|
||||
type instruction
|
||||
type fonction
|
||||
type programme
|
||||
end
|
||||
|
||||
|
||||
(* *************************************** *)
|
||||
(* AST après la phase d'analyse syntaxique *)
|
||||
(* *************************************** *)
|
||||
module AstSyntax =
|
||||
struct
|
||||
|
||||
(* Opérateurs unaires de Rat *)
|
||||
type unaire = Numerateur | Denominateur
|
||||
|
||||
(* Opérateurs binaires de Rat *)
|
||||
type binaire = Fraction | Plus | Mult | Equ | Inf
|
||||
|
||||
(* Expressions de Rat *)
|
||||
type expression =
|
||||
(* Appel de fonction représenté par le nom de la fonction et la liste des paramètres réels *)
|
||||
| AppelFonction of string * expression list
|
||||
(* Accès à un identifiant représenté par son nom *)
|
||||
| Ident of string
|
||||
(* Booléen *)
|
||||
| Booleen of bool
|
||||
(* Entier *)
|
||||
| Entier of int
|
||||
(* Opération unaire représentée par l'opérateur et l'opérande *)
|
||||
| Unaire of unaire * expression
|
||||
(* Opération binaire représentée par l'opérateur, l'opérande gauche et l'opérande droite *)
|
||||
| Binaire of binaire * expression * expression
|
||||
|
||||
(* Instructions de Rat *)
|
||||
type bloc = instruction list
|
||||
and instruction =
|
||||
(* Déclaration de variable représentée par son type, son nom et l'expression d'initialisation *)
|
||||
| Declaration of typ * string * expression
|
||||
(* Affectation d'une variable représentée par son nom et la nouvelle valeur affectée *)
|
||||
| Affectation of string * expression
|
||||
(* Déclaration d'une constante représentée par son nom et sa valeur (entier) *)
|
||||
| Constante of string * int
|
||||
(* Affichage d'une expression *)
|
||||
| Affichage of expression
|
||||
(* Conditionnelle représentée par la condition, le bloc then et le bloc else *)
|
||||
| Conditionnelle of expression * bloc * bloc
|
||||
(*Boucle TantQue représentée par la conditin d'arrêt de la boucle et le bloc d'instructions *)
|
||||
| TantQue of expression * bloc
|
||||
(* return d'une fonction *)
|
||||
| Retour of expression
|
||||
|
||||
(* Structure des fonctions de Rat *)
|
||||
(* type de retour - nom - liste des paramètres (association type et nom) - corps de la fonction *)
|
||||
type fonction = Fonction of typ * string * (typ * string) list * bloc
|
||||
|
||||
(* Structure d'un programme Rat *)
|
||||
(* liste de fonction - programme principal *)
|
||||
type programme = Programme of fonction list * bloc
|
||||
|
||||
end
|
||||
|
||||
|
||||
(* ********************************************* *)
|
||||
(* AST après la phase d'analyse des identifiants *)
|
||||
(* ********************************************* *)
|
||||
module AstTds =
|
||||
struct
|
||||
|
||||
(* Expressions existantes dans notre langage *)
|
||||
(* ~ expression de l'AST syntaxique où les noms des identifiants ont été
|
||||
remplacés par les informations associées aux identificateurs *)
|
||||
type expression =
|
||||
| AppelFonction of Tds.info_ast * expression list
|
||||
| Ident of Tds.info_ast (* le nom de l'identifiant est remplacé par ses informations *)
|
||||
| Booleen of bool
|
||||
| Entier of int
|
||||
| Unaire of AstSyntax.unaire * expression
|
||||
| Binaire of AstSyntax.binaire * expression * expression
|
||||
|
||||
(* instructions existantes dans notre langage *)
|
||||
(* ~ instruction de l'AST syntaxique où les noms des identifiants ont été
|
||||
remplacés par les informations associées aux identificateurs
|
||||
+ suppression de nœuds (const) *)
|
||||
type bloc = instruction list
|
||||
and instruction =
|
||||
| Declaration of typ * Tds.info_ast * expression (* le nom de l'identifiant est remplacé par ses informations *)
|
||||
| Affectation of Tds.info_ast * expression (* le nom de l'identifiant est remplacé par ses informations *)
|
||||
| Affichage of expression
|
||||
| Conditionnelle of expression * bloc * bloc
|
||||
| TantQue of expression * bloc
|
||||
| Retour of expression
|
||||
| Empty (* les nœuds ayant disparus: Const *)
|
||||
|
||||
|
||||
(* Structure des fonctions dans notre langage *)
|
||||
(* type de retour - informations associées à l'identificateur (dont son nom) - liste des paramètres (association type et information sur les paramètres) - corps de la fonction *)
|
||||
type fonction = Fonction of typ * Tds.info_ast * (typ * Tds.info_ast ) list * bloc
|
||||
|
||||
(* Structure d'un programme dans notre langage *)
|
||||
type programme = Programme of fonction list * bloc
|
||||
|
||||
end
|
||||
|
||||
|
||||
(* ******************************* *)
|
||||
(* AST après la phase de typage *)
|
||||
(* ******************************* *)
|
||||
module AstType =
|
||||
struct
|
||||
|
||||
(* Opérateurs unaires de Rat - résolution de la surcharge *)
|
||||
type unaire = Numerateur | Denominateur
|
||||
|
||||
(* Opérateurs binaires existants dans Rat - résolution de la surcharge *)
|
||||
type binaire = Fraction | PlusInt | PlusRat | MultInt | MultRat | EquInt | EquBool | Inf
|
||||
|
||||
(* Expressions existantes dans Rat *)
|
||||
(* = expression de AstTds *)
|
||||
type expression =
|
||||
| AppelFonction of Tds.info_ast * expression list
|
||||
| Ident of Tds.info_ast
|
||||
| Booleen of bool
|
||||
| Entier of int
|
||||
| Unaire of unaire * expression
|
||||
| Binaire of binaire * expression * expression
|
||||
|
||||
(* instructions existantes Rat *)
|
||||
(* = instruction de AstTds + informations associées aux identificateurs, mises à jour *)
|
||||
(* + résolution de la surcharge de l'affichage *)
|
||||
type bloc = instruction list
|
||||
and instruction =
|
||||
| Declaration of Tds.info_ast * expression
|
||||
| Affectation of Tds.info_ast * expression
|
||||
| AffichageInt of expression
|
||||
| AffichageRat of expression
|
||||
| AffichageBool of expression
|
||||
| Conditionnelle of expression * bloc * bloc
|
||||
| TantQue of expression * bloc
|
||||
| Retour of expression
|
||||
| Empty (* les nœuds ayant disparus: Const *)
|
||||
|
||||
(* informations associées à l'identificateur (dont son nom), liste des paramètres, corps *)
|
||||
type fonction = Fonction of Tds.info_ast * Tds.info_ast list * bloc
|
||||
|
||||
(* Structure d'un programme dans notre langage *)
|
||||
type programme = Programme of fonction list * bloc
|
||||
|
||||
let taille_variables_declarees i =
|
||||
match i with
|
||||
| Declaration (info,_) ->
|
||||
begin
|
||||
match Tds.info_ast_to_info info with
|
||||
| InfoVar (_,t,_,_) -> getTaille t
|
||||
| _ -> failwith "internal error"
|
||||
end
|
||||
| _ -> 0 ;;
|
||||
|
||||
end
|
||||
|
||||
(* ******************************* *)
|
||||
(* AST après la phase de placement *)
|
||||
(* ******************************* *)
|
||||
module AstPlacement =
|
||||
struct
|
||||
|
||||
(* Expressions existantes dans notre langage *)
|
||||
(* = expression de AstType *)
|
||||
type expression = AstType.expression
|
||||
|
||||
(* instructions existantes dans notre langage *)
|
||||
(* = instructions de AstType *)
|
||||
type bloc = instruction list
|
||||
and instruction = AstType.instruction
|
||||
|
||||
(* informations associées à l'identificateur (dont son nom), liste de paramètres, corps, expression de retour *)
|
||||
(* Plus besoin de la liste des paramètres mais on la garde pour les tests du placements mémoire *)
|
||||
type fonction = Fonction of Tds.info_ast * Tds.info_ast list * bloc
|
||||
|
||||
(* Structure d'un programme dans notre langage *)
|
||||
type programme = Programme of fonction list * bloc
|
||||
|
||||
end
|
100
code.ml
Normal file
100
code.ml
Normal file
|
@ -0,0 +1,100 @@
|
|||
(* Génération d'étiquette à l'aide d'un compteur *)
|
||||
let getEtiquette =
|
||||
let num = ref 0 in
|
||||
fun () ->
|
||||
num := (!num)+1 ;
|
||||
"label"^((string_of_int (!num)))
|
||||
|
||||
let pgcd =
|
||||
"pgcd
|
||||
LOADL 0
|
||||
LOAD (1) -2[LB]
|
||||
LOAD (1) -1[LB]
|
||||
boucle
|
||||
LOAD (1) 5[LB]
|
||||
JUMPIF (0) fin
|
||||
LOAD (1) 4[LB]
|
||||
LOAD (1) 5 [LB]
|
||||
SUBR IMod
|
||||
STORE (1) 3[LB]
|
||||
LOAD (1) 5[LB]
|
||||
STORE (1) 4[LB]
|
||||
LOAD (1) 3[LB]
|
||||
STORE(1) 5[LB]
|
||||
JUMP boucle
|
||||
fin
|
||||
LOAD (1) 4[LB]
|
||||
RETURN (1) 2\n\n"
|
||||
|
||||
let norm =
|
||||
"norm
|
||||
LOAD (1) -2[LB]
|
||||
LOAD (1) -1[LB]
|
||||
CALL (LB) pgcd
|
||||
LOAD (1) -2[LB]
|
||||
LOAD (1) 3[LB]
|
||||
SUBR IDiv
|
||||
LOAD (1) -1[LB]
|
||||
LOAD (1) 3[LB]
|
||||
SUBR IDiv
|
||||
RETURN (2) 2\n\n"
|
||||
|
||||
let rout =
|
||||
"ROut
|
||||
LOADL '['
|
||||
SUBR COut
|
||||
LOAD (1) -2[LB]
|
||||
SUBR IOut
|
||||
LOADL '/'
|
||||
SUBR COut
|
||||
LOAD (1) -1[LB]
|
||||
SUBR IOut
|
||||
LOADL ']'
|
||||
SUBR COut
|
||||
RETURN (0) 2\n\n"
|
||||
|
||||
let radd =
|
||||
"RAdd
|
||||
LOAD (1) -4[LB]
|
||||
LOAD (1) -1[LB]
|
||||
SUBR IMul
|
||||
LOAD (1) -2[LB]
|
||||
LOAD (1) -3[LB]
|
||||
SUBR IMul
|
||||
SUBR IAdd
|
||||
LOAD (1) -3[LB]
|
||||
LOAD (1) -1[LB]
|
||||
SUBR IMul
|
||||
CALL (ST) norm
|
||||
RETURN (2) 4\n\n"
|
||||
|
||||
let rmul =
|
||||
"RMul
|
||||
LOAD (1) -4[LB]
|
||||
LOAD (1) -2[LB]
|
||||
SUBR IMul
|
||||
LOAD (1) -3[LB]
|
||||
LOAD (1) -1[LB]
|
||||
SUBR IMul
|
||||
CALL (ST) norm
|
||||
RETURN (2) 4\n\n"
|
||||
|
||||
(* Entête des fichiers Rat contenant :
|
||||
- un saut vers le programme principal
|
||||
- la fonction pgcd nécessaire à la normalisation des rationnels
|
||||
- une fonction de normalisation des rationnels
|
||||
- les fonctions d'affichage (ROut), d'addition (RAdd) et de multiplication (RMult) de rationnel
|
||||
*)
|
||||
let getEntete () =
|
||||
"JUMP main\n\n"
|
||||
^pgcd
|
||||
^norm
|
||||
^rout
|
||||
^radd
|
||||
^rmul
|
||||
|
||||
(*Ecriture dans un fichier *)
|
||||
let ecrireFichier nom texte =
|
||||
let fich = open_out nom in
|
||||
output_string fich texte ;
|
||||
close_out fich
|
15
code.mli
Normal file
15
code.mli
Normal file
|
@ -0,0 +1,15 @@
|
|||
(* getEtiquette : unit -> string *)
|
||||
(* Renvoie une étiquette TAM *)
|
||||
(* Chaque appel donne une étiquette différente *)
|
||||
val getEtiquette : unit -> string ;;
|
||||
|
||||
(* getEntete : unit -> string *)
|
||||
(* Renvoie ce qui doit être mis en entête du fichier TAM *)
|
||||
val getEntete : unit -> string ;;
|
||||
|
||||
(* ecrireFichier : string -> string -> unit *)
|
||||
(* écrit une chaîne de caractère dans un fichier *)
|
||||
(* Premier paramètre : le nom du fichier *)
|
||||
(* Second paramètre : le texte à écrire *)
|
||||
(* Erreur si le fichier ne peut pas être écrit (nom invalide, permissions insuffisantes) *)
|
||||
val ecrireFichier : string -> string -> unit ;;
|
112
compilateur.ml
Normal file
112
compilateur.ml
Normal file
|
@ -0,0 +1,112 @@
|
|||
open Passe
|
||||
|
||||
(* Définition d'un compilateur comme l'enchaînement de
|
||||
quatre passes (gestion des identifiants, typage, placement mémoire
|
||||
génération de code). Chaque passe prend en entrée le type de
|
||||
sortie de la passe précédente.
|
||||
La dernière passe doit renvoyer une chaîne de caractères (le code généré)
|
||||
*)
|
||||
module Compilateur (Ptds:Passe)
|
||||
(Ptype:Passe with type t1 = Ptds.t2)
|
||||
(Pdep:Passe with type t1 = Ptype.t2)
|
||||
(Pcode:Passe with type t1 = Pdep.t2 and type t2 = string) :
|
||||
Passe with type t1 = Ptds.t1 and type t2 = string =
|
||||
struct
|
||||
|
||||
type t1 = Ptds.t1
|
||||
type t2 = string
|
||||
|
||||
(* analyse_semantique : ast -> string *)
|
||||
(* Réalise l'analyse sémantique de l'arbre abstrait *)
|
||||
(* en appliquant les passes les unes après les autres *)
|
||||
(* retourne : le code issu de la dernière passe *)
|
||||
let analyser ast =
|
||||
let tast = Ptds.analyser ast in
|
||||
let tyast = Ptype.analyser tast in
|
||||
let past = Pdep.analyser tyast in
|
||||
let code = Pcode.analyser past in
|
||||
code
|
||||
end
|
||||
|
||||
|
||||
(* Compilateurs intermédiaires *)
|
||||
|
||||
|
||||
(* Compilateur créant l'AST *)
|
||||
(*
|
||||
module CompilateurRat = Compilateur (PasseTdsNop) (PasseNop) (PasseNop) (PasseCodeNopNop)
|
||||
*)
|
||||
|
||||
(* + passe de résolution des identifiants *)
|
||||
open PasseTdsRat
|
||||
module CompilateurRat = Compilateur (PasseTdsRat) (PasseTypeNop) (PasseNop) (PasseCodeNopNop)
|
||||
|
||||
(* + passe de typage *)
|
||||
(*
|
||||
open PasseTdsRat
|
||||
open PasseTypeRat
|
||||
module CompilateurRat = Compilateur (PasseTdsRat) (PasseTypeRat) (PassePlacementNop) (PasseCodeNopNop)
|
||||
*)
|
||||
|
||||
(* + passe de placement mémoire *)
|
||||
(*
|
||||
open PasseTdsRat
|
||||
open PasseTypeRat
|
||||
open PassePlacementRat
|
||||
module CompilateurRat = Compilateur (PasseTdsRat) (PasseTypeRat) (PassePlacementRat) (PasseCodeNop)
|
||||
*)
|
||||
|
||||
(* + passe de génération de code -> compilateur complet *)
|
||||
(*
|
||||
open PasseTdsRat
|
||||
open PasseTypeRat
|
||||
open PassePlacementRat
|
||||
open PasseCodeRatToTam
|
||||
module CompilateurRat = Compilateur (PasseTdsRat) (PasseTypeRat) (PassePlacementRat) (PasseCodeRatToTam)
|
||||
*)
|
||||
|
||||
|
||||
open Lexing
|
||||
|
||||
|
||||
(* report_error : string -> Lexing.lexbuf -> string -> unit *)
|
||||
(* Affiche un message d'erreur lorsque le fichier n'est pas conforme à la grammaire *)
|
||||
(* filename : le nom du fichier non conforme *)
|
||||
(* lexbuf : l'analyser lexical *)
|
||||
(* msg : le message d'erreur à afficher *)
|
||||
let report_error filename lexbuf msg =
|
||||
let (b,e) = (lexeme_start_p lexbuf, lexeme_end_p lexbuf) in
|
||||
let fc = b.pos_cnum - b.pos_bol + 1 in
|
||||
let lc = e.pos_cnum - b.pos_bol + 1 in
|
||||
Printf.eprintf "File \"%s\", line %d, characters %d-%d: %s\n" filename b.pos_lnum fc lc msg
|
||||
|
||||
|
||||
(* compiler : string -> string *)
|
||||
(* Compilter un code rat en un code TAM *)
|
||||
(* Paramètre ratfile : le nom du fichier rat à compiler *)
|
||||
(* Utilise le compilateur "CompilateurRat" pour générer le code associé au fichier rat *)
|
||||
(* Erreur si soucis lors de l'analyse lexicale, l'analyse syntaxique,
|
||||
mauvaise utilisation des identifiants ou soucis de typage *)
|
||||
let compiler ratfile =
|
||||
let input = open_in ratfile in
|
||||
let filebuf = Lexing.from_channel input in
|
||||
try
|
||||
let ast = Parser.main Lexer.token filebuf in
|
||||
"; " ^ ratfile ^ "\n" ^ (CompilateurRat.analyser ast)
|
||||
with
|
||||
| Lexer.Error _ as e ->
|
||||
report_error ratfile filebuf "lexical error (unexpected character).";
|
||||
raise e
|
||||
| Parser.Error as e->
|
||||
report_error ratfile filebuf "syntax error.";
|
||||
raise e
|
||||
|
||||
(* compilerVersFichier : string -> string -> () *)
|
||||
(* Compiler un code rat en un code TAM et le sauve dans un fichier *)
|
||||
(* ratfile : le nom du fichier rat à compiler *)
|
||||
(* tamfile : le nom du fichier rat où sauver le résultat *)
|
||||
let compilerVersFichier ratfile tamfile =
|
||||
let tamcode = compiler ratfile in
|
||||
let chan = open_out tamfile in
|
||||
output_string chan tamcode;
|
||||
close_out chan
|
11
dune
Normal file
11
dune
Normal file
|
@ -0,0 +1,11 @@
|
|||
(ocamllex lexer)
|
||||
|
||||
(menhir
|
||||
(modules parser))
|
||||
|
||||
(library
|
||||
(name rat)
|
||||
(libraries unix)
|
||||
(inline_tests)
|
||||
(preprocess
|
||||
(pps ppx_inline_test ppx_expect)))
|
2
dune-project
Normal file
2
dune-project
Normal file
|
@ -0,0 +1,2 @@
|
|||
(lang dune 2.9)
|
||||
(using menhir 2.1)
|
2
dune-workspace
Normal file
2
dune-workspace
Normal file
|
@ -0,0 +1,2 @@
|
|||
(lang dune 2.9)
|
||||
(env (dev (flags (:standard -warn-error -A))))
|
13
exceptions.ml
Normal file
13
exceptions.ml
Normal file
|
@ -0,0 +1,13 @@
|
|||
open Type
|
||||
open Ast.AstSyntax
|
||||
|
||||
(* Exceptions pour la gestion des identificateurs *)
|
||||
exception DoubleDeclaration of string
|
||||
exception IdentifiantNonDeclare of string
|
||||
exception MauvaiseUtilisationIdentifiant of string
|
||||
|
||||
(* Exceptions pour le typage *)
|
||||
(* Le premier type est le type réel, le second est le type attendu *)
|
||||
exception TypeInattendu of typ * typ
|
||||
exception TypesParametresInattendus of typ list * typ list
|
||||
exception TypeBinaireInattendu of binaire * typ * typ (* les types sont les types réels non compatible avec les signatures connues de l'opérateur *)
|
13
fichiersRat/examen-20-21/ex1.rat
Normal file
13
fichiersRat/examen-20-21/ex1.rat
Normal file
|
@ -0,0 +1,13 @@
|
|||
int f (int a){
|
||||
if (a=3){
|
||||
rat a = [3/2];
|
||||
print a;
|
||||
}else{
|
||||
print a;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
main {
|
||||
print (call f (1));
|
||||
}
|
9
fichiersRat/examen-20-21/ex2.rat
Normal file
9
fichiersRat/examen-20-21/ex2.rat
Normal file
|
@ -0,0 +1,9 @@
|
|||
int f (int a){
|
||||
rat a = [3/2];
|
||||
print a;
|
||||
return 0;
|
||||
}
|
||||
|
||||
main {
|
||||
print (call f (1));
|
||||
}
|
3
fichiersRat/src-rat-placement-test/test1.rat
Normal file
3
fichiersRat/src-rat-placement-test/test1.rat
Normal file
|
@ -0,0 +1,3 @@
|
|||
main {
|
||||
int x = 0;
|
||||
}
|
7
fichiersRat/src-rat-placement-test/test10.rat
Normal file
7
fichiersRat/src-rat-placement-test/test10.rat
Normal file
|
@ -0,0 +1,7 @@
|
|||
rat f (rat a) {
|
||||
return a;
|
||||
}
|
||||
|
||||
|
||||
main {
|
||||
}
|
7
fichiersRat/src-rat-placement-test/test11.rat
Normal file
7
fichiersRat/src-rat-placement-test/test11.rat
Normal file
|
@ -0,0 +1,7 @@
|
|||
bool f (bool a) {
|
||||
return a;
|
||||
}
|
||||
|
||||
|
||||
main {
|
||||
}
|
7
fichiersRat/src-rat-placement-test/test12.rat
Normal file
7
fichiersRat/src-rat-placement-test/test12.rat
Normal file
|
@ -0,0 +1,7 @@
|
|||
bool f (bool b rat r int i) {
|
||||
return b;
|
||||
}
|
||||
|
||||
|
||||
main {
|
||||
}
|
5
fichiersRat/src-rat-placement-test/test2.rat
Normal file
5
fichiersRat/src-rat-placement-test/test2.rat
Normal file
|
@ -0,0 +1,5 @@
|
|||
main {
|
||||
int x = 0;
|
||||
int y = 0;
|
||||
int z = 0;
|
||||
}
|
5
fichiersRat/src-rat-placement-test/test3.rat
Normal file
5
fichiersRat/src-rat-placement-test/test3.rat
Normal file
|
@ -0,0 +1,5 @@
|
|||
main {
|
||||
bool x = true;
|
||||
bool y = true;
|
||||
bool z = true;
|
||||
}
|
5
fichiersRat/src-rat-placement-test/test4.rat
Normal file
5
fichiersRat/src-rat-placement-test/test4.rat
Normal file
|
@ -0,0 +1,5 @@
|
|||
main {
|
||||
rat x = [0/1];
|
||||
rat y = [0/1];
|
||||
rat z = [0/1];
|
||||
}
|
5
fichiersRat/src-rat-placement-test/test5.rat
Normal file
5
fichiersRat/src-rat-placement-test/test5.rat
Normal file
|
@ -0,0 +1,5 @@
|
|||
main {
|
||||
bool x = true;
|
||||
rat y = [0/1];
|
||||
int z = 0;
|
||||
}
|
17
fichiersRat/src-rat-placement-test/test6.rat
Normal file
17
fichiersRat/src-rat-placement-test/test6.rat
Normal file
|
@ -0,0 +1,17 @@
|
|||
main {
|
||||
bool x = true;
|
||||
rat y = [0/1];
|
||||
int z = 0;
|
||||
if x {
|
||||
bool x = true;
|
||||
rat y = [0/1];
|
||||
int z = 0;
|
||||
} else {
|
||||
bool x = true;
|
||||
rat y = [0/1];
|
||||
int z = 0;
|
||||
}
|
||||
bool x1 = true;
|
||||
rat y1 = [0/1];
|
||||
int z1 = 0;
|
||||
}
|
13
fichiersRat/src-rat-placement-test/test7.rat
Normal file
13
fichiersRat/src-rat-placement-test/test7.rat
Normal file
|
@ -0,0 +1,13 @@
|
|||
main {
|
||||
bool x = true;
|
||||
rat y = [0/1];
|
||||
int z = 0;
|
||||
while x {
|
||||
bool x = true;
|
||||
rat y = [0/1];
|
||||
int z = 0;
|
||||
}
|
||||
bool x1 = true;
|
||||
rat y1 = [0/1];
|
||||
int z1 = 0;
|
||||
}
|
29
fichiersRat/src-rat-placement-test/test8.rat
Normal file
29
fichiersRat/src-rat-placement-test/test8.rat
Normal file
|
@ -0,0 +1,29 @@
|
|||
int f (int a) {
|
||||
bool x = true;
|
||||
rat y = [0/1];
|
||||
int z = 0;
|
||||
while x {
|
||||
bool x = true;
|
||||
rat y = [0/1];
|
||||
int z = 0;
|
||||
}
|
||||
bool x1 = true;
|
||||
rat y1 = [0/1];
|
||||
int z1 = 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
main {
|
||||
bool x = true;
|
||||
rat y = [0/1];
|
||||
int z = 0;
|
||||
while x {
|
||||
bool x = true;
|
||||
rat y = [0/1];
|
||||
int z = 0;
|
||||
}
|
||||
bool x1 = true;
|
||||
rat y1 = [0/1];
|
||||
int z1 = 0;
|
||||
}
|
7
fichiersRat/src-rat-placement-test/test9.rat
Normal file
7
fichiersRat/src-rat-placement-test/test9.rat
Normal file
|
@ -0,0 +1,7 @@
|
|||
int f (int a) {
|
||||
return a;
|
||||
}
|
||||
|
||||
|
||||
main {
|
||||
}
|
10
fichiersRat/src-rat-tam-test/complique.rat
Normal file
10
fichiersRat/src-rat-tam-test/complique.rat
Normal file
|
@ -0,0 +1,10 @@
|
|||
prog {
|
||||
const a = 5;
|
||||
rat x = [6/a];
|
||||
int y = (a+1);
|
||||
x = (x + [3/2]);
|
||||
while (y < 10) {
|
||||
print ([a/y] * x);
|
||||
y = (y + 1);
|
||||
}
|
||||
}
|
10
fichiersRat/src-rat-tam-test/factiter.rat
Normal file
10
fichiersRat/src-rat-tam-test/factiter.rat
Normal file
|
@ -0,0 +1,10 @@
|
|||
fact {
|
||||
const n = 5;
|
||||
int fact = 1;
|
||||
int i = 1;
|
||||
while (i < (n+1)) {
|
||||
fact = (fact * i);
|
||||
i = (i + 1);
|
||||
}
|
||||
print fact;
|
||||
}
|
14
fichiersRat/src-rat-tam-test/factrec.rat
Normal file
14
fichiersRat/src-rat-tam-test/factrec.rat
Normal file
|
@ -0,0 +1,14 @@
|
|||
int fact (int i int n){
|
||||
int res = 0;
|
||||
if (i=n){
|
||||
res = i;
|
||||
} else {
|
||||
res = ( i * call fact ((i+1) n));
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
test{
|
||||
int x = call fact (1 5);
|
||||
print x;
|
||||
}
|
3
fichiersRat/src-rat-tam-test/test.rat
Normal file
3
fichiersRat/src-rat-tam-test/test.rat
Normal file
|
@ -0,0 +1,3 @@
|
|||
test{
|
||||
print 1;
|
||||
}
|
3
fichiersRat/src-rat-tam-test/testaddint.rat
Normal file
3
fichiersRat/src-rat-tam-test/testaddint.rat
Normal file
|
@ -0,0 +1,3 @@
|
|||
main {
|
||||
print (20+22);
|
||||
}
|
3
fichiersRat/src-rat-tam-test/testaddrat.rat
Normal file
3
fichiersRat/src-rat-tam-test/testaddrat.rat
Normal file
|
@ -0,0 +1,3 @@
|
|||
main {
|
||||
print ([1/2] + [2/3]);
|
||||
}
|
4
fichiersRat/src-rat-tam-test/testdenom.rat
Normal file
4
fichiersRat/src-rat-tam-test/testdenom.rat
Normal file
|
@ -0,0 +1,4 @@
|
|||
main {
|
||||
rat x = [4/7];
|
||||
print denom x;
|
||||
}
|
7
fichiersRat/src-rat-tam-test/testfun1.rat
Normal file
7
fichiersRat/src-rat-tam-test/testfun1.rat
Normal file
|
@ -0,0 +1,7 @@
|
|||
int f (){
|
||||
return 1;
|
||||
}
|
||||
|
||||
test{
|
||||
print call f ();
|
||||
}
|
7
fichiersRat/src-rat-tam-test/testfun2.rat
Normal file
7
fichiersRat/src-rat-tam-test/testfun2.rat
Normal file
|
@ -0,0 +1,7 @@
|
|||
int f (int a){
|
||||
return a;
|
||||
}
|
||||
|
||||
test{
|
||||
print call f ((3+4));
|
||||
}
|
7
fichiersRat/src-rat-tam-test/testfun3.rat
Normal file
7
fichiersRat/src-rat-tam-test/testfun3.rat
Normal file
|
@ -0,0 +1,7 @@
|
|||
int f (int a int b){
|
||||
return (a+b);
|
||||
}
|
||||
|
||||
test{
|
||||
print call f ((3+4) 3);
|
||||
}
|
9
fichiersRat/src-rat-tam-test/testfun4.rat
Normal file
9
fichiersRat/src-rat-tam-test/testfun4.rat
Normal file
|
@ -0,0 +1,9 @@
|
|||
int f (int a int b){
|
||||
return (a+b);
|
||||
}
|
||||
|
||||
test{
|
||||
int c = (3+4);
|
||||
int d = 3;
|
||||
print call f (c d);
|
||||
}
|
8
fichiersRat/src-rat-tam-test/testfun5.rat
Normal file
8
fichiersRat/src-rat-tam-test/testfun5.rat
Normal file
|
@ -0,0 +1,8 @@
|
|||
int f1 (int i){
|
||||
int x = i;
|
||||
}
|
||||
|
||||
test{
|
||||
int x = call f1 (13);
|
||||
print x;
|
||||
}
|
38
fichiersRat/src-rat-tam-test/testfun6.rat
Normal file
38
fichiersRat/src-rat-tam-test/testfun6.rat
Normal file
|
@ -0,0 +1,38 @@
|
|||
bool and (bool b1 bool b2){
|
||||
if b1 {
|
||||
if b2 { return true; }
|
||||
else { return false; }
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
bool or (bool b1 bool b2){
|
||||
if b1 {
|
||||
return true;
|
||||
} else {
|
||||
if b2 { return true; }
|
||||
else { return false; }
|
||||
}
|
||||
}
|
||||
|
||||
bool not (bool b) {
|
||||
if b { return false; } else { return true; }
|
||||
}
|
||||
|
||||
bool implies (bool p bool q) {
|
||||
return (call or((call not (p)) q));
|
||||
}
|
||||
|
||||
bool veriftranspose(bool a bool b){
|
||||
return ((call implies(a b)) = (call implies((call not(b)) (call not(a)))));
|
||||
}
|
||||
|
||||
test{
|
||||
bool a = true;
|
||||
bool b = true;
|
||||
print (call veriftranspose(a b));
|
||||
a = true;
|
||||
b = false;
|
||||
print (call veriftranspose(a b));
|
||||
}
|
20
fichiersRat/src-rat-tam-test/testfuns.rat
Normal file
20
fichiersRat/src-rat-tam-test/testfuns.rat
Normal file
|
@ -0,0 +1,20 @@
|
|||
rat f3 (int a int b rat r){
|
||||
return [(a + num r) / (b + denom r)];
|
||||
}
|
||||
|
||||
rat f2 (bool b rat x rat y){
|
||||
int x1 = num x;
|
||||
int x2 = denom x;
|
||||
rat res = call f3(x1 x2 y);
|
||||
return res;
|
||||
}
|
||||
|
||||
int f1 (int i rat r int n){
|
||||
rat r2 = call f2(true r [i/n]);
|
||||
return denom r2;
|
||||
}
|
||||
|
||||
test{
|
||||
int x = call f1 (13 [4/11] 17);
|
||||
print x;
|
||||
}
|
9
fichiersRat/src-rat-tam-test/testif1.rat
Normal file
9
fichiersRat/src-rat-tam-test/testif1.rat
Normal file
|
@ -0,0 +1,9 @@
|
|||
prog {
|
||||
int x = 1;
|
||||
int y = 1;
|
||||
if (x = y) {
|
||||
print 18;
|
||||
} else {
|
||||
print 21;
|
||||
}
|
||||
}
|
9
fichiersRat/src-rat-tam-test/testif2.rat
Normal file
9
fichiersRat/src-rat-tam-test/testif2.rat
Normal file
|
@ -0,0 +1,9 @@
|
|||
prog {
|
||||
int x = 1;
|
||||
int y = 2;
|
||||
if (x = y) {
|
||||
print 18;
|
||||
} else {
|
||||
print 21;
|
||||
}
|
||||
}
|
3
fichiersRat/src-rat-tam-test/testmultint.rat
Normal file
3
fichiersRat/src-rat-tam-test/testmultint.rat
Normal file
|
@ -0,0 +1,3 @@
|
|||
main {
|
||||
print (20 * 22);
|
||||
}
|
3
fichiersRat/src-rat-tam-test/testmultrat.rat
Normal file
3
fichiersRat/src-rat-tam-test/testmultrat.rat
Normal file
|
@ -0,0 +1,3 @@
|
|||
main {
|
||||
print ([7/2] * [4/3]);
|
||||
}
|
4
fichiersRat/src-rat-tam-test/testnum.rat
Normal file
4
fichiersRat/src-rat-tam-test/testnum.rat
Normal file
|
@ -0,0 +1,4 @@
|
|||
main {
|
||||
rat x = [4/7];
|
||||
print num x;
|
||||
}
|
3
fichiersRat/src-rat-tam-test/testprintbool.rat
Normal file
3
fichiersRat/src-rat-tam-test/testprintbool.rat
Normal file
|
@ -0,0 +1,3 @@
|
|||
main {
|
||||
print true;
|
||||
}
|
3
fichiersRat/src-rat-tam-test/testprintint.rat
Normal file
3
fichiersRat/src-rat-tam-test/testprintint.rat
Normal file
|
@ -0,0 +1,3 @@
|
|||
main {
|
||||
print 42;
|
||||
}
|
3
fichiersRat/src-rat-tam-test/testprintrat.rat
Normal file
3
fichiersRat/src-rat-tam-test/testprintrat.rat
Normal file
|
@ -0,0 +1,3 @@
|
|||
main {
|
||||
print [4/5];
|
||||
}
|
9
fichiersRat/src-rat-tam-test/testwhile1.rat
Normal file
9
fichiersRat/src-rat-tam-test/testwhile1.rat
Normal file
|
@ -0,0 +1,9 @@
|
|||
prog {
|
||||
int x = 1;
|
||||
int y = 1;
|
||||
while (y < 10) {
|
||||
x = (x + 2);
|
||||
y = (y + 1);
|
||||
}
|
||||
print x;
|
||||
}
|
18
fichiersRat/src-rat-tds-test/test.rat
Normal file
18
fichiersRat/src-rat-tds-test/test.rat
Normal file
|
@ -0,0 +1,18 @@
|
|||
int add (int a int b){
|
||||
int c = 0;
|
||||
c = (0 + a);
|
||||
return (a+(b+c));}
|
||||
|
||||
test{
|
||||
int x = 3;
|
||||
x = 4;
|
||||
const y = 5;
|
||||
int z = (x+y);
|
||||
if(x<0){
|
||||
bool x1 = true;
|
||||
x1 = false;
|
||||
}else{
|
||||
rat x2 = [4/3];
|
||||
int e = call add (num x2 y);
|
||||
}
|
||||
}
|
10
fichiersRat/src-rat-tds-test/test2.rat
Normal file
10
fichiersRat/src-rat-tds-test/test2.rat
Normal file
|
@ -0,0 +1,10 @@
|
|||
int plus1 (int a int b){
|
||||
int c = 1;
|
||||
return (a+(b+c));
|
||||
}
|
||||
|
||||
fonction{
|
||||
int x = 3;
|
||||
int y = 4;
|
||||
print call plus1 (x y);
|
||||
}
|
4
fichiersRat/src-rat-tds-test/testAffectation1.rat
Normal file
4
fichiersRat/src-rat-tds-test/testAffectation1.rat
Normal file
|
@ -0,0 +1,4 @@
|
|||
test{
|
||||
int x = 3;
|
||||
x = 4;
|
||||
}
|
4
fichiersRat/src-rat-tds-test/testAffectation2.rat
Normal file
4
fichiersRat/src-rat-tds-test/testAffectation2.rat
Normal file
|
@ -0,0 +1,4 @@
|
|||
test{
|
||||
int x = 3;
|
||||
y = 4;
|
||||
}
|
8
fichiersRat/src-rat-tds-test/testAffectation3.rat
Normal file
8
fichiersRat/src-rat-tds-test/testAffectation3.rat
Normal file
|
@ -0,0 +1,8 @@
|
|||
test{
|
||||
int x = 3;
|
||||
if (x = 3){
|
||||
x = 4;
|
||||
} else {
|
||||
x = 6;
|
||||
}
|
||||
}
|
8
fichiersRat/src-rat-tds-test/testAffectation4.rat
Normal file
8
fichiersRat/src-rat-tds-test/testAffectation4.rat
Normal file
|
@ -0,0 +1,8 @@
|
|||
test{
|
||||
const x = 3;
|
||||
if (x = 3){
|
||||
x = 4;
|
||||
} else {
|
||||
x = 6;
|
||||
}
|
||||
}
|
11
fichiersRat/src-rat-tds-test/testAffectation5.rat
Normal file
11
fichiersRat/src-rat-tds-test/testAffectation5.rat
Normal file
|
@ -0,0 +1,11 @@
|
|||
int add (int a int b){
|
||||
return (a+b);
|
||||
}
|
||||
|
||||
int add2 (int a int b ){
|
||||
return (a+b);
|
||||
}
|
||||
|
||||
test{
|
||||
add = add2;
|
||||
}
|
11
fichiersRat/src-rat-tds-test/testDeclarationFonction.rat
Normal file
11
fichiersRat/src-rat-tds-test/testDeclarationFonction.rat
Normal file
|
@ -0,0 +1,11 @@
|
|||
int add (int a int b){
|
||||
return (a+b);
|
||||
}
|
||||
|
||||
int add2 (int a int b ){
|
||||
return (a+b);
|
||||
}
|
||||
|
||||
test{
|
||||
int x = 3;
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
int add (int a int b){
|
||||
return (a+b);
|
||||
}
|
||||
|
||||
int add (int a int b ){
|
||||
return (a+b);
|
||||
}
|
||||
|
||||
test{
|
||||
int x = 3;
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
int add (int a int a){
|
||||
return (a+2);
|
||||
}
|
||||
|
||||
int add2 (int a int b ){
|
||||
return (a+b);
|
||||
}
|
||||
|
||||
test{
|
||||
int x = 3;
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
int add (int a int b){
|
||||
return (a+b);
|
||||
}
|
||||
|
||||
int add2 (int a int b int a){
|
||||
return (a+b);
|
||||
}
|
||||
|
||||
test{
|
||||
int x = 3;
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
int add (int a int b){
|
||||
int x = 1;
|
||||
int x = 2;
|
||||
return (a+b);
|
||||
}
|
||||
|
||||
int add2 (int a int b ){
|
||||
return (a+b);
|
||||
}
|
||||
|
||||
test{
|
||||
int x = 3;
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
int add (int a int b){
|
||||
return (a+b);
|
||||
}
|
||||
|
||||
int add2 (int a int b ){
|
||||
return (a+b);
|
||||
}
|
||||
|
||||
test{
|
||||
int x = 3;
|
||||
if (x < 3){
|
||||
rat x = [4/2];
|
||||
}else{
|
||||
rat x = [1/3];
|
||||
}
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
int add (int a int b){
|
||||
return (a+b);
|
||||
}
|
||||
|
||||
int add2 (int a int b ){
|
||||
return (a+b);
|
||||
}
|
||||
|
||||
test{
|
||||
int x = 3;
|
||||
if (x < 3){
|
||||
rat x = [4/2];
|
||||
}else{
|
||||
bool x = false;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
int add (int a int b){
|
||||
return (a+b);
|
||||
}
|
||||
|
||||
int add2 (int a int b ){
|
||||
return (a+b);
|
||||
}
|
||||
|
||||
test{
|
||||
const x = 3;
|
||||
const x = 4;
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
int add (int a int b){
|
||||
return (a+b);
|
||||
}
|
||||
|
||||
int add2 (int a int b ){
|
||||
return (a+b);
|
||||
}
|
||||
|
||||
test{
|
||||
int y = 3;
|
||||
if (y=1){
|
||||
const x = 3;
|
||||
const x = 4;
|
||||
}else{
|
||||
print y;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
int add (int a int b){
|
||||
return (a+b);
|
||||
}
|
||||
|
||||
int add2 (int a int b ){
|
||||
return (a+b);
|
||||
}
|
||||
|
||||
test{
|
||||
int y = 3;
|
||||
while (y=1){
|
||||
const x = 3;
|
||||
int x = 4;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
int add (int a int b){
|
||||
return (a+b);
|
||||
}
|
||||
|
||||
int add2 (int a int b ){
|
||||
return (a+b);
|
||||
}
|
||||
|
||||
test{
|
||||
int y = 3;
|
||||
while (y=1){
|
||||
const x = 3;
|
||||
const x = 4;
|
||||
}
|
||||
}
|
14
fichiersRat/src-rat-tds-test/testRecursiviteFonction.rat
Normal file
14
fichiersRat/src-rat-tds-test/testRecursiviteFonction.rat
Normal file
|
@ -0,0 +1,14 @@
|
|||
int fact (int i int n){
|
||||
int res = 0;
|
||||
if (i=n){
|
||||
res = i;
|
||||
} else {
|
||||
res = ( i * call fact ((i+1) n));
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
test{
|
||||
int x = call fact (1 5);
|
||||
print x;
|
||||
}
|
3
fichiersRat/src-rat-tds-test/testRecursiviteVariable.rat
Normal file
3
fichiersRat/src-rat-tds-test/testRecursiviteVariable.rat
Normal file
|
@ -0,0 +1,3 @@
|
|||
test{
|
||||
int x = (x+1);
|
||||
}
|
4
fichiersRat/src-rat-tds-test/testUtilisation1.rat
Normal file
4
fichiersRat/src-rat-tds-test/testUtilisation1.rat
Normal file
|
@ -0,0 +1,4 @@
|
|||
test{
|
||||
int x = 3;
|
||||
int y = x;
|
||||
}
|
3
fichiersRat/src-rat-tds-test/testUtilisation10.rat
Normal file
3
fichiersRat/src-rat-tds-test/testUtilisation10.rat
Normal file
|
@ -0,0 +1,3 @@
|
|||
test{
|
||||
print x;
|
||||
}
|
3
fichiersRat/src-rat-tds-test/testUtilisation11.rat
Normal file
3
fichiersRat/src-rat-tds-test/testUtilisation11.rat
Normal file
|
@ -0,0 +1,3 @@
|
|||
test{
|
||||
int x = num z;
|
||||
}
|
3
fichiersRat/src-rat-tds-test/testUtilisation12.rat
Normal file
3
fichiersRat/src-rat-tds-test/testUtilisation12.rat
Normal file
|
@ -0,0 +1,3 @@
|
|||
test{
|
||||
int x = denom z;
|
||||
}
|
3
fichiersRat/src-rat-tds-test/testUtilisation13.rat
Normal file
3
fichiersRat/src-rat-tds-test/testUtilisation13.rat
Normal file
|
@ -0,0 +1,3 @@
|
|||
test{
|
||||
int x = denom z;
|
||||
}
|
3
fichiersRat/src-rat-tds-test/testUtilisation14.rat
Normal file
3
fichiersRat/src-rat-tds-test/testUtilisation14.rat
Normal file
|
@ -0,0 +1,3 @@
|
|||
test{
|
||||
int x = [4/z];
|
||||
}
|
3
fichiersRat/src-rat-tds-test/testUtilisation15.rat
Normal file
3
fichiersRat/src-rat-tds-test/testUtilisation15.rat
Normal file
|
@ -0,0 +1,3 @@
|
|||
test{
|
||||
int x = [z/4];
|
||||
}
|
3
fichiersRat/src-rat-tds-test/testUtilisation16.rat
Normal file
3
fichiersRat/src-rat-tds-test/testUtilisation16.rat
Normal file
|
@ -0,0 +1,3 @@
|
|||
test{
|
||||
int x = (1+y);
|
||||
}
|
3
fichiersRat/src-rat-tds-test/testUtilisation17.rat
Normal file
3
fichiersRat/src-rat-tds-test/testUtilisation17.rat
Normal file
|
@ -0,0 +1,3 @@
|
|||
test{
|
||||
int x = (1+(2+y));
|
||||
}
|
3
fichiersRat/src-rat-tds-test/testUtilisation18.rat
Normal file
3
fichiersRat/src-rat-tds-test/testUtilisation18.rat
Normal file
|
@ -0,0 +1,3 @@
|
|||
test{
|
||||
bool x = (y=1);
|
||||
}
|
3
fichiersRat/src-rat-tds-test/testUtilisation19.rat
Normal file
3
fichiersRat/src-rat-tds-test/testUtilisation19.rat
Normal file
|
@ -0,0 +1,3 @@
|
|||
test{
|
||||
int x = (y+1);
|
||||
}
|
8
fichiersRat/src-rat-tds-test/testUtilisation2.rat
Normal file
8
fichiersRat/src-rat-tds-test/testUtilisation2.rat
Normal file
|
@ -0,0 +1,8 @@
|
|||
test{
|
||||
int x = 3;
|
||||
if (x=3){
|
||||
int y = x;
|
||||
}else{
|
||||
int y = (x + 5);
|
||||
}
|
||||
}
|
7
fichiersRat/src-rat-tds-test/testUtilisation20.rat
Normal file
7
fichiersRat/src-rat-tds-test/testUtilisation20.rat
Normal file
|
@ -0,0 +1,7 @@
|
|||
int add (int x int y){
|
||||
return (x+y);
|
||||
}
|
||||
|
||||
test{
|
||||
int x = call add (1 y);
|
||||
}
|
7
fichiersRat/src-rat-tds-test/testUtilisation21.rat
Normal file
7
fichiersRat/src-rat-tds-test/testUtilisation21.rat
Normal file
|
@ -0,0 +1,7 @@
|
|||
int add (int x int y){
|
||||
return (x+y);
|
||||
}
|
||||
|
||||
test{
|
||||
int x = call add (1 call add (1 y));
|
||||
}
|
7
fichiersRat/src-rat-tds-test/testUtilisation22.rat
Normal file
7
fichiersRat/src-rat-tds-test/testUtilisation22.rat
Normal file
|
@ -0,0 +1,7 @@
|
|||
int add (int x int y){
|
||||
return (x+y);
|
||||
}
|
||||
|
||||
test{
|
||||
int x = call add ((y+1) 2);
|
||||
}
|
11
fichiersRat/src-rat-tds-test/testUtilisation23.rat
Normal file
11
fichiersRat/src-rat-tds-test/testUtilisation23.rat
Normal file
|
@ -0,0 +1,11 @@
|
|||
int add (int x int y){
|
||||
return (x+y);
|
||||
}
|
||||
|
||||
test{
|
||||
if x {
|
||||
int y = 4;
|
||||
} else {
|
||||
int y = 5;
|
||||
}
|
||||
}
|
9
fichiersRat/src-rat-tds-test/testUtilisation24.rat
Normal file
9
fichiersRat/src-rat-tds-test/testUtilisation24.rat
Normal file
|
@ -0,0 +1,9 @@
|
|||
int add (int x int y){
|
||||
return (x+y);
|
||||
}
|
||||
|
||||
test{
|
||||
while x {
|
||||
int y = 4;
|
||||
}
|
||||
}
|
7
fichiersRat/src-rat-tds-test/testUtilisation25.rat
Normal file
7
fichiersRat/src-rat-tds-test/testUtilisation25.rat
Normal file
|
@ -0,0 +1,7 @@
|
|||
int add (int x int y){
|
||||
return a;
|
||||
}
|
||||
|
||||
test{
|
||||
int x = 1;
|
||||
}
|
8
fichiersRat/src-rat-tds-test/testUtilisation26.rat
Normal file
8
fichiersRat/src-rat-tds-test/testUtilisation26.rat
Normal file
|
@ -0,0 +1,8 @@
|
|||
int add (int x int y){
|
||||
int z = a;
|
||||
return (x+z);
|
||||
}
|
||||
|
||||
test{
|
||||
int x = 1;
|
||||
}
|
9
fichiersRat/src-rat-tds-test/testUtilisation27.rat
Normal file
9
fichiersRat/src-rat-tds-test/testUtilisation27.rat
Normal file
|
@ -0,0 +1,9 @@
|
|||
int add (int x int y){
|
||||
int z = y;
|
||||
return (x+z);
|
||||
}
|
||||
|
||||
test{
|
||||
int x = 1;
|
||||
print call add (x x);
|
||||
}
|
4
fichiersRat/src-rat-tds-test/testUtilisation3.rat
Normal file
4
fichiersRat/src-rat-tds-test/testUtilisation3.rat
Normal file
|
@ -0,0 +1,4 @@
|
|||
test{
|
||||
int x = 3;
|
||||
int z = y;
|
||||
}
|
8
fichiersRat/src-rat-tds-test/testUtilisation4.rat
Normal file
8
fichiersRat/src-rat-tds-test/testUtilisation4.rat
Normal file
|
@ -0,0 +1,8 @@
|
|||
int add (int a int b){
|
||||
return (a+b);
|
||||
}
|
||||
|
||||
test{
|
||||
int x = 3;
|
||||
int z = add;
|
||||
}
|
8
fichiersRat/src-rat-tds-test/testUtilisation5.rat
Normal file
8
fichiersRat/src-rat-tds-test/testUtilisation5.rat
Normal file
|
@ -0,0 +1,8 @@
|
|||
int add (int a int b){
|
||||
return (a+b);
|
||||
}
|
||||
|
||||
test{
|
||||
int x = 3;
|
||||
int z = (add+1);
|
||||
}
|
8
fichiersRat/src-rat-tds-test/testUtilisation6.rat
Normal file
8
fichiersRat/src-rat-tds-test/testUtilisation6.rat
Normal file
|
@ -0,0 +1,8 @@
|
|||
int add (int a int b){
|
||||
return (a+b);
|
||||
}
|
||||
|
||||
test{
|
||||
const x = 3;
|
||||
int z = (x+1);
|
||||
}
|
9
fichiersRat/src-rat-tds-test/testUtilisation7.rat
Normal file
9
fichiersRat/src-rat-tds-test/testUtilisation7.rat
Normal file
|
@ -0,0 +1,9 @@
|
|||
int add (int a int b){
|
||||
return (a+b);
|
||||
}
|
||||
|
||||
test{
|
||||
const x = 3;
|
||||
rat z = [4/2];
|
||||
int r = call add ((x+1) num z);
|
||||
}
|
9
fichiersRat/src-rat-tds-test/testUtilisation8.rat
Normal file
9
fichiersRat/src-rat-tds-test/testUtilisation8.rat
Normal file
|
@ -0,0 +1,9 @@
|
|||
int add (int a int b){
|
||||
return (a+b);
|
||||
}
|
||||
|
||||
test{
|
||||
const x = 3;
|
||||
rat z = [4/2];
|
||||
int r = call x ((x+1) num z);
|
||||
}
|
9
fichiersRat/src-rat-tds-test/testUtilisation9.rat
Normal file
9
fichiersRat/src-rat-tds-test/testUtilisation9.rat
Normal file
|
@ -0,0 +1,9 @@
|
|||
int add (int a int b){
|
||||
return (a+b);
|
||||
}
|
||||
|
||||
test{
|
||||
const x = 3;
|
||||
rat z = [4/2];
|
||||
int r = call z ((x+1) num z);
|
||||
}
|
18
fichiersRat/src-rat-type-test/test.rat
Normal file
18
fichiersRat/src-rat-type-test/test.rat
Normal file
|
@ -0,0 +1,18 @@
|
|||
int add (int a int b){
|
||||
int c = 0;
|
||||
c = (0 + a);
|
||||
return (a+(b+c));}
|
||||
|
||||
test{
|
||||
int x = 3;
|
||||
x = 4;
|
||||
const y = 5;
|
||||
int z = (x+y);
|
||||
if(x<0){
|
||||
bool x = true;
|
||||
x = false;
|
||||
}else{
|
||||
rat x = [4/3];
|
||||
int e = call add (num x y);
|
||||
}
|
||||
}
|
10
fichiersRat/src-rat-type-test/test2.rat
Normal file
10
fichiersRat/src-rat-type-test/test2.rat
Normal file
|
@ -0,0 +1,10 @@
|
|||
int plus1 (int a int b){
|
||||
int c = 1;
|
||||
return (a+(b+c));
|
||||
}
|
||||
|
||||
fonction{
|
||||
int x = 3;
|
||||
int y = 4;
|
||||
print call plus1 (x y);
|
||||
}
|
4
fichiersRat/src-rat-type-test/testAffectation1.rat
Normal file
4
fichiersRat/src-rat-type-test/testAffectation1.rat
Normal file
|
@ -0,0 +1,4 @@
|
|||
test{
|
||||
int x = 3;
|
||||
x = 4;
|
||||
}
|
4
fichiersRat/src-rat-type-test/testAffectation2.rat
Normal file
4
fichiersRat/src-rat-type-test/testAffectation2.rat
Normal file
|
@ -0,0 +1,4 @@
|
|||
test{
|
||||
bool x = true;
|
||||
x = false;
|
||||
}
|
4
fichiersRat/src-rat-type-test/testAffectation3.rat
Normal file
4
fichiersRat/src-rat-type-test/testAffectation3.rat
Normal file
|
@ -0,0 +1,4 @@
|
|||
test{
|
||||
rat x = [3/4];
|
||||
x = [4/5];
|
||||
}
|
4
fichiersRat/src-rat-type-test/testAffectation4.rat
Normal file
4
fichiersRat/src-rat-type-test/testAffectation4.rat
Normal file
|
@ -0,0 +1,4 @@
|
|||
test{
|
||||
rat x = [3/4];
|
||||
x = 4;
|
||||
}
|
4
fichiersRat/src-rat-type-test/testAffectation5.rat
Normal file
4
fichiersRat/src-rat-type-test/testAffectation5.rat
Normal file
|
@ -0,0 +1,4 @@
|
|||
test{
|
||||
int x = 4;
|
||||
x = true;
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue