From 8504cd4d80de259c69a8be576a8c22cbc7217a40 Mon Sep 17 00:00:00 2001 From: Matthew Butterick Date: Mon, 30 Jan 2017 15:09:58 -0800 Subject: [PATCH] stricter about line breaks, less finicky about blank statements --- beautiful-racket-demo/basic-demo/expander.rkt | 2 +- beautiful-racket-demo/basic-demo/lexer.rkt | 3 ++- beautiful-racket-demo/basic-demo/parser.rkt | 4 ++-- beautiful-racket-demo/basic-demo/sample.rkt | 1 + 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/beautiful-racket-demo/basic-demo/expander.rkt b/beautiful-racket-demo/basic-demo/expander.rkt index 43ffc02..6421d41 100644 --- a/beautiful-racket-demo/basic-demo/expander.rkt +++ b/beautiful-racket-demo/basic-demo/expander.rkt @@ -23,7 +23,7 @@ (define (LINE-NUMBER-ID #:srcloc? [srcloc #f]) (if srcloc (syntax-srcloc #'ORIG-LOC) - (begin STATEMENT ...)))))) + (begin (void) STATEMENT ...)))))) (define b-rem void) (define (b-print [val ""]) (displayln val)) diff --git a/beautiful-racket-demo/basic-demo/lexer.rkt b/beautiful-racket-demo/basic-demo/lexer.rkt index 7a2ed08..ead2034 100644 --- a/beautiful-racket-demo/basic-demo/lexer.rkt +++ b/beautiful-racket-demo/basic-demo/lexer.rkt @@ -6,8 +6,9 @@ (define basic-lexer (lexer-srcloc [(eof) (return-without-srcloc eof)] + [(from/stop-before "rem" "\n") (token 'REM lexeme)] + [(:seq "\n" digits) (token 'LINE-NUMBER (string->number (string-trim lexeme)))] [whitespace (token lexeme #:skip? #t)] - [(from/to "rem" "\n") (token 'REM lexeme)] [(:or "print" "goto" "end" "+" ":") lexeme] [digits (token 'INTEGER (string->number lexeme))] [(:or (:seq (:? digits) "." digits) diff --git a/beautiful-racket-demo/basic-demo/parser.rkt b/beautiful-racket-demo/basic-demo/parser.rkt index a472aaa..778988d 100644 --- a/beautiful-racket-demo/basic-demo/parser.rkt +++ b/beautiful-racket-demo/basic-demo/parser.rkt @@ -1,7 +1,7 @@ #lang brag b-program : b-line* -b-line : @b-line-number b-statement (/":" b-statement)* -b-line-number : INTEGER +b-line : @b-line-number [b-statement] (/":" [b-statement])* +b-line-number : LINE-NUMBER @b-statement : b-rem | b-print | b-goto diff --git a/beautiful-racket-demo/basic-demo/sample.rkt b/beautiful-racket-demo/basic-demo/sample.rkt index e94f036..b6d912f 100644 --- a/beautiful-racket-demo/basic-demo/sample.rkt +++ b/beautiful-racket-demo/basic-demo/sample.rkt @@ -1,5 +1,6 @@ #lang basic-demo 30 rem print "ignored" +35 50 print "never gets here" 40 end 60 print 'three' : print 1.0 + 3