diff options
author | dos-reis <gdr@axiomatics.org> | 2012-01-12 02:11:38 +0000 |
---|---|---|
committer | dos-reis <gdr@axiomatics.org> | 2012-01-12 02:11:38 +0000 |
commit | e9d8606f86600b7d581f93f346981bca1f291dc7 (patch) | |
tree | a8a385a7a005b9b9cf3f8a49eafcb864cabdbb75 | |
parent | acd15b16070d5272387459a4d764577be01d3577 (diff) | |
download | open-axiom-e9d8606f86600b7d581f93f346981bca1f291dc7.tar.gz |
* boot/tokens.boot (keywordId): New.
* boot/parser.boot (bpSexpKey): Use it.
* interp/i-map.boot (mapPredTran): Fix thinko.
-rw-r--r-- | src/ChangeLog | 6 | ||||
-rw-r--r-- | src/boot/parser.boot | 6 | ||||
-rw-r--r-- | src/boot/tokens.boot | 5 | ||||
-rw-r--r-- | src/interp/i-map.boot | 4 |
4 files changed, 16 insertions, 5 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index 02101e4f..21d8c56a 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,9 @@ +2012-01-11 Gabriel Dos Reis <gdr@cs.tamu.edu> + + * boot/tokens.boot (keywordId): New. + * boot/parser.boot (bpSexpKey): Use it. + * interp/i-map.boot (mapPredTran): Fix thinko. + 2012-01-09 Gabriel Dos Reis <gdr@cs.tamu.edu> * boot/parser.boot (bpRequire): New. Use it throughout this module. diff --git a/src/boot/parser.boot b/src/boot/parser.boot index 3aee7371..a7706e9a 100644 --- a/src/boot/parser.boot +++ b/src/boot/parser.boot @@ -549,15 +549,15 @@ bpExceptions()== bpSexpKey()== - $stok is ["KEY",:.] and not bpExceptions()=> + $stok is ["KEY",:.] and not bpExceptions() => a := $ttok has SHOEINF - a = nil => bpPush $ttok and bpNext() + a = nil => bpPush keywordId $ttok and bpNext() bpPush a and bpNext() false bpAnyId()== bpEqKey "MINUS" and ($stok is ["INTEGER",:.] or bpTrap()) and - bpPush MINUS $ttok and bpNext() or + bpPush(-$ttok) and bpNext() or bpSexpKey() or shoeTokType $stok in '(ID INTEGER STRING FLOAT) and bpPush $ttok and bpNext() diff --git a/src/boot/tokens.boot b/src/boot/tokens.boot index e8909318..a008556c 100644 --- a/src/boot/tokens.boot +++ b/src/boot/tokens.boot @@ -132,6 +132,11 @@ shoeKeyTableCons()== shoeKeyTable:=shoeKeyTableCons() +keywordId t == + s := or/[k for [k,:v] in entries shoeKeyTable | symbolEq?(v,t)] => + makeSymbol s + t + shoeInsert(s,d) == l := #s h := codePoint stringChar(s,0) diff --git a/src/interp/i-map.boot b/src/interp/i-map.boot index 2ee7de1c..33d78c0f 100644 --- a/src/interp/i-map.boot +++ b/src/interp/i-map.boot @@ -992,8 +992,8 @@ mkSharpVar i == mapPredTran pred == -- transforms "x in i..j" to "x>=i and x<=j" - pred is ['in,var,['SEGMENT,lb]] => mkLessOrEqual(lb,var) - pred is ['in,var,['SEGMENT,lb,ub]] => + pred is ['IN,var,['SEGMENT,lb]] => mkLessOrEqual(lb,var) + pred is ['IN,var,['SEGMENT,lb,ub]] => null ub => mkLessOrEqual(lb,var) ['and,mkLessOrEqual(lb,var),mkLessOrEqual(var,ub)] pred |