summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main.ml8
-rw-r--r--src/parser.mly11
-rw-r--r--src/pretty_typing.ml60
-rwxr-xr-xsrc/test.sh8
-rw-r--r--src/typing.ml7
-rw-r--r--tests/syntax/good/testfile-for-1.cpp1
-rw-r--r--tests/typing/bad/testfile-arith-3.cpp2
-rw-r--r--tests/typing/bad/testfile-arith-4.cpp2
-rw-r--r--tests/typing/bad/testfile-arith-5.cpp3
-rw-r--r--tests/typing/bad/testfile-redef-6.cpp1
-rw-r--r--tests/typing/good/testfile-subtype-1.cpp1
11 files changed, 21 insertions, 83 deletions
diff --git a/src/main.ml b/src/main.ml
index 9fb4e46..35bd6e0 100644
--- a/src/main.ml
+++ b/src/main.ml
@@ -47,11 +47,13 @@ let () =
try
let p = Parser.prog Lexer.token buf in
- let t = Typing.prog p in
close_in f;
if !dump then Pretty.print_prog p;
- if !dumpt then Pretty_typing.print_prog t;
+ if not !parse_only then begin
+ let t = Typing.prog p in
+ if !dumpt then Pretty_typing.print_prog t;
+ end
with
| Lexer.Lexing_error s ->
localisation (Lexing.lexeme_start_p buf);
@@ -63,7 +65,7 @@ let () =
exit 1
| Typing.Error (loc, msg) ->
localisation2 loc;
- eprintf "%s" msg;
+ eprintf "%s@." msg;
exit 1
| _ ->
diff --git a/src/parser.mly b/src/parser.mly
index 39fdf7d..a079886 100644
--- a/src/parser.mly
+++ b/src/parser.mly
@@ -109,12 +109,13 @@ member:
;
cls_proto:
-| ident = typed_var
+| ident = typed_qvar
LPAREN args = separated_list(COMMA, typed_var) RPAREN
- { {
- p_ret_type = Some(fst ident);
- p_name = snd ident;
- p_class = None;
+ {
+ let (vt, vc, vn) = ident in {
+ p_ret_type = Some(vt);
+ p_name = vn;
+ p_class = vc;
p_args = args;
p_loc = $startpos, $endpos } }
| cls = TIDENT
diff --git a/src/pretty_typing.ml b/src/pretty_typing.ml
index 371b210..709611b 100644
--- a/src/pretty_typing.ml
+++ b/src/pretty_typing.ml
@@ -9,66 +9,6 @@ open Parser
open Typing
open Ast
-let token_str = function
- | CLASS -> "class"
- | ELSE -> "else"
- | FALSE -> "false"
- | FOR -> "for"
- | IF -> "if"
- | INT -> "int"
- | NEW -> "new"
- | NULL -> "NULL"
- | PUBLIC -> "public"
- | RETURN -> "return"
- | THIS -> "this"
- | TRUE -> "true"
- | VIRTUAL -> "virtual"
- | VOID -> "void"
- | WHILE -> "while"
- | IDENT(s) -> "'"^s^"'"
- | TIDENT(s) -> "\""^s^"\""
- | ASSIGN -> "="
- | LOR -> "||"
- | LAND -> "&&"
- | EQ -> "=="
- | NE -> "!="
- | LT -> "<"
- | LE -> "<="
- | GT -> ">"
- | GE -> ">="
- | PLUS -> "+"
- | MINUS -> "-"
- | TIMES -> "*"
- | DIV -> "/"
- | MOD -> "%"
- | NOT -> "!"
- | INCR -> "++"
- | DECR -> "--"
- | REF -> "&"
- (* and also : unary dereference, plus, minus *)
- | LPAREN -> "("
- | RPAREN -> ")"
- | RARROW -> "->"
- | DOT -> "."
- (* OTHER SYMBOLZ *)
- | SEMICOLON -> ";"
- | DOUBLECOLON -> "::"
- | LFLOW -> "<<"
- | LBRACE -> "{"
- | RBRACE -> "}"
- | COMMA -> ","
- | COLON -> ":"
- (* DATAZ *)
- | INTVAL(i) -> "#" ^ (string_of_int i)
- | STRVAL(s) -> "`" ^ s ^ "`"
- (* STUPIDITIEZS *)
- | STD_COUT -> "std::cout"
- | INCLUDE_IOSTREAM -> "#include <iostream>"
- | EOF -> "end."
-
-let print_tok t =
- print_string ((token_str t) ^ "\n")
-
let csl f l =
List.fold_left
(fun x t -> (if x = "" then "" else x ^ ", ") ^ (f t)) "" l
diff --git a/src/test.sh b/src/test.sh
index fc241bf..603b404 100755
--- a/src/test.sh
+++ b/src/test.sh
@@ -4,14 +4,14 @@
echo "Testing SYNTAX/"
for a in ../tests/syntax/good/*.cpp; do
- if ./main.byte -parse-only $a;
+ if ./main.byte --parse-only $a;
then echo "OK $a";
else echo "FAIL $a";
fi;
done;
for a in ../tests/syntax/bad/*.cpp; do
- if ./main.byte -parse-only $a 2> /dev/null;
+ if ./main.byte --parse-only $a 2> /dev/null;
then echo "FAIL $a";
else echo "OK $a";
fi;
@@ -20,7 +20,7 @@ done;
echo "---"
echo "Testing TYPING/ only against parsing"
for a in ../tests/typing/*/*.cpp; do
- if ./main.byte -parse-only $a;
+ if ./main.byte --parse-only $a;
then echo "OK $a";
else echo "FAIL $a";
fi;
@@ -29,7 +29,7 @@ done;
echo "---"
echo "Testing EXEC/ only against parsing"
for a in ../tests/exec/*.cpp; do
- if ./main.byte -parse-only $a;
+ if ./main.byte --parse-only $a;
then echo "OK $a";
else echo "FAIL $a";
fi;
diff --git a/src/typing.ml b/src/typing.ml
index 1a5e566..4d5b0c2 100644
--- a/src/typing.ml
+++ b/src/typing.ml
@@ -29,7 +29,7 @@ and texpr_desc =
| TEIdent of ident
| TEAssign of texpression * texpression
| TECallFun of ident * texpression list (* changé : te -> ident *)
-(* | TECallMeth of texpression * ident * texpression list *) (* changé : te -> ident *)
+(* | TECallMethod of texpression * ident * texpression list *) (* changé : te -> ident *)
| TEUnary of unop * texpression
| TEBinary of texpression * binop * texpression
| TEMember of texpression * ident
@@ -67,11 +67,6 @@ and ts_desc =
| TSWriteCout of tstr_expression list
and tblock = tstatement list
-(*and fun_type = {
- f_args : type_ref list;
- f_block : tblock; }
-peut être effacé *)
-
and tproto = {
tp_loc : loc;
tp_name : ident;
diff --git a/tests/syntax/good/testfile-for-1.cpp b/tests/syntax/good/testfile-for-1.cpp
index 71f985d..170e303 100644
--- a/tests/syntax/good/testfile-for-1.cpp
+++ b/tests/syntax/good/testfile-for-1.cpp
@@ -1,2 +1 @@
int main() { for(;;); }
-
diff --git a/tests/typing/bad/testfile-arith-3.cpp b/tests/typing/bad/testfile-arith-3.cpp
index ec4f877..9418b15 100644
--- a/tests/typing/bad/testfile-arith-3.cpp
+++ b/tests/typing/bad/testfile-arith-3.cpp
@@ -1,2 +1,2 @@
-int main() { char *p; p+p; }
+int main() { int *p; p+p; }
diff --git a/tests/typing/bad/testfile-arith-4.cpp b/tests/typing/bad/testfile-arith-4.cpp
index f9ca567..fbb7e9a 100644
--- a/tests/typing/bad/testfile-arith-4.cpp
+++ b/tests/typing/bad/testfile-arith-4.cpp
@@ -1,3 +1,3 @@
class S { public: int a; };
-int main() { S s; char *p; p+s; }
+int main() { S s; int *p; p+s; }
diff --git a/tests/typing/bad/testfile-arith-5.cpp b/tests/typing/bad/testfile-arith-5.cpp
index 2637ffc..f17d496 100644
--- a/tests/typing/bad/testfile-arith-5.cpp
+++ b/tests/typing/bad/testfile-arith-5.cpp
@@ -1,2 +1,3 @@
-int main() { char *p; 1-p; }
+int main() { int *p; 1-p; }
+
diff --git a/tests/typing/bad/testfile-redef-6.cpp b/tests/typing/bad/testfile-redef-6.cpp
index ae81bdc..32b0dfd 100644
--- a/tests/typing/bad/testfile-redef-6.cpp
+++ b/tests/typing/bad/testfile-redef-6.cpp
@@ -1,3 +1,2 @@
class S { public: int a; int a; };
-int main() {}
diff --git a/tests/typing/good/testfile-subtype-1.cpp b/tests/typing/good/testfile-subtype-1.cpp
index ee18b1e..67647d0 100644
--- a/tests/typing/good/testfile-subtype-1.cpp
+++ b/tests/typing/good/testfile-subtype-1.cpp
@@ -3,3 +3,4 @@ int main() {
int *s;
s = NULL;
}
+