feat: rename IO.write to IO.print and add Unicode escape support in strings

Rename the IO.write method to IO.print, which now prints without a trailing newline, and add a new IO.print method that appends a newline after output. Update all benchmark, example, and test files to use IO.print instead of IO.write. Additionally, implement Unicode escape sequence parsing in the compiler's string tokenizer, supporting \uXXXX and \u{...} syntax with proper UTF-8 encoding for code points up to U+10FFFF.
This commit is contained in:
Bob Nystrom
2014-01-05 20:27:12 +00:00
parent e23e0ce6a3
commit c72db7d594
159 changed files with 1690 additions and 1599 deletions
+24 -24
View File
@@ -1,32 +1,32 @@
IO.write(Num is Class) // expect: true
IO.write(true is Bool) // expect: true
IO.write((fn 1) is Function) // expect: true
IO.write(123 is Num) // expect: true
IO.write(null is Null) // expect: true
IO.write("s" is String) // expect: true
IO.print(Num is Class) // expect: true
IO.print(true is Bool) // expect: true
IO.print((fn 1) is Function) // expect: true
IO.print(123 is Num) // expect: true
IO.print(null is Null) // expect: true
IO.print("s" is String) // expect: true
IO.write(Num is Bool) // expect: false
IO.write(null is Class) // expect: false
IO.write(true is Function) // expect: false
IO.write((fn 1) is Num) // expect: false
IO.write("s" is Null) // expect: false
IO.write(123 is String) // expect: false
IO.print(Num is Bool) // expect: false
IO.print(null is Class) // expect: false
IO.print(true is Function) // expect: false
IO.print((fn 1) is Num) // expect: false
IO.print("s" is Null) // expect: false
IO.print(123 is String) // expect: false
// Everything extends Object.
IO.write(Num is Object) // expect: true
IO.write(null is Object) // expect: true
IO.write(true is Object) // expect: true
IO.write((fn 1) is Object) // expect: true
IO.write("s" is Object) // expect: true
IO.write(123 is Object) // expect: true
IO.print(Num is Object) // expect: true
IO.print(null is Object) // expect: true
IO.print(true is Object) // expect: true
IO.print((fn 1) is Object) // expect: true
IO.print("s" is Object) // expect: true
IO.print(123 is Object) // expect: true
// Classes extend Class.
IO.write(Num is Class) // expect: true
IO.write(null is Class) // expect: false
IO.write(true is Class) // expect: false
IO.write((fn 1) is Class) // expect: false
IO.write("s" is Class) // expect: false
IO.write(123 is Class) // expect: false
IO.print(Num is Class) // expect: true
IO.print(null is Class) // expect: false
IO.print(true is Class) // expect: false
IO.print((fn 1) is Class) // expect: false
IO.print("s" is Class) // expect: false
IO.print(123 is Class) // expect: false
// TODO: Non-class on RHS.
// TODO: Precedence and associativity.