From 6da0c161f99ee105a3bb461625ca2b3be87f7015 Mon Sep 17 00:00:00 2001 From: dos-reis Date: Sun, 10 Jun 2012 05:55:07 +0000 Subject: * interp/newaux.lisp: Move Nud property setting to spad-parser.boot. Import sys-utility. * interp/Makefile.in: Adjust. --- src/ChangeLog | 6 ++++++ src/interp/Makefile.in | 4 ++-- src/interp/newaux.lisp | 40 +--------------------------------------- src/interp/spad-parser.boot | 45 +++++++++++++++++++++++++++++++++++++++++++-- 4 files changed, 52 insertions(+), 43 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index db2f6124..84506065 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,9 @@ +2012-06-10 Gabriel Dos Reis + + * interp/newaux.lisp: Move Nud property setting to spad-parser.boot. + Import sys-utility. + * interp/Makefile.in: Adjust. + 2012-06-09 Gabriel Dos Reis * interp/spad-parser.boot: Fix thinkos from previous commit. diff --git a/src/interp/Makefile.in b/src/interp/Makefile.in index 49513340..db05e53b 100644 --- a/src/interp/Makefile.in +++ b/src/interp/Makefile.in @@ -314,11 +314,11 @@ server.$(FASLEXT): sys-macros.$(FASLEXT) ## The old parser component roughtly is: ## -spad-parser.$(FASLEXT): parse.$(FASLEXT) lexing.$(FASLEXT) +spad-parser.$(FASLEXT): parse.$(FASLEXT) lexing.$(FASLEXT) newaux.$(FASLEXT) parse.$(FASLEXT): postpar.$(FASLEXT) packtran.$(FASLEXT): sys-macros.$(FASLEXT) postpar.$(FASLEXT): sys-macros.$(FASLEXT) -newaux.$(FASLEXT): sys-macros.$(FASLEXT) +newaux.$(FASLEXT): sys-macros.$(FASLEXT) sys-utility.$(FASLEXT) nlib.$(FASLEXT): sys-macros.$(FASLEXT) lexing.$(FASLEXT): sys-utility.$(FASLEXT) sys-macros.$(FASLEXT) \ io.$(FASLEXT) diff --git a/src/interp/newaux.lisp b/src/interp/newaux.lisp index 182ec453..54a3494f 100644 --- a/src/interp/newaux.lisp +++ b/src/interp/newaux.lisp @@ -74,6 +74,7 @@ (IMPORT-MODULE "sys-macros") +(IMPORT-MODULE "sys-utility") (in-package "BOOT") ; ** TABLE CREATION @@ -128,45 +129,6 @@ (==> MDEF 122 121) (\| 108 111) ;was 190 190 (\:- 125 124) (\:= 125 124))) - -(mapcar #'(LAMBDA (J) (MAKENEWOP J `|Nud|)) - '((|for| 130 350 |parseLoop|) - (|while| 130 190 |parseLoop|) - (|until| 130 190 |parseLoop|) - (|repeat| 130 190 |parseLoop|) - (|import| 120 0 |parseImport|) - (|inline| 120 0 |parseInline|) - (|forall| 998 999 |parseScheme|) - (|exist| 998 999 |parseScheme|) - (|unless|) - (|add| 900 120) - (|with| 1000 300 |parseWith|) - (|has| 400 400) - (- 701 700) ; right-prec. wants to be -1 + left-prec -;; (\+ 701 700) - (\# 999 998) - (\! 1002 1001) - (\' 999 999 |parseData|) - (-> 1001 1002) - (\: 194 195) - (|not| 260 259 NIL) - (~ 260 259 nil) - (= 400 700) - (|return| 202 201 |parseReturn|) - (|try| 202 201 |parseTry|) - (|throw| 202 201 |parseThrow|) - (|leave| 202 201 |parseLeave|) - (|exit| 202 201 |parseExit|) - (|break| 202 201 |parseJump|) - (|iterate| 202 201 |parseJump|) - (|from|) - (|yield|) - (|if| 130 0 |parseConditional|) ; was 130 - (|case| 130 190 |parseMatch|) - (\| 0 190) - (|suchthat|) - (|then| 0 114) - (|else| 0 114))) (defun SPECIALCASESYNTAX () (OR (AND (char= TOK '#\#) (DIGITP CHR)))) diff --git a/src/interp/spad-parser.boot b/src/interp/spad-parser.boot index f4f50db6..99071c56 100644 --- a/src/interp/spad-parser.boot +++ b/src/interp/spad-parser.boot @@ -42,6 +42,7 @@ -- -- gdr/2007-11-02 -- +import newaux import lexing import parse namespace BOOT @@ -594,8 +595,8 @@ parseRightBindingPowerOf(x,p) == parseGetSemanticForm(rd,x,p,y) == z := - ident? y => apply(y,rd,nil) - EVAL y -- FIXME get rid of EVAL. + y = nil => nil + apply(y,rd,nil) z ~= nil => z p = "Nud" => parsePrefix rd p = "Led" => parseInfix rd @@ -1128,3 +1129,43 @@ for x in ["-", "=", "*", "rem", "mod", "quo", "div", "/", "^", repeat property(x,'GENERIC) := true +--% + +for j in [ + ["for",130,350,function parseLoop], + ["while",130,190,function parseLoop], + ["until",130,190,function parseLoop], + ["repeat",130,190,function parseLoop], + ["import",120,0,function parseImport], + ["inline",120,0,function parseInline], + ["forall",998,999,function parseScheme], + ["exist",998,999,function parseScheme], + ["unless"], + ["add",900,120], + ["with",1000,300,function parseWith], + ["has",400,400], + ["-",701,700], + ["#",999,998], + ["!",1002,1001], + ["'",999,999,function parseData], + ["->",1001,1002], + [":",194,195], + ["not",260,259], + ["~",260,259], + ["=",400,700], + ["return",202,201,function parseReturn], + ["try",202,201,function parseTry], + ["throw",202,201,function parseThrow], + ["leave",202,201,function parseLeave], + ["exit",202,201,function parseExit], + ["break",202,201,function parseJump], + ["iterate",202,201,function parseJump], + ["from"], + ["yield"], + ["if",130,0,function parseConditional], + ["case",130,190,function parseMatch], + ["|",0,190], + ["suchthat"], + ["then",0,114], + ["else",0,114] + ] repeat MAKENEWOP(j,'Nud) -- cgit v1.2.3