Annotation of researchv10no/cmd/sml/lib/mlyacc/mlyacc.grm, revision 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.