[BACK]Return to smacro.sm1 CVS log [TXT][DIR] Up to [local] / OpenXM / src / kan96xx / Kan

Annotation of OpenXM/src/kan96xx/Kan/smacro.sm1, Revision 1.1

1.1     ! maekawa     1:
        !             2: %%%%%% global control variables
        !             3: %%  /@@@.quiet 0 def  It is defined in scanner().
        !             4: /@@@.Dsymbol (D) def
        !             5: /@@@.diffEsymbol (E) def
        !             6: /@@@.Qsymbol (Q) def
        !             7: /@@@.hsymbol (h) def
        !             8: /@@@.esymbol (e_) def
        !             9: /@@@.Esymbol (E) def
        !            10:
        !            11: %%% pointer to the StandardContext.
        !            12: /StandardContextp [(CurrentContextp)] system_variable def
        !            13: /null 0 (null) data_conversion def
        !            14:
        !            15: %%%%%%%%%%%%%%%%%%%%%%  usages %%%%%%%%%%%%%%%%%%%%
        !            16: /@.usages [[( ) [(gate keeper)]] ] def
        !            17: /putUsages {
        !            18:    /arg1 set
        !            19:    /@.usages @.usages [ arg1 ] join def
        !            20: } def
        !            21:
        !            22: /showKeywords {
        !            23:   @.usages { 0 get } map shell @@@.printSVector
        !            24:   ( ) message
        !            25: } def
        !            26:
        !            27: /usage {
        !            28:   /arg1 set
        !            29:   [/name /flag /n /k /slist /m /i] pushVariables
        !            30:   [
        !            31:     /name arg1 def
        !            32:     /flag true def
        !            33:    @.usages length /n set
        !            34:    0 1 << n 1 sub >>
        !            35:    {
        !            36:       /k set
        !            37:       name << @.usages k get 0 get >> eq
        !            38:       {
        !            39:         /slist @.usages k get 1 get def
        !            40:         /m slist length def
        !            41:         0 1 << m 1 sub >> {
        !            42:           /i set
        !            43:           slist i get message
        !            44:         } for
        !            45:         /flag false def
        !            46:       }
        !            47:       { }
        !            48:       ifelse
        !            49:    } for
        !            50:
        !            51:    flag
        !            52:    {name Usage}
        !            53:    { }
        !            54:    ifelse
        !            55:    ] pop
        !            56:    popVariables
        !            57: } def
        !            58:
        !            59:
        !            60: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
        !            61:
        !            62: /; %%% prompt of the sm1
        !            63: {  [ $PrintDollar$ [$PrintDollar$] system_variable %% save value
        !            64:      [$PrintDollar$ 0] system_variable pop
        !            65:      @@@.quiet 0 eq
        !            66:      {$sm1>$ print} { } ifelse
        !            67:    ] system_variable pop
        !            68: } def
        !            69:
        !            70: /?
        !            71: {
        !            72:    show_systemdictionary
        !            73:    (-- ?? : to see macro dictionary --)
        !            74:    message
        !            75:    $-- (keyWord) usage  to see the usages. Data type of (xxxyyy) is string.--$
        !            76:      message
        !            77:    $Main data types: 1:integer(machine integer), 2:literal, 5:string, 6:array,$
        !            78:      message
        !            79:    $ 7:poly, 13:file, 14:ring, 15:number(bignum,universalNumber), 16:rational, 17:class. $ message
        !            80:
        !            81: } def
        !            82:
        !            83: /??
        !            84: {  (------------ Macros ------------------------------------------------)
        !            85:     message
        !            86:    showKeywords
        !            87:    $------------ Use (keyWord) usage  to see the usages. ---------------$
        !            88:      message
        !            89: } def
        !            90:
        !            91: /::
        !            92: {
        !            93:    print  newline ;
        !            94: } def
        !            95:
        !            96: /. {expand} def
        !            97:
        !            98: /, {   } def
        !            99:
        !           100: /false 0 def
        !           101:
        !           102: %% You cannot use the variable arg1 in expand.
        !           103: /expand {
        !           104:   /@@@expand.arg1 set
        !           105:   [/in-expand /f-expand /f-ans] pushVariables
        !           106:   [
        !           107:     /f-expand @@@expand.arg1 def
        !           108:     f-expand isArray {
        !           109:       f-expand { expand } map /f-ans set
        !           110:     }{
        !           111:       f-expand  $poly$ data_conversion /f-ans set
        !           112:     } ifelse
        !           113:     /@@@expand.arg1 f-ans def
        !           114:   ] pop
        !           115:   popVariables
        !           116:   @@@expand.arg1
        !           117: } def
        !           118:
        !           119: /<< {  } def
        !           120: />> {  } def
        !           121:
        !           122: % v1 v2 join
        !           123: /join {
        !           124:  /arg2 set /arg1 set
        !           125:  [/v1 /v2] pushVariables
        !           126:  /v1 arg1 def /v2 arg2 def
        !           127:  [
        !           128:    [v1 aload pop v2 aload pop] /arg1 set
        !           129:  ] pop
        !           130:  popVariables
        !           131:  arg1
        !           132: } def
        !           133:
        !           134: /n.map 0 def  /i.map 0 def /ar.map 0 def /res.map 0 def  %% declare variables
        !           135: /map.old {  %% recursive
        !           136:  /arg1.map set %%  arg1.map = {   }
        !           137:  /arg2.map set %%  arg2.map = [   ]
        !           138:  %%%debug: /arg1.map load print arg2.map print
        !           139:  [n.map /com.map load i.map ar.map %% local variables.  Don't push com!
        !           140:   %%It's better to use load for all variables.
        !           141:  /com.map /arg1.map load def
        !           142:  /ar.map arg2.map def %% set variables
        !           143:  /n.map ar.map length 1 sub def
        !           144:  [
        !           145:    0 1 n.map {
        !           146:      /i.map set
        !           147:      << ar.map i.map get >> com.map
        !           148:    } for
        !           149:  ] /res.map set
        !           150:  /ar.map set /i.map set /com.map set /n.map set ] pop %% pop local variables
        !           151:  res.map %% push the result
        !           152: } def
        !           153:
        !           154: /message {
        !           155:   [$PrintDollar$ [$PrintDollar$] system_variable
        !           156:    [$PrintDollar$ 0] system_variable pop
        !           157:    4 -1 roll
        !           158:    print newline
        !           159:   ] system_variable pop
        !           160: } def
        !           161:
        !           162: /messagen {
        !           163:   [$PrintDollar$ [$PrintDollar$] system_variable
        !           164:    [$PrintDollar$ 0] system_variable pop
        !           165:    4 -1 roll
        !           166:    print
        !           167:   ] system_variable pop
        !           168: } def
        !           169:
        !           170: /newline {
        !           171:   [$PrintDollar$ [$PrintDollar$] system_variable
        !           172:    [$PrintDollar$ 0] system_variable pop
        !           173:    10 $string$ data_conversion print
        !           174:   ] system_variable pop
        !           175:    %% flush stdout
        !           176:   [(flush)] extension pop
        !           177: } def
        !           178:
        !           179: /pushVariables {
        !           180:   { dup [ 3 1 roll load ] } map
        !           181: } def
        !           182:
        !           183: /popVariables {
        !           184:   % dup print
        !           185:   { aload pop def } map pop
        !           186: } def
        !           187:
        !           188:
        !           189:
        !           190: /timer {
        !           191:   [(TimerOn)] system_variable 1 eq
        !           192:   {  [(TimerOn) 0] system_variable pop set_timer } { } ifelse
        !           193:   set_timer
        !           194:   exec
        !           195:   set_timer
        !           196: } def
        !           197:
        !           198: /true 1 def
        !           199:
        !           200:
        !           201:
        !           202:
        !           203: %%% prompter
        !           204: ;
        !           205:
        !           206:
        !           207:
        !           208:

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>