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

1.1       root        1: (* MLPG.GRM: Grammar specification for ml parser generator
                      2:    Created by David Tarditi
                      3: *)
                      4: open Misc;
                      5: %%
                      6: 
                      7: %eof EOF
                      8: %right ARROW
                      9: %left  ASTERISK
                     10: 
                     11: %term DELIMITER | OF | Term | Nonterm | START | COLON | ID of string |
                     12:       UNKNOWN of string | EOF | BAR | PROG of string | PREC of LexValue |
                     13:        PERCENT_EOF | PREC_TAG | HEADER of string | PREFER | IPREFER |
                     14:        KEYWORD | FOR | LBRACE | RBRACE | COMMA | ASTERISK | ARROW |
                     15:        TYVAR of string | IDDOT of string | RPAREN | LPAREN | INT of string |
                     16:        STRUCT | VERBOSE | TO | VAL | EQUAL | BLOCK
                     17: 
                     18: %nonterm MPC_DECLS of decl_data | MPC_DECL of decl_data |
                     19:         ID_LIST of string list | TRULE of rule list | TRULELIST of rule list |
                     20:         BEGIN | TY of string list |
                     21:         CONSTR_LIST of (constr*constr_data) list |
                     22:         RHSLIST of rhs_data | RULEPREC of string option |
                     23:         SUBST_DECL of (string*string) list |
                     24:         TYPELIST of string list | RECORDLIST of string list |
                     25:         QUALID of string list | LABEL of string
                     26: 
                     27: %%
                     28: 
                     29: BEGIN : HEADER MPC_DECLS DELIMITER TRULELIST
                     30:        (make_parser (HEADER,MPC_DECLS,TRULELIST))
                     31: 
                     32: MPC_DECLS : MPC_DECLS MPC_DECL  (join_decls MPC_DECLS MPC_DECL)
                     33: 
                     34: MPC_DECLS:  ({start=NONE,prec=NONE,nonterm=NONE,term=NONE,eof=NONE,
                     35:                prefer=nil,iprefer=nil,keyword=nil,structure'=NONE,
                     36:                verbose=false})
                     37: 
                     38: MPC_DECL: Term CONSTR_LIST
                     39:            ({ start=NONE,prec=NONE,nonterm=NONE,
                     40:               term = make_tok_dict CONSTR_LIST, eof = NONE,
                     41:                prefer=nil,iprefer=nil,keyword=nil,structure'=NONE,
                     42:                verbose=false})
                     43: 
                     44:        | Nonterm CONSTR_LIST
                     45:            ({ start=NONE,prec=NONE,nonterm=make_tok_dict CONSTR_LIST,
                     46:               term = NONE, eof = NONE,prefer=nil,iprefer=nil,keyword=nil,
                     47:               structure'=NONE,verbose=false})
                     48:        | PREC ID_LIST
                     49:            ({start=NONE,prec=save_prec(ID_LIST1,PREC1),
                     50:              nonterm=NONE,term=NONE,eof=NONE,prefer=nil,iprefer=nil,
                     51:              keyword=nil,structure'=NONE,verbose=false})
                     52: 
                     53:        | START ID
                     54:             ({start=SOME ID,prec=NONE,nonterm=NONE,structure'=NONE,
                     55:               term = NONE, eof = NONE,prefer=nil,iprefer=nil,keyword=nil,
                     56:               verbose=false})
                     57: 
                     58:        | PERCENT_EOF ID
                     59:             ({start=NONE,prec=NONE,nonterm=NONE,term=NONE,eof=SOME ID,
                     60:                prefer=nil,iprefer=nil,keyword=nil,structure'=NONE,
                     61:                verbose=false})
                     62: 
                     63:        | KEYWORD ID_LIST
                     64:             ({start=NONE,prec=NONE,nonterm=NONE,term=NONE,eof=NONE,
                     65:                prefer=nil,iprefer=nil,keyword=ID_LIST1,structure'=NONE,
                     66:                verbose=false})
                     67: 
                     68:        | IPREFER ID_LIST
                     69:             ({start=NONE,prec=NONE,nonterm=NONE,term=NONE,eof=NONE,
                     70:                prefer=nil,iprefer=ID_LIST1,keyword=nil,structure'=NONE,
                     71:                verbose=false})
                     72: 
                     73:        | PREFER SUBST_DECL
                     74:             ({start=NONE,prec=NONE,nonterm=NONE,term=NONE,eof=NONE,
                     75:                prefer=SUBST_DECL1,iprefer=nil,keyword=nil,structure'=NONE,
                     76:                verbose=false})
                     77: 
                     78:        | STRUCT ID
                     79:             ({start=NONE,prec=NONE,nonterm=NONE,term=NONE,eof=NONE,
                     80:                prefer=nil,iprefer=nil,keyword=nil,structure'=SOME ID,
                     81:                verbose=false})
                     82: 
                     83:        | VERBOSE
                     84:             ({start=NONE,prec=NONE,nonterm=NONE,term=NONE,eof=NONE,
                     85:                prefer=nil,iprefer=nil,keyword=nil,structure'=NONE,
                     86:                verbose=true})
                     87: 
                     88: SUBST_DECL : SUBST_DECL BAR ID FOR ID
                     89:              ((ID1,ID2)::SUBST_DECL)
                     90: 
                     91:        | ID FOR ID
                     92:              ([(ID1,ID2)])
                     93: 
                     94: CONSTR_LIST : CONSTR_LIST BAR ID OF TY
                     95:             ((ID,{ty=SOME TY,num=0})::CONSTR_LIST)
                     96: 
                     97:        | CONSTR_LIST BAR ID
                     98:             ((ID,{ty=NONE,num=0})::CONSTR_LIST)
                     99: 
                    100:        | ID OF TY ([(ID,{ty=SOME TY,num=0})])
                    101: 
                    102:        | ID ([(ID,{ty=NONE,num=0})])
                    103: 
                    104: TRULE : ID COLON RHSLIST
                    105:        (map (fn {rhs,code,prec} => {lhs=ID1,rhs=rev rhs,code=code,prec=prec})
                    106:         RHSLIST1)
                    107: 
                    108: TRULELIST:  TRULELIST TRULE (TRULE1 @ TRULELIST1)
                    109: 
                    110:        |        (nil)
                    111: 
                    112: ID_LIST : ID_LIST ID (ID1 :: ID_LIST1)
                    113: 
                    114:        |        (nil)
                    115: 
                    116: RHSLIST : ID_LIST RULEPREC PROG
                    117:            ([{rhs=ID_LIST1,code=PROG1,prec=RULEPREC1}])
                    118: 
                    119:        | RHSLIST BAR ID_LIST RULEPREC PROG
                    120:            ({rhs=ID_LIST1,code=PROG1,prec=RULEPREC1}::RHSLIST1)
                    121: 
                    122: TY : TYVAR
                    123:        ([TYVAR])
                    124:    | LBRACE RECORDLIST RBRACE
                    125:        ("{ "::RECORDLIST@[" } "])
                    126:    | LBRACE RBRACE
                    127:        (["{ }"])
                    128:    | LPAREN TY RPAREN
                    129:        (" ( "::(TY@[" ) "]))
                    130:    | LPAREN TYPELIST RPAREN QUALID
                    131:        (" ( "::TYPELIST@(" ) "::QUALID))
                    132:    | TY QUALID
                    133:        (TY@(" "::QUALID))
                    134:    | QUALID
                    135:        (QUALID)
                    136:    | TY ASTERISK TY
                    137:        (TY1@("*"::TY2))
                    138:    | TY ARROW TY
                    139:        (TY1@(" -> "::" "::TY2))
                    140: 
                    141: TYPELIST : TYPELIST COMMA TY
                    142:                (TYPELIST@(","::TY))
                    143:         | TY COMMA TY
                    144:             (TY1 @ ("," :: TY2))
                    145: 
                    146: RECORDLIST : RECORDLIST COMMA LABEL COLON TY
                    147:                (RECORDLIST@(" "::LABEL::" : "::TY))
                    148:           | LABEL COLON TY
                    149:                (" "::LABEL::" : "::TY)
                    150: 
                    151: QUALID : ID    ([ID])
                    152:        | IDDOT QUALID (IDDOT::QUALID)
                    153:         
                    154: LABEL : ID  (ID)
                    155:       | INT (INT)
                    156: 
                    157: RULEPREC : PREC_TAG ID (SOME ID1)
                    158: 
                    159: RULEPREC : (NONE)

unix.superglobalmegacorp.com

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