Quellcode durchsuchen

Implement char?

It's somewhat broken, but it "works" for integers and chars?
Lucas Stadler vor 8 Jahren
Ursprung
Commit
c46a1e45dd
2 geänderte Dateien mit 17 neuen und 0 gelöschten Zeilen
  1. 5 0
      scm/inc/compiler.scm
  2. 12 0
      scm/inc/tests.scm

+ 5 - 0
scm/inc/compiler.scm

@ -67,6 +67,11 @@
67 67
        (emit-expr (primcall-operand1 x))
68 68
        (emit "andl $~a, %eax" #b11)
69 69
        (emit-compare))
70
       ((char?)
71
        (emit-expr (primcall-operand1 x))
72
        (emit "andl $~a, %eax" #b00001111)
73
        (emit "cmpl $~a, %eax" #b00001111)
74
        (emit-compare))
70 75
       ((boolean?)
71 76
        (emit-expr (primcall-operand1 x))
72 77
        (emit "andl $~a, %eax" #b0011111)

+ 12 - 0
scm/inc/tests.scm

@ -87,4 +87,16 @@
87 87
    ["(boolean? 12421)" "#f\n"]
88 88
    ["(boolean? #\\y)" "#f\n"]
89 89
    ["(boolean? ())" "#f\n"]
90
91
    ["(char? #\\y)" "#t\n"]
92
    ["(char? #\\a)" "#t\n"]
93
    ["(char? #\\0)" "#t\n"]
94
    ["(char? #\\z)" "#t\n"]
95
    ["(char? 0)" "#f\n"]
96
    ["(char? 1412)" "#f\n"]
97
    ["(char? 10)" "#f\n"]
98
    ["(char? -1421)" "#f\n"]
99
    ;["(char? #t)" "#f\n"]
100
    ;["(char? #f)" "#f\n"]
101
    ;["(char? ())" "#f\n"]
90 102
    ])