mirror of
https://github.com/ProgramSnail/Lama.git
synced 2025-12-05 22:38:44 +00:00
commit
1d8d7c4203
35 changed files with 85 additions and 97 deletions
|
|
@ -24,7 +24,7 @@ runtime.o: runtime.c runtime.h
|
|||
$(CC) $(PROD_FLAGS) -c runtime.c -o runtime.o
|
||||
|
||||
printf.o: printf.S
|
||||
$(CC) $(PROD_FLAGS) -x assembler-with-cpp -c -g printf.S -o printf.o
|
||||
$(CC) $(PROD_FLAGS) -Wa,--noexecstack -x assembler-with-cpp -c -g printf.S -o printf.o
|
||||
|
||||
clean:
|
||||
$(RM) *.a *.o *~ negative_scenarios/*.err
|
||||
|
|
|
|||
17
src/SM.ml
17
src/SM.ml
|
|
@ -1427,7 +1427,7 @@ let compile cmd ((imports, _), p) =
|
|||
| Expr.Ignore s ->
|
||||
let ls, env = env#get_label in
|
||||
add_code (compile_expr tail ls env s) ls false [ DROP ]
|
||||
| Expr.ElemRef (x, i) -> compile_list tail l env [ x; i ]
|
||||
| Expr.ElemRef _ -> failwith "Should not happen. Indirect assignemts are temporarily prohibited."
|
||||
| Expr.Var x -> (
|
||||
let env, line = env#gen_line x in
|
||||
let env, acc = env#lookup x in
|
||||
|
|
@ -1438,10 +1438,7 @@ let compile cmd ((imports, _), p) =
|
|||
false,
|
||||
line @ [ PROTO (name, env#current_function) ] )
|
||||
| _ -> (env, false, line @ [ LD acc ]))
|
||||
| Expr.Ref x ->
|
||||
let env, line = env#gen_line x in
|
||||
let env, acc = env#lookup x in
|
||||
(env, false, line @ [ LDA acc ])
|
||||
| Expr.Ref _ -> failwith "Should not happen. Indirect assignemts are temporarily prohibited."
|
||||
| Expr.Const n -> (env, false, [ CONST n ])
|
||||
| Expr.String s -> (env, false, [ STRING s ])
|
||||
| Expr.Binop (op, x, y) ->
|
||||
|
|
@ -1496,13 +1493,15 @@ let compile cmd ((imports, _), p) =
|
|||
let env, line = env#gen_line x in
|
||||
let env, acc = env#lookup x in
|
||||
add_code (compile_expr false lassn env e) lassn false (line @ [ ST acc ])
|
||||
| Expr.Assign (x, e) ->
|
||||
| Expr.Assign (Expr.ElemRef (x, i), e) ->
|
||||
let lassn, env = env#get_label in
|
||||
add_code
|
||||
(compile_list false lassn env [ x; e ])
|
||||
(compile_list false lassn env [ x; i; e ])
|
||||
lassn false
|
||||
[ (match x with Expr.Ref _ -> STI | _ -> STA) ]
|
||||
(*Expr.ElemRef _ -> STA | _ -> STI]*)
|
||||
[ STA ]
|
||||
| Expr.Assign (x, _) ->
|
||||
failwith
|
||||
(Printf.sprintf "Indirect assignment is not supported yet: %s" (show Expr.t x))
|
||||
| Expr.Skip -> (env, false, [])
|
||||
| Expr.Seq (s1, s2) -> compile_list tail l env [ s1; s2 ]
|
||||
| Expr.If (c, s1, s2) ->
|
||||
|
|
|
|||
|
|
@ -260,10 +260,10 @@ let show env instr =
|
|||
let in_memory = function M _ | S _ | I _ -> true | C _ | R _ | L _ -> false
|
||||
|
||||
let mov x s =
|
||||
(* Numeric literals with more than 32 bits cannot ne directly moved to memory location *)
|
||||
let big_numeric_literal = function L num -> num > 0xFFFFFFFF | _ -> false in
|
||||
(* Numeric literals with more than 32 bits cannot be directly moved to memory location *)
|
||||
let big_numeric_literal = function L num -> (num > 0xFFFFFFFF || num < -0xFFFFFFFF) | _ -> false in
|
||||
if x = s then []
|
||||
else if (in_memory x && in_memory s) || big_numeric_literal x then
|
||||
else if (in_memory x && in_memory s) || (big_numeric_literal x && (in_memory x || in_memory s)) then
|
||||
[ Mov (x, rax); Mov (rax, s) ]
|
||||
else [ Mov (x, s) ]
|
||||
|
||||
|
|
@ -691,16 +691,27 @@ let compile cmd env imports code =
|
|||
(env, push_closure_code @ mov address l @ call_code)
|
||||
| CONST n ->
|
||||
let s, env' = env#allocate in
|
||||
(env', [ Mov (L (box n), s) ])
|
||||
(env', mov (L (box n)) s)
|
||||
| STRING s ->
|
||||
let addr, env = env#string s in
|
||||
let l, env = env#allocate in
|
||||
let env, call = compile_call env ~fname:".string" 1 false in
|
||||
(env, mov addr l @ call)
|
||||
| LDA x ->
|
||||
| LDA _ -> failwith "Should not happen. Indirect assignemts are temporarily prohibited."
|
||||
(*
|
||||
let s, env' = (env#variable x)#allocate in
|
||||
let s', env'' = env'#allocate in
|
||||
(env'', [ Lea (env'#loc x, rax); Mov (rax, s); Mov (rax, s') ])
|
||||
let loc_x = env'#loc x in
|
||||
match loc_x with
|
||||
| R _ ->
|
||||
failwith
|
||||
"We are not able to take an address of a register. This \
|
||||
is the known limitation of 64-bit compiler. If you \
|
||||
encountered this issue, just do not use indirect \
|
||||
assignment :("
|
||||
| _ ->
|
||||
();
|
||||
(env'', [ Lea (loc_x, rax); Mov (rax, s); Mov (rax, s') ])*)
|
||||
| LD x -> (
|
||||
let s, env' = (env#variable x)#allocate in
|
||||
( env',
|
||||
|
|
@ -715,7 +726,8 @@ let compile cmd env imports code =
|
|||
| S _ | M _ -> [ Mov (s, rax); Mov (rax, env'#loc x) ]
|
||||
| _ -> [ Mov (s, env'#loc x) ] ))
|
||||
| STA -> compile_call env ~fname:".sta" 3 false
|
||||
| STI -> (
|
||||
| STI -> failwith "Should not happen. Indirect assignemts are temporarily prohibited."
|
||||
(*
|
||||
let v, env = env#pop in
|
||||
let x = env#peek in
|
||||
( env,
|
||||
|
|
@ -727,7 +739,7 @@ let compile cmd env imports code =
|
|||
Mov (rdx, I (0, rax));
|
||||
Mov (rdx, x);
|
||||
]
|
||||
| _ -> [ Mov (v, rax); Mov (rax, I (0, x)); Mov (rax, x) ] ))
|
||||
| _ -> [ Mov (v, rax); Mov (rax, I (0, x)); Mov (rax, x) ] )*)
|
||||
| BINOP op -> compile_binop env op
|
||||
| LABEL s | FLABEL s | SLABEL s -> (env, [ Label s ])
|
||||
| JMP l -> ((env#set_stack l)#set_barrier, [ Jmp l ])
|
||||
|
|
@ -972,23 +984,21 @@ let compile cmd env imports code =
|
|||
1 false
|
||||
| LINE line -> env#gen_line line
|
||||
| FAIL ((line, col), value) ->
|
||||
let v, env = if value then (env#peek, env) else env#pop in
|
||||
let value, env = if value then (env#peek, env) else env#pop in
|
||||
let msg_addr, env = env#string cmd#get_infile in
|
||||
let vr, env = env#allocate in
|
||||
let sr, env = env#allocate in
|
||||
let liner, env = env#allocate in
|
||||
let colr, env = env#allocate in
|
||||
let value_arg_addr, env = env#allocate in
|
||||
let msg_arg_addr, env = env#allocate in
|
||||
let line_arg_addr, env = env#allocate in
|
||||
let col_arg_addr, env = env#allocate in
|
||||
let env, code =
|
||||
compile_call env ~fname:".match_failure" 4 false
|
||||
in
|
||||
let _, env = env#pop in
|
||||
( env,
|
||||
[
|
||||
Mov (L col, colr);
|
||||
Mov (L line, liner);
|
||||
Mov (msg_addr, sr);
|
||||
Mov (v, vr);
|
||||
]
|
||||
mov (L col) col_arg_addr
|
||||
@ mov (L line) line_arg_addr
|
||||
@ mov msg_addr msg_arg_addr
|
||||
@ mov value value_arg_addr
|
||||
@ code )
|
||||
| i ->
|
||||
invalid_arg
|
||||
|
|
@ -1304,6 +1314,10 @@ class env prg mode =
|
|||
Buffer.add_char buf '\\';
|
||||
Buffer.add_char buf 't';
|
||||
iterate (i + 2)
|
||||
| 'r' ->
|
||||
Buffer.add_char buf '\\';
|
||||
Buffer.add_char buf 'r';
|
||||
iterate (i + 2)
|
||||
| _ ->
|
||||
Buffer.add_char buf '\\';
|
||||
Buffer.add_char buf '\\';
|
||||
|
|
@ -1474,8 +1488,8 @@ let build cmd prog =
|
|||
in
|
||||
let compiler_flags, linker_flags =
|
||||
match cmd#target_os with
|
||||
| Darwin -> ("-arch x86_64", "-ld_classic")
|
||||
| Linux -> ("", "")
|
||||
| Darwin -> ("-arch x86_64 -Wa,--noexecstack", "-ld_classic")
|
||||
| Linux -> ("-Wa,--noexecstack", "")
|
||||
in
|
||||
let debug_flags = if cmd#is_debug then "-g" else "" in
|
||||
match cmd#get_mode with
|
||||
|
|
@ -1493,11 +1507,17 @@ let build cmd prog =
|
|||
(Buffer.contents buf) cmd#get_runtime_path
|
||||
(match cmd#march with `X86_32 -> "runtime32" | `AMD64 -> "runtime")
|
||||
in
|
||||
Sys.command gcc_cmdline
|
||||
let result = Sys.command gcc_cmdline in
|
||||
if result <> 0 then
|
||||
failwith
|
||||
(Printf.sprintf "Assembly compiler failed with exit code %d" result)
|
||||
| `Compile ->
|
||||
let cmd =
|
||||
Printf.sprintf "%s %s %s -c -g %s.s" compiler compiler_flags debug_flags
|
||||
cmd#basename
|
||||
in
|
||||
Sys.command cmd
|
||||
let result = Sys.command cmd in
|
||||
if result <> 0 then
|
||||
failwith
|
||||
(Printf.sprintf "Assembly compiler failed with exit code %d" result)
|
||||
| _ -> invalid_arg "must not happen"
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ let () =
|
|||
if Sys.file_exists !lama_file && i <> 30 then (
|
||||
(* cram_printfn " $ ls ../x64"; *)
|
||||
cram_printfn
|
||||
" $ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test%02d.lama -o test 2>&1 | grep -v 'missing .note.GNU-stack'" i;
|
||||
" $ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test%02d.lama -o test" i;
|
||||
cram_printfn " $ ./test";
|
||||
true)
|
||||
else false
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
This file was autogenerated.
|
||||
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test01.lama -o test 2>&1 | grep -v 'missing .note.GNU-stack'
|
||||
/usr/bin/ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
|
||||
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test01.lama -o test
|
||||
$ ./test
|
||||
Set internal structure: MNode (63, 1, 0, MNode (31, 1, 0, MNode (15, 1, 0, MNode (7, 1, 0, MNode (3, 1, 0, MNode (1, 1, 0, MNode (0, 1, 0, 0, 0), MNode (2, 1, 0, 0, 0)), MNode (5, 1, 0, MNode (4, 1, 0, 0, 0), MNode (6, 1, 0, 0, 0))), MNode (11, 1, 0, MNode (9, 1, 0, MNode (8, 1, 0, 0, 0), MNode (10, 1, 0, 0, 0)), MNode (13, 1, 0, MNode (12, 1, 0, 0, 0), MNode (14, 1, 0, 0, 0)))), MNode (23, 1, 0, MNode (19, 1, 0, MNode (17, 1, 0, MNode (16, 1, 0, 0, 0), MNode (18, 1, 0, 0, 0)), MNode (21, 1, 0, MNode (20, 1, 0, 0, 0), MNode (22, 1, 0, 0, 0))), MNode (27, 1, 0, MNode (25, 1, 0, MNode (24, 1, 0, 0, 0), MNode (26, 1, 0, 0, 0)), MNode (29, 1, 0, MNode (28, 1, 0, 0, 0), MNode (30, 1, 0, 0, 0))))), MNode (47, 1, 0, MNode (39, 1, 0, MNode (35, 1, 0, MNode (33, 1, 0, MNode (32, 1, 0, 0, 0), MNode (34, 1, 0, 0, 0)), MNode (37, 1, 0, MNode (36, 1, 0, 0, 0), MNode (38, 1, 0, 0, 0))), MNode (43, 1, 0, MNode (41, 1, 0, MNode (40, 1, 0, 0, 0), MNode (42, 1, 0, 0, 0)), MNode (45, 1, 0, MNode (44, 1, 0, 0, 0), MNode (46, 1, 0, 0, 0)))), MNode (55, 1, 0, MNode (51, 1, 0, MNode (49, 1, 0, MNode (48, 1, 0, 0, 0), MNode (50, 1, 0, 0, 0)), MNode (53, 1, 0, MNode (52, 1, 0, 0, 0), MNode (54, 1, 0, 0, 0))), MNode (59, 1, 0, MNode (57, 1, 0, MNode (56, 1, 0, 0, 0), MNode (58, 1, 0, 0, 0)), MNode (61, 1, 0, MNode (60, 1, 0, 0, 0), MNode (62, 1, 0, 0, 0)))))), MNode (79, 1, -1, MNode (71, 1, 0, MNode (67, 1, 0, MNode (65, 1, 0, MNode (64, 1, 0, 0, 0), MNode (66, 1, 0, 0, 0)), MNode (69, 1, 0, MNode (68, 1, 0, 0, 0), MNode (70, 1, 0, 0, 0))), MNode (75, 1, 0, MNode (73, 1, 0, MNode (72, 1, 0, 0, 0), MNode (74, 1, 0, 0, 0)), MNode (77, 1, 0, MNode (76, 1, 0, 0, 0), MNode (78, 1, 0, 0, 0)))), MNode (87, 1, -1, MNode (83, 1, 0, MNode (81, 1, 0, MNode (80, 1, 0, 0, 0), MNode (82, 1, 0, 0, 0)), MNode (85, 1, 0, MNode (84, 1, 0, 0, 0), MNode (86, 1, 0, 0, 0))), MNode (95, 1, 0, MNode (91, 1, 0, MNode (89, 1, 0, MNode (88, 1, 0, 0, 0), MNode (90, 1, 0, 0, 0)), MNode (93, 1, 0, MNode (92, 1, 0, 0, 0), MNode (94, 1, 0, 0, 0))), MNode (97, 1, -1, MNode (96, 1, 0, 0, 0), MNode (98, 1, -1, 0, MNode (99, 1, 0, 0, 0)))))))
|
||||
Set elements: {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
This file was autogenerated.
|
||||
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test02.lama -o test 2>&1 | grep -v 'missing .note.GNU-stack'
|
||||
/usr/bin/ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
|
||||
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test02.lama -o test
|
||||
$ ./test
|
||||
Assn ("x", Dec ("3"))
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
This file was autogenerated.
|
||||
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test03.lama -o test 2>&1 | grep -v 'missing .note.GNU-stack'
|
||||
/usr/bin/ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
|
||||
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test03.lama -o test
|
||||
$ ./test
|
||||
-1
|
||||
1
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
This file was autogenerated.
|
||||
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test04.lama -o test 2>&1 | grep -v 'missing .note.GNU-stack'
|
||||
/usr/bin/ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
|
||||
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test04.lama -o test
|
||||
$ ./test
|
||||
Map internal structure: MNode (63, {630}, 0, MNode (31, {310}, 0, MNode (15, {150}, 0, MNode (7, {70}, 0, MNode (3, {30}, 0, MNode (1, {10}, 0, MNode (0, {0}, 0, 0, 0), MNode (2, {20}, 0, 0, 0)), MNode (5, {50}, 0, MNode (4, {40}, 0, 0, 0), MNode (6, {60}, 0, 0, 0))), MNode (11, {110}, 0, MNode (9, {90}, 0, MNode (8, {80}, 0, 0, 0), MNode (10, {100}, 0, 0, 0)), MNode (13, {130}, 0, MNode (12, {120}, 0, 0, 0), MNode (14, {140}, 0, 0, 0)))), MNode (23, {230}, 0, MNode (19, {190}, 0, MNode (17, {170}, 0, MNode (16, {160}, 0, 0, 0), MNode (18, {180}, 0, 0, 0)), MNode (21, {210}, 0, MNode (20, {200}, 0, 0, 0), MNode (22, {220}, 0, 0, 0))), MNode (27, {270}, 0, MNode (25, {250}, 0, MNode (24, {240}, 0, 0, 0), MNode (26, {260}, 0, 0, 0)), MNode (29, {290}, 0, MNode (28, {280}, 0, 0, 0), MNode (30, {300}, 0, 0, 0))))), MNode (47, {470}, 0, MNode (39, {390}, 0, MNode (35, {350}, 0, MNode (33, {330}, 0, MNode (32, {320}, 0, 0, 0), MNode (34, {340}, 0, 0, 0)), MNode (37, {370}, 0, MNode (36, {360}, 0, 0, 0), MNode (38, {380}, 0, 0, 0))), MNode (43, {430}, 0, MNode (41, {410}, 0, MNode (40, {400}, 0, 0, 0), MNode (42, {420}, 0, 0, 0)), MNode (45, {450}, 0, MNode (44, {440}, 0, 0, 0), MNode (46, {460}, 0, 0, 0)))), MNode (55, {550}, 0, MNode (51, {510}, 0, MNode (49, {490}, 0, MNode (48, {480}, 0, 0, 0), MNode (50, {500}, 0, 0, 0)), MNode (53, {530}, 0, MNode (52, {520}, 0, 0, 0), MNode (54, {540}, 0, 0, 0))), MNode (59, {590}, 0, MNode (57, {570}, 0, MNode (56, {560}, 0, 0, 0), MNode (58, {580}, 0, 0, 0)), MNode (61, {610}, 0, MNode (60, {600}, 0, 0, 0), MNode (62, {620}, 0, 0, 0)))))), MNode (79, {790}, -1, MNode (71, {710}, 0, MNode (67, {670}, 0, MNode (65, {650}, 0, MNode (64, {640}, 0, 0, 0), MNode (66, {660}, 0, 0, 0)), MNode (69, {690}, 0, MNode (68, {680}, 0, 0, 0), MNode (70, {700}, 0, 0, 0))), MNode (75, {750}, 0, MNode (73, {730}, 0, MNode (72, {720}, 0, 0, 0), MNode (74, {740}, 0, 0, 0)), MNode (77, {770}, 0, MNode (76, {760}, 0, 0, 0), MNode (78, {780}, 0, 0, 0)))), MNode (87, {870}, -1, MNode (83, {830}, 0, MNode (81, {810}, 0, MNode (80, {800}, 0, 0, 0), MNode (82, {820}, 0, 0, 0)), MNode (85, {850}, 0, MNode (84, {840}, 0, 0, 0), MNode (86, {860}, 0, 0, 0))), MNode (95, {950}, 0, MNode (91, {910}, 0, MNode (89, {890}, 0, MNode (88, {880}, 0, 0, 0), MNode (90, {900}, 0, 0, 0)), MNode (93, {930}, 0, MNode (92, {920}, 0, 0, 0), MNode (94, {940}, 0, 0, 0))), MNode (97, {970}, -1, MNode (96, {960}, 0, 0, 0), MNode (98, {980}, -1, 0, MNode (99, {990}, 0, 0, 0)))))))
|
||||
Map elements: {[0, 0], [1, 10], [2, 20], [3, 30], [4, 40], [5, 50], [6, 60], [7, 70], [8, 80], [9, 90], [10, 100], [11, 110], [12, 120], [13, 130], [14, 140], [15, 150], [16, 160], [17, 170], [18, 180], [19, 190], [20, 200], [21, 210], [22, 220], [23, 230], [24, 240], [25, 250], [26, 260], [27, 270], [28, 280], [29, 290], [30, 300], [31, 310], [32, 320], [33, 330], [34, 340], [35, 350], [36, 360], [37, 370], [38, 380], [39, 390], [40, 400], [41, 410], [42, 420], [43, 430], [44, 440], [45, 450], [46, 460], [47, 470], [48, 480], [49, 490], [50, 500], [51, 510], [52, 520], [53, 530], [54, 540], [55, 550], [56, 560], [57, 570], [58, 580], [59, 590], [60, 600], [61, 610], [62, 620], [63, 630], [64, 640], [65, 650], [66, 660], [67, 670], [68, 680], [69, 690], [70, 700], [71, 710], [72, 720], [73, 730], [74, 740], [75, 750], [76, 760], [77, 770], [78, 780], [79, 790], [80, 800], [81, 810], [82, 820], [83, 830], [84, 840], [85, 850], [86, 860], [87, 870], [88, 880], [89, 890], [90, 900], [91, 910], [92, 920], [93, 930], [94, 940], [95, 950], [96, 960], [97, 970], [98, 980], [99, 990]}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
This file was autogenerated.
|
||||
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test05.lama -o test 2>&1 | grep -v 'missing .note.GNU-stack'
|
||||
/usr/bin/ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
|
||||
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test05.lama -o test
|
||||
$ ./test
|
||||
Cached: 1
|
||||
Cached: 1
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
This file was autogenerated.
|
||||
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test06.lama -o test 2>&1 | grep -v 'missing .note.GNU-stack'
|
||||
/usr/bin/ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
|
||||
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test06.lama -o test
|
||||
$ ./test
|
||||
Flattening: 0
|
||||
Flattening: {0, 0, 0, 0}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
This file was autogenerated.
|
||||
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test07.lama -o test 2>&1 | grep -v 'missing .note.GNU-stack'
|
||||
/usr/bin/ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
|
||||
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test07.lama -o test
|
||||
$ ./test
|
||||
HashTab internal structure: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {[{1, 2, 3}, 100]}, 0, 0, 0]
|
||||
HashTab internal structure: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {[{1, 2, 3}, 200], [{1, 2, 3}, 100]}, 0, 0, 0]
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
This file was autogenerated.
|
||||
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test08.lama -o test 2>&1 | grep -v 'missing .note.GNU-stack'
|
||||
/usr/bin/ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
|
||||
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test08.lama -o test
|
||||
$ ./test
|
||||
6
|
||||
120
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
This file was autogenerated.
|
||||
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test09.lama -o test 2>&1 | grep -v 'missing .note.GNU-stack'
|
||||
/usr/bin/ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
|
||||
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test09.lama -o test
|
||||
$ ./test
|
||||
Parsing a*| against "aa"... Succ ({"a", "a"})
|
||||
Parsing a+| against "aa"... Succ ({"a", "a"})
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
This file was autogenerated.
|
||||
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test10.lama -o test 2>&1 | grep -v 'missing .note.GNU-stack'
|
||||
/usr/bin/ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
|
||||
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test10.lama -o test
|
||||
$ ./test
|
||||
Parsing "aaa" with many ... Succ ({"a", "a", "a"})
|
||||
Parsing "ab" with bad_alter ... Succ ("ab")
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
This file was autogenerated.
|
||||
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test11.lama -o test 2>&1 | grep -v 'missing .note.GNU-stack'
|
||||
/usr/bin/ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
|
||||
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test11.lama -o test
|
||||
$ ./test
|
||||
Succ ("a")
|
||||
Succ (Add ("a", "a"))
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
This file was autogenerated.
|
||||
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test12.lama -o test 2>&1 | grep -v 'missing .note.GNU-stack'
|
||||
/usr/bin/ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
|
||||
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test12.lama -o test
|
||||
$ ./test
|
||||
Succ (Mul (Mul (Mul (Mul (Mul (Mul (Mul (Mul (Mul (Mul (Mul (Mul (Mul (Mul (Mul (Mul (Mul (Mul (Mul (Mul (Mul (Mul (Mul (Mul (Mul (Mul (Mul (Mul (Mul (Mul (Mul ("a", "a"), "a"), "a"), "a"), "a"), "a"), "a"), "a"), "a"), "a"), "a"), "a"), "a"), "a"), "a"), "a"), "a"), "a"), "a"), "a"), "a"), "a"), "a"), "a"), "a"), "a"), "a"), "a"), "a"), "a"), "a"))
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
This file was autogenerated.
|
||||
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test13.lama -o test 2>&1 | grep -v 'missing .note.GNU-stack'
|
||||
/usr/bin/ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
|
||||
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test13.lama -o test
|
||||
$ ./test
|
||||
Succ (Add ("a", Sub ("a", "a")))
|
||||
Succ (Mul (Div (Mul ("a", "a"), "a"), "a"))
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
This file was autogenerated.
|
||||
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test14.lama -o test 2>&1 | grep -v 'missing .note.GNU-stack'
|
||||
/usr/bin/ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
|
||||
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test14.lama -o test
|
||||
$ ./test
|
||||
Succ (Add ("a", Sub ("a", "a")))
|
||||
Succ (Mul (Div (Mul ("a", "a"), "a"), "a"))
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
This file was autogenerated.
|
||||
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test15.lama -o test 2>&1 | grep -v 'missing .note.GNU-stack'
|
||||
/usr/bin/ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
|
||||
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test15.lama -o test
|
||||
$ ./test
|
||||
Succ (Eq ("a", "a"))
|
||||
Succ (Eq (Mul ("a", "a"), Mul ("a", "a")))
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
This file was autogenerated.
|
||||
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test16.lama -o test 2>&1 | grep -v 'missing .note.GNU-stack'
|
||||
/usr/bin/ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
|
||||
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test16.lama -o test
|
||||
$ ./test
|
||||
Succ (Eq ("a", "a"))
|
||||
Succ (Eq ("b", "b"))
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
This file was autogenerated.
|
||||
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test17.lama -o test 2>&1 | grep -v 'missing .note.GNU-stack'
|
||||
/usr/bin/ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
|
||||
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test17.lama -o test
|
||||
$ ./test
|
||||
Lazy body: 0
|
||||
Lazy body: 1
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
This file was autogenerated.
|
||||
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test18.lama -o test 2>&1 | grep -v 'missing .note.GNU-stack'
|
||||
/usr/bin/ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
|
||||
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test18.lama -o test
|
||||
$ ./test
|
||||
1 =?= 1 = 0
|
||||
symmetricity: ok
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
This file was autogenerated.
|
||||
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test20.lama -o test 2>&1 | grep -v 'missing .note.GNU-stack'
|
||||
/usr/bin/ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
|
||||
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test20.lama -o test
|
||||
$ ./test
|
||||
Empty
|
||||
Node (0, Empty, Empty)
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
This file was autogenerated.
|
||||
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test21.lama -o test 2>&1 | grep -v 'missing .note.GNU-stack'
|
||||
/usr/bin/ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
|
||||
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test21.lama -o test
|
||||
$ ./test
|
||||
1
|
||||
1
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
This file was autogenerated.
|
||||
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test22.lama -o test 2>&1 | grep -v 'missing .note.GNU-stack'
|
||||
/usr/bin/ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
|
||||
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test22.lama -o test
|
||||
$ ./test
|
||||
0
|
||||
{1, 2, 3, 4}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
This file was autogenerated.
|
||||
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test23.lama -o test 2>&1 | grep -v 'missing .note.GNU-stack'
|
||||
/usr/bin/ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
|
||||
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test23.lama -o test
|
||||
$ ./test
|
||||
1
|
||||
{2, 3, 4}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
This file was autogenerated.
|
||||
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test24.lama -o test 2>&1 | grep -v 'missing .note.GNU-stack'
|
||||
/usr/bin/ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
|
||||
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test24.lama -o test
|
||||
$ ./test
|
||||
3
|
||||
{1}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
This file was autogenerated.
|
||||
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test25.lama -o test 2>&1 | grep -v 'missing .note.GNU-stack'
|
||||
/usr/bin/ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
|
||||
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test25.lama -o test
|
||||
$ ./test
|
||||
Cloning int: 5
|
||||
Cloning string: abc
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
This file was autogenerated.
|
||||
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test26.lama -o test 2>&1 | grep -v 'missing .note.GNU-stack'
|
||||
/usr/bin/ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
|
||||
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test26.lama -o test
|
||||
$ ./test
|
||||
Number of commands-line arguments: 1
|
||||
arg [0 ] = "./test"
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
This file was autogenerated.
|
||||
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test27.lama -o test 2>&1 | grep -v 'missing .note.GNU-stack'
|
||||
/usr/bin/ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
|
||||
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test27.lama -o test
|
||||
$ ./test
|
||||
Yes
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
This file was autogenerated.
|
||||
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test28.lama -o test 2>&1 | grep -v 'missing .note.GNU-stack'
|
||||
/usr/bin/ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
|
||||
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test28.lama -o test
|
||||
$ ./test
|
||||
Succ (Seq ("a", "b"))
|
||||
Succ (Alt ("a"))
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
This file was autogenerated.
|
||||
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test29.lama -o test 2>&1 | grep -v 'missing .note.GNU-stack'
|
||||
/usr/bin/ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
|
||||
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test29.lama -o test
|
||||
$ ./test
|
||||
Succ (Seq ("a", "b"))
|
||||
Succ (Alt ("a"))
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
This file was autogenerated.
|
||||
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test32.lama -o test 2>&1 | grep -v 'missing .note.GNU-stack'
|
||||
/usr/bin/ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
|
||||
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test32.lama -o test
|
||||
$ ./test
|
||||
Flattening: 0
|
||||
Flattening: {A, B, C, D}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
This file was autogenerated.
|
||||
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test33.lama -o test 2>&1 | grep -v 'missing .note.GNU-stack'
|
||||
/usr/bin/ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
|
||||
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test33.lama -o test
|
||||
$ ./test
|
||||
{}.string: 0
|
||||
{}.stringcat:
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
This file was autogenerated.
|
||||
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test34.lama -o test 2>&1 | grep -v 'missing .note.GNU-stack'
|
||||
/usr/bin/ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
|
||||
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test34.lama -o test
|
||||
$ ./test
|
||||
' " ` % \ \r
|
||||
' " ` % \
|
||||
\h @ $ # ; [ ]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue