add printf. recognize strings as atoms

This commit is contained in:
Jon Rafkind 2011-07-22 14:40:30 -04:00
parent d4ea3b5d79
commit 23e907aa5c
3 changed files with 12 additions and 7 deletions

View File

@ -6,7 +6,7 @@
(provide #%top
#%datum
print
print printf
(rename-out [#%dynamic-honu-module-begin #%module-begin]
[honu-function function]
[honu-var var]

View File

@ -134,6 +134,11 @@
;; return the parsed stuff and the unparsed stuff
(define (parse input)
(define (do-parse stream precedence left current)
(define-syntax-class atom
[pattern x:identifier]
[pattern x:str]
[pattern x:number])
(debug "parse ~a precedence ~a left ~a current ~a\n" stream precedence left current)
(syntax-parse stream #:literal-sets (cruft)
[() (values (left current) #'())]
@ -171,7 +176,7 @@
(case association
[(left) >]
[(right) >=]))
(printf "new precedence ~a\n" new-precedence)
(debug "new precedence ~a\n" new-precedence)
(if (higher new-precedence precedence)
(do-parse #'(rest ...) new-precedence
(lambda (stuff)
@ -211,8 +216,7 @@
#'rest)]
[else (syntax-parse #'head
#:literal-sets (cruft)
[x:identifier (do-parse #'(rest ...) precedence left #'x)]
[x:number (do-parse #'(rest ...) precedence left #'x)]
[x:atom (do-parse #'(rest ...) precedence left #'x)]
[(#%parens args ...)
(debug "function call ~a\n" left)
(values (left (with-syntax ([current current]

View File

@ -22,8 +22,9 @@ test1(){
test("x = 3", x, 3);
test("y = 2", y, 2);
*/
print(x + 2);
print(x ^ 2)
printf("x is ~a\n", x + 2);
// print(x + 2);
// print(x ^ 2)
}
val test2(val x, val y){
@ -31,7 +32,7 @@ val test2(val x, val y){
print(y)
}
// test1();
test1();
test2(5, 9);
// function(z){ print(z) }(12)