Annotation of researchv10no/cmd/sml/lib/mlyacc/ml.grm, revision 1.1.1.1

1.1       root        1: type Lineno = int
                      2: val lineno = ref 0
                      3: val error = fn x => fn (lineno : int) =>
                      4:  (output std_out (makestring lineno ^ ": " ^ x ^ "\n"))
                      5: %%
                      6: %term     EOF | ID | DOT | TYVAR | INT | REAL | STRING |
                      7:          ABSTRACTION  | ABSTYPE | AND | ARROW | AS | BAR | BARBAR |
                      8:          CASE | 
                      9:          DATATYPE  |
                     10:          DOTDOTDOT | ELSE | END | EQUAL | EQTYPE | EXCEPTION |
                     11:          EXCEPTIONX |
                     12:          DO  | DARROW | FN | FUN | FUNCTOR | HANDLE | HANDLEX | HASH |
                     13:          IF  | IN  | INCLUDE | INFIX | INFIXR | LET |
                     14:          LOCAL | NONFIX | OF | OP | OPEN | OVERLOAD |
                     15:           QUERY | RAISE |  RAISEX | REC |
                     16:          SHARING | SIG | SIGNATURE | STRUCT | STRUCTURE |
                     17:          THEN | TYPE | VAL | WHILE | WILD  | WITH | WITHTYPE |
                     18:          ASTERISK | COLON | COMMA  | LBRACE |  LBRACKET | LPAREN |
                     19:          RBRACE | RBRACKET | RPAREN | SEMICOLON |
                     20:          ORELSE | ANDALSO
                     21: 
                     22: %nonterm iddot | ident | nonfix_ident | opid | qid | selector | elabel |
                     23:         elabels | plabel | plabels | tlabel | tabels0 |  ty0 | ty0_pc |
                     24:         ty2 | ty | withclause | match | rule | handlerx | hrulex | exp_ps |
                     25:         exp | exp1 | exp2 | constraint | exp3 | exp4 | aexp | bexp |
                     26:         exp_2c | pat | pat1 | pat2 | pat3 | apat | apat1 | pat_2c | pat_ps |
                     27:         vb | rvb | fg | apat_p | clause | tb | tyvars | tyvar_pc | db | 
                     28:         constr | eb | ebx | qid_p | fixity | ldec  | exp_pa | ldecs |
                     29:         ops | spec_s | spec | strspec | tyspec | valspec | exnspecx |
                     30:         exnspec | fb | tlabels | tlabels0 |
                     31:         sharespec | patheqn | sign | sigconstraint_op | sigb |
                     32:         str | sdecs | sdec | strb | fparam | fctb | tdec | top |
                     33:         interdec
                     34: 
                     35: %verbose
                     36: 
                     37: %start tdec
                     38: %eof EOF
                     39: 
                     40: %nonassoc WITHTYPE
                     41: %right AND
                     42: %right BAR
                     43: %right ARROW
                     44: %right DO
                     45: %right HANDLE HANDLEX
                     46: %right RAISE
                     47: %left ORELSE
                     48: %left ANDALSO
                     49: 
                     50: %%
                     51: 
                     52: iddot  : ID DOT
                     53:           ()
                     54: ident  : ID                                                            ()
                     55:        | ASTERISK                                                      ()
                     56:        | EQUAL                                                         ()
                     57: 
                     58: nonfix_ident   : ident                                                 ()
                     59: 
                     60: opid   : nonfix_ident                                                  ()
                     61:        | OP ident                                                      ()
                     62: 
                     63: qid    : iddot qid                                                     ()
                     64:        | ident                                                 ()
                     65: 
                     66: selector: ID                                                   ()
                     67:        | INT                                                   ()
                     68: 
                     69: elabel : selector EQUAL exp                                            ()
                     70: 
                     71: elabels: elabel COMMA elabels                                          ()
                     72:        | elabel                                                        ()
                     73: 
                     74: plabel : selector EQUAL pat                                            ()
                     75:        | ID                                                    ()
                     76:        | ID AS pat                                                     ()
                     77:        | ID COLON ty AS pat                                            ()
                     78: 
                     79: plabels : plabel COMMA plabels                                         ()
                     80:        | plabel                                                        ()
                     81:        | DOTDOTDOT                                                     ()
                     82: 
                     83: tlabel : selector COLON ty0                                            ()
                     84: 
                     85: tlabels0: tlabel COMMA tlabels0                                                ()
                     86:        | tlabel                                                        ()
                     87: 
                     88: tlabels : tlabels0                                                     ()
                     89:        |                                                       ()
                     90: 
                     91: ty0    : ty0 ARROW ty0                                                 ()
                     92:        | ty2 ASTERISK ty2                                              ()
                     93:        | ty2                                                   ()
                     94: 
                     95: ty0_pc : ty0                                                   ()
                     96:        | ty0 COMMA ty0_pc                                              ()
                     97: 
                     98: ty2    : LPAREN ty0_pc RPAREN qid                                      ()
                     99:        | qid                                                   ()
                    100:        | LBRACE tlabels RBRACE                                         ()
                    101: 
                    102: ty     : ty0                                                   ()
                    103: 
                    104: withclause: WITH exp                                                   ()
                    105:        |                                                       ()
                    106: 
                    107: match  : rule                                                  ()
                    108:        | match BAR match                                               ()
                    109: 
                    110: rule   : pat DARROW exp                                                ()
                    111: 
                    112: handlerx: handlerx BARBAR handlerx                                     ()
                    113:        | hrulex                                                        ()
                    114: 
                    115: hrulex : qid WITH match                                                ()
                    116:        | qid DARROW exp                                                ()
                    117:        | QUERY DARROW exp                                              ()
                    118: 
                    119: exp_ps : exp                                                   ()
                    120:        | exp SEMICOLON exp_ps                                          ()
                    121:        
                    122: exp    : exp1 %prec BAR                                                ()
                    123: 
                    124: exp1   : exp1 HANDLEX handlerx                                         ()
                    125:        | exp1 HANDLE match                                             ()
                    126:        | exp2 %prec HANDLE                                             ()
                    127: 
                    128: exp2   : exp3 constraint                                               ()
                    129:        | exp3 bexp                                                     ()
                    130:        | bexp                                                          ()
                    131:        | exp2 ORELSE exp2                                              ()
                    132:        | exp2 ANDALSO exp2                                             ()
                    133: 
                    134: constraint:                                                            ()
                    135:        | COLON ty                                                      ()
                    136: 
                    137: exp3   : exp4                                                  ()
                    138:        | exp3 exp4                                                     ()
                    139: 
                    140: exp4   : ID                                                    ()
                    141:        | aexp                                                  ()
                    142: 
                    143: aexp   : OP ID                                                 ()
                    144:        | iddot qid                                                     ()
                    145:        | INT                                                   ()
                    146:        | REAL                                                  ()
                    147:        | STRING                                                        ()
                    148:        | HASH selector                                                 ()
                    149:        | LBRACE elabels RBRACE                                         ()
                    150:        | LBRACE RBRACE                                                 ()
                    151:        | LPAREN RPAREN                                                 ()
                    152:        | LPAREN exp RPAREN                                             ()
                    153:        | LPAREN exp_2c RPAREN                                          ()
                    154:        | LBRACKET exp_ps RBRACKET                                      ()
                    155:        | LBRACKET RBRACKET                                             ()
                    156:        | LET ldecs IN exp_ps END                                       ()
                    157: 
                    158: bexp   : FN match                                                      ()
                    159:        | CASE exp OF match                                             ()
                    160:        | WHILE exp DO exp                                              ()
                    161:        | IF exp THEN exp ELSE exp                                      ()
                    162:        | RAISEX qid withclause                                         ()
                    163:        | RAISE exp2                                                    ()
                    164: 
                    165: 
                    166: exp_2c : exp COMMA exp_2c                                              ()
                    167:        | exp COMMA exp                                                 ()
                    168: 
                    169: pat    : pat1                                                  ()
                    170:        | pat1 AS pat1                                                  ()
                    171: 
                    172: pat1   : pat2                                                  ()
                    173:        | pat2 COLON ty                                                 ()
                    174: 
                    175: pat2   : pat3                                                  ()
                    176:        | pat2 pat3                                                     ()
                    177: 
                    178: pat3   : ID                                                    ()
                    179:        | apat1                                                 ()
                    180: 
                    181: apat   : ID                                                    ()
                    182:        | apat1                                                 ()
                    183: 
                    184: apat1  : OP ident                                                      ()
                    185:        | iddot qid                                                     ()
                    186:        | INT                                                   ()
                    187:        | REAL                                                  ()
                    188:        | STRING                                                        ()
                    189:        | WILD                                                  ()
                    190:        | LPAREN RPAREN                                                 ()
                    191:        | LPAREN pat RPAREN                                             ()
                    192:        | LPAREN pat_2c RPAREN                                          ()
                    193:        | LBRACKET RBRACKET                                             ()
                    194:        | LBRACKET pat_ps RBRACKET                                      ()
                    195:        | LBRACE RBRACE                                                 ()
                    196:        | LBRACE plabels RBRACE                                         ()
                    197: 
                    198: pat_2c : pat COMMA pat_2c                                              ()
                    199:        | pat COMMA pat                                                 ()
                    200: 
                    201: pat_ps : pat                                                   ()
                    202:        | pat SEMICOLON pat_ps                                          ()
                    203: 
                    204: vb     : vb AND vb                                                     ()
                    205:        | pat EQUAL exp                                                 ()
                    206: 
                    207: rvb    : opid constraint EQUAL exp                                     ()
                    208:        | rvb AND rvb                                                   ()
                    209: 
                    210: fb     : clause                                                        ()
                    211:        | clause BAR fb                                                 ()
                    212:        | fb AND fb                                                     ()
                    213: 
                    214: apat_p : apat                                                  ()
                    215:        | apat_p apat                                                   ()
                    216: 
                    217: clause : apat_p constraint EQUAL exp                                   ()
                    218: 
                    219: tb     : tyvars ident EQUAL ty                                         ()
                    220:        | tb AND tb                                                     ()
                    221: 
                    222: tyvars : TYVAR                                                 ()
                    223:        | LPAREN tyvar_pc RPAREN                                        ()
                    224:        |                                                       ()
                    225: 
                    226: tyvar_pc: TYVAR                                                        ()
                    227:        | TYVAR COMMA tyvar_pc                                          ()
                    228: 
                    229: db     : db AND db                                                     ()
                    230:        | db WITHTYPE tb                                                ()
                    231:        | tyvars ident constr                                           ()
                    232:        | db BAR constr                                                 ()
                    233: 
                    234: constr : opid                                                  ()
                    235:        | opid OF ty                                                    ()
                    236: 
                    237: eb     : ident                                                 ()
                    238:        | ident OF ty                                                   ()
                    239:        | ident EQUAL qid                                               ()
                    240:        | eb AND eb                                                     ()
                    241: 
                    242: ebx    : ident constraint                                              ()
                    243:        | ident EQUAL qid                                               ()
                    244:        | ebx AND ebx                                                   ()
                    245: 
                    246: qid_p  : qid                                                   ()
                    247:        | qid qid_p                                                     ()
                    248: 
                    249: 
                    250: fixity : INFIX                                                 ()
                    251:        | INFIX INT                                                     ()
                    252:        | INFIXR                                                        ()
                    253:        | INFIXR INT                                                    ()
                    254:        | NONFIX                                                        ()
                    255: 
                    256: ldec   : VAL vb                                                        ()
                    257:        | VAL REC rvb                                                   ()
                    258:        | FUN fb                                                        ()
                    259:        | TYPE tb                                                       ()
                    260:        | DATATYPE db                                                   ()
                    261:        | ABSTYPE db WITH ldecs END                                     ()
                    262:        | EXCEPTION eb                                                  ()
                    263:        | EXCEPTIONX ebx                                                ()
                    264:        | LOCAL ldecs IN ldecs END                                      ()
                    265:        | OPEN qid_p                                                    ()
                    266:        | fixity ops                                                    ()
                    267:        | OVERLOAD ident COLON ty AS exp_pa                             ()
                    268: 
                    269: exp_pa : exp                                                   ()
                    270:        | exp AND exp_pa                                                ()
                    271: 
                    272: ldecs  : ldec                                                  ()
                    273:        | ldecs ldec                                                    ()
                    274:        | ldecs SEMICOLON                                               ()
                    275: 
                    276: ops    : ident                                                 ()
                    277:        | ident ops                                                     ()
                    278: 
                    279: spec_s :                                                       ()
                    280:        | spec spec_s                                                   ()
                    281:        | spec SEMICOLON spec_s                                         ()
                    282: 
                    283: spec   : STRUCTURE strspec                                             ()
                    284:        | DATATYPE db                                                   ()
                    285:        | TYPE tyspec                                                   ()
                    286:        | EQTYPE tyspec                                                 ()
                    287:        | VAL valspec                                                   ()
                    288:        | EXCEPTION exnspec                                             ()
                    289:        | EXCEPTIONX exnspecx                                           ()
                    290:        | fixity ops                                                    ()
                    291:        | SHARING sharespec                                             ()
                    292:        | INCLUDE ident                                                 ()
                    293: 
                    294: strspec        : strspec AND strspec                                           ()
                    295:        | ident COLON sign                                              ()
                    296: 
                    297: tyspec : tyspec AND tyspec                                             ()
                    298:        | tyvars ident                                                  ()
                    299: 
                    300: valspec        : valspec AND valspec                                           ()
                    301:        | opid COLON ty                                                 ()
                    302: 
                    303: exnspec : exnspec AND exnspec                                          ()
                    304:        | ident                                                 ()
                    305:        | ident OF ty                                                   ()
                    306: 
                    307: exnspecx: exnspecx AND exnspecx                                                ()
                    308:        | ident                                                 ()
                    309:        | ident COLON ty                                                ()
                    310:        
                    311: sharespec: sharespec AND sharespec                                     ()
                    312:        | TYPE patheqn                                                  ()
                    313:        | qid patheqn                                                   ()
                    314:        
                    315: patheqn:  qid EQUAL qid                                                        ()
                    316:        | qid EQUAL patheqn                                             ()
                    317: 
                    318: sign   : ID                                                    ()
                    319:        | SIG spec_s END                                                ()
                    320: 
                    321: sigconstraint_op :                                                     ()
                    322:        | COLON sign                                                    ()
                    323: 
                    324: sigb   : sigb AND sigb                                                 ()
                    325:        | ident EQUAL sign                                              ()
                    326: 
                    327: str    : qid                                                   ()
                    328:        | STRUCT sdecs END                                              ()
                    329:        | ID LPAREN sdecs RPAREN                                        ()
                    330:        | ID LPAREN str RPAREN                                          ()
                    331: 
                    332: sdecs  : sdecs sdec                                                    ()
                    333:        | sdecs sdec SEMICOLON                                          ()
                    334:        |                                                       ()
                    335: 
                    336: sdec   : STRUCTURE strb                                                ()
                    337:        | ABSTRACTION strb                                              ()
                    338:        | SIGNATURE sigb                                                ()
                    339:        | FUNCTOR fctb                                                  ()
                    340:        | ldec                                                  ()
                    341: 
                    342: strb   : ident sigconstraint_op EQUAL str                              ()
                    343:        | strb AND strb                                                 ()
                    344: 
                    345: fparam : ID COLON sign                                                 ()
                    346:        | spec_s                                                        ()
                    347: 
                    348: fctb   : ident LPAREN fparam RPAREN sigconstraint_op EQUAL str         ()
                    349:        | fctb AND fctb                                                 ()
                    350: 
                    351: tdec   : SIGNATURE sigb                                                ()
                    352:        | FUNCTOR fctb                                                  ()
                    353:        | STRUCTURE strb                                                ()
                    354:        | ABSTRACTION strb                                              ()
                    355:        | OPEN qid_p                                                    ()
                    356:        | SEMICOLON tdec                                                ()
                    357:        |                                                       ()
                    358: 
                    359: top    : SIGNATURE sigb                                                ()
                    360:        | FUNCTOR fctb                                                  ()
                    361:        | STRUCTURE strb                                                ()
                    362:        | ABSTRACTION strb                                              ()
                    363:        | OPEN qid_p                                                    ()
                    364:        | ldec                                                  ()
                    365:        | exp                                                   ()
                    366: 
                    367: interdec: top                                                  ()
                    368:        | interdec top                                                  ()
                    369:        | SEMICOLON                                                     ()

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.