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

1.1     ! root        1: type Lineno = int
        !             2: val lineno = ref 0
        !             3: fun error e (l:Lineno) =
        !             4:      (output std_out ("line " ^ (makestring l) ^ ": " ^ e ^ "\n"))
        !             5: %%
        !             6: 
        !             7: %verbose
        !             8: 
        !             9: %term
        !            10:        YAND    |       YARRAY  |       YBEGIN  |       YCASE |
        !            11:        YCONST  |       YDIV    |       YDO     |       YDOTDOT |
        !            12:        YTO     |       YELSE   |       YEND    |       YFILE |
        !            13:        YFOR    |       YFORWARD |      YPROCEDURE |    YGOTO |
        !            14:        YID     |       YIF     |       YIN     |       YINT |
        !            15:        YLABEL  |       YMOD    |       YNOT    |       YNUMB  |
        !            16:        YOF     |       YOR     |       YPACKED |       YNIL |
        !            17:        YFUNCTION |     YPROG   |       YRECORD |       YREPEAT |
        !            18:        YSET    |       YSTRING |       YTHEN   |       YDOWNTO |
        !            19:        YTYPE   |       YUNTIL  |       YVAR    |       YWHILE |
        !            20:        YWITH   |       YBINT   |       YOCT    |       YHEX |
        !            21:        YCASELAB |      YILLCH  |       YEXTERN  |
        !            22:  YDOT | YLPAR  | YRPAR | YSEMI  | YCOMMA  | YCOLON |  YCARET |  YLBRA | 
        !            23:  YRBRA | YTILDE |
        !            24:  YLESS | YEQUAL | YGREATER 
        !            25: | YPLUS        | YMINUS | YBAR
        !            26: | UNARYSIGN 
        !            27: | YSTAR        | YSLASH | YAMP
        !            28: |  EOF
        !            29: 
        !            30: %eof EOF
        !            31: 
        !            32: %nonassoc YLESS        YEQUAL  YGREATER        YIN
        !            33: %left  YPLUS   YMINUS  YOR     YBAR
        !            34: %left  UNARYSIGN
        !            35: %left  YSTAR   YSLASH  YDIV    YMOD    YAND    YAMP
        !            36: %left  YNOT
        !            37: 
        !            38: %nonterm goal | prog_hedr | block | decls | decl | labels | label_decl | 
        !            39: const_decl | type_decl | var_decl | proc_decl | pheadres | phead | 
        !            40: porf | params | param | ftype | param_list | const | number | const_list | 
        !            41: type' | simple_type | struct_type | simple_type_list | field_list | 
        !            42: fixed_part | field | variant_part | variant_list | variant | stat_list | 
        !            43: stat_lsth | cstat_list | cstat | stat | assign | expr | element_list | 
        !            44: element | variable | qual_var | wexpr | octhex | expr_list | wexpr_list | 
        !            45: relop | addop | divop | negop | var_list | id_list | const_id | type_id | 
        !            46: var_id | array_id | ptr_id | record_id | field_id | func_id
        !            47: 
        !            48: %keyword
        !            49:        YAND            YARRAY          YBEGIN          YCASE 
        !            50:        YCONST          YDIV            YDO             
        !            51:        YTO             YELSE           YEND            YFILE 
        !            52:        YFOR            YFORWARD        YPROCEDURE      YGOTO 
        !            53:        YIF             YIN             
        !            54:        YLABEL          YMOD            YNOT            
        !            55:        YOF             YOR             YPACKED         YNIL 
        !            56:        YFUNCTION       YPROG           YRECORD         YREPEAT
        !            57:        YSET            YSTRING         YTHEN           YDOWNTO 
        !            58:        YTYPE           YUNTIL          YVAR            YWHILE 
        !            59:        YWITH           YOCT            YHEX 
        !            60:        YEXTERN         YAMP 
        !            61: 
        !            62: %insert_prefer YID YSEMI YCOMMA  YLBRA
        !            63: 
        !            64: %prefer YCOMMA for YSEMI | YSEMI for YCOMMA
        !            65: 
        !            66: %%
        !            67: goal:  prog_hedr decls block YDOT          ()
        !            68: |      decls       ()
        !            69: prog_hedr:     YPROG YID YLPAR id_list YRPAR YSEMI     ()
        !            70: |      YPROG YID YSEMI    ()
        !            71: block: YBEGIN stat_list YEND    ()
        !            72: decls: decls decl    ()
        !            73: |          ()
        !            74: decl:  labels    ()
        !            75: |      const_decl    ()
        !            76: |      type_decl    ()
        !            77: |      var_decl    ()
        !            78: |      proc_decl    ()
        !            79: labels:        YLABEL label_decl YSEMI    ()
        !            80: label_decl:    YINT    ()
        !            81: |      label_decl YCOMMA YINT    ()
        !            82: const_decl:    YCONST YID YEQUAL const YSEMI    ()
        !            83: |      const_decl YID YEQUAL const YSEMI    ()
        !            84: |      YCONST YID YEQUAL YID YSEMI    ()
        !            85: |      const_decl YID YEQUAL YID YSEMI    ()
        !            86: type_decl:     YTYPE YID YEQUAL type' YSEMI    ()
        !            87: |      type_decl YID YEQUAL type' YSEMI    ()
        !            88: var_decl:      YVAR id_list YCOLON type' YSEMI    ()
        !            89: |      var_decl id_list YCOLON type' YSEMI    ()
        !            90: proc_decl:     phead YFORWARD YSEMI    ()
        !            91: |      phead YEXTERN YSEMI    ()
        !            92: |      pheadres decls block YSEMI    ()
        !            93: pheadres:      phead    ()
        !            94: phead: porf YID params ftype YSEMI    ()
        !            95: porf:  YPROCEDURE    ()
        !            96: |      YFUNCTION    ()
        !            97: params:        YLPAR param_list YRPAR    ()
        !            98: |          ()
        !            99: param: id_list YCOLON type'    ()
        !           100: |      YVAR id_list YCOLON type'    ()
        !           101: |      YFUNCTION id_list params ftype    ()
        !           102: |      YPROCEDURE id_list params ftype    ()
        !           103: ftype: YCOLON type'    ()
        !           104: |          ()
        !           105: param_list:    param    ()
        !           106: |      param_list YSEMI param    ()
        !           107: const: YSTRING    ()
        !           108: |      number    ()
        !           109: |      YPLUS number    ()
        !           110: |      YMINUS number    ()
        !           111: |      YPLUS YID    ()
        !           112: |      YMINUS YID    ()
        !           113: number:        YINT    ()
        !           114: |      YBINT    ()
        !           115: |      YNUMB    ()
        !           116: const_list:    const    ()
        !           117: |      const_list YCOMMA const    ()
        !           118: |      YID    ()
        !           119: |      const_list YCOMMA YID    ()
        !           120: type': simple_type    ()
        !           121: |      YCARET YID    ()
        !           122: |      struct_type    ()
        !           123: |      YPACKED struct_type    ()
        !           124: simple_type:   type_id    ()
        !           125: |      YLPAR id_list YRPAR    ()
        !           126: |      const YDOTDOT const    ()
        !           127: |      YID YDOTDOT const    ()
        !           128: |      const YDOTDOT YID    ()
        !           129: |      YID YDOTDOT YID    ()
        !           130: struct_type:   YARRAY YLBRA simple_type_list YRBRA YOF type'    ()
        !           131: |      YFILE YOF type'    ()
        !           132: |      YSET YOF simple_type    ()
        !           133: |      YRECORD field_list YEND    ()
        !           134: simple_type_list:      simple_type    ()
        !           135: |      simple_type_list YCOMMA simple_type    ()
        !           136: field_list:    fixed_part variant_part    ()
        !           137: fixed_part:    field    ()
        !           138: |      fixed_part YSEMI field    ()
        !           139: field:     ()
        !           140: |      id_list YCOLON type'    ()
        !           141: variant_part:      ()
        !           142: |      YCASE type_id YOF variant_list    ()
        !           143: |      YCASE YID YCOLON type_id YOF variant_list    ()
        !           144: variant_list:  variant    ()
        !           145: |      variant_list YSEMI variant    ()
        !           146: variant:           ()
        !           147: |      const_list YCOLON YLPAR field_list YRPAR    ()
        !           148: stat_list:     stat    ()
        !           149: |      stat_lsth stat    ()
        !           150: stat_lsth:     stat_list YSEMI    ()
        !           151: cstat_list:    cstat    ()
        !           152: |      cstat_list YSEMI cstat    ()
        !           153: cstat: const_list YCOLON stat    ()
        !           154: |      YCASELAB stat    ()
        !           155: |          ()
        !           156: stat:      ()
        !           157: |      YINT YCOLON stat    ()
        !           158: |      YID    ()
        !           159: |      YID YLPAR wexpr_list YRPAR ()
        !           160: |      assign ()
        !           161: |      YBEGIN stat_list YEND    ()
        !           162: |      YCASE expr YOF cstat_list YEND    ()
        !           163: |      YWITH var_list YDO stat    ()
        !           164: |      YWHILE expr YDO stat    ()
        !           165: |      YREPEAT stat_list YUNTIL expr    ()
        !           166: |      YFOR assign YTO expr YDO stat    ()
        !           167: |      YFOR assign YDOWNTO expr YDO stat    ()
        !           168: |      YGOTO YINT    ()
        !           169: |      YIF expr YTHEN stat    ()
        !           170: |      YIF expr YTHEN stat YELSE stat    ()
        !           171: assign:        variable YCOLON YEQUAL expr    ()
        !           172: |      YID YCOLON YEQUAL expr    ()
        !           173: expr:  expr relop expr                 %prec YLESS    ()
        !           174: |      YPLUS expr                      %prec UNARYSIGN    ()
        !           175: |      YMINUS expr                     %prec UNARYSIGN    ()
        !           176: |      expr addop expr                 %prec YPLUS    ()
        !           177: |      expr divop expr                 %prec YSTAR    ()
        !           178: |      YNIL    ()
        !           179: |      YSTRING    ()
        !           180: |      YINT    ()
        !           181: |      YBINT    ()
        !           182: |      YNUMB    ()
        !           183: |      variable    ()
        !           184: |      YID ()
        !           185: |      YID YLPAR wexpr_list YRPAR    ()
        !           186: |      YLPAR expr YRPAR    ()
        !           187: |      negop expr                      %prec YNOT    ()
        !           188: |      YLBRA element_list YRBRA    ()
        !           189: |      YLBRA YRBRA    ()
        !           190: element_list:  element    ()
        !           191: |      element_list YCOMMA element    ()
        !           192: element:       expr    ()
        !           193: |      expr YDOTDOT expr    ()
        !           194: variable:      qual_var    ()
        !           195: qual_var:      YID YLBRA expr_list YRBRA    ()
        !           196: |      qual_var YLBRA expr_list YRBRA    ()
        !           197: |      YID YDOT field_id    ()
        !           198: |      qual_var YDOT field_id    ()
        !           199: |      YID YCARET    ()
        !           200: |      qual_var YCARET    ()
        !           201: wexpr: expr    ()
        !           202: |      expr YCOLON expr    ()
        !           203: |      expr YCOLON expr YCOLON expr    ()
        !           204: |      expr octhex    ()
        !           205: |      expr YCOLON expr octhex    ()
        !           206: octhex:        YOCT    ()
        !           207: |      YHEX    ()
        !           208: expr_list:     expr    ()
        !           209: |      expr_list YCOMMA expr    ()
        !           210: wexpr_list:    wexpr    ()
        !           211: |      wexpr_list YCOMMA wexpr    ()
        !           212: relop: YEQUAL  ()
        !           213: |      YLESS   ()
        !           214: |      YGREATER        ()
        !           215: |      YLESS YGREATER  ()
        !           216: |      YLESS YEQUAL    ()
        !           217: |      YGREATER YEQUAL ()
        !           218: |      YIN     ()
        !           219: addop: YPLUS   ()
        !           220: |      YMINUS  ()
        !           221: |      YOR     ()
        !           222: |      YBAR    ()
        !           223: divop: YSTAR   ()
        !           224: |      YSLASH  ()
        !           225: |      YDIV    ()
        !           226: |      YMOD    ()
        !           227: |      YAND    ()
        !           228: |      YAMP    ()
        !           229: negop: YNOT    ()
        !           230: |      YTILDE    ()
        !           231: var_list:      variable    ()
        !           232: |      var_list YCOMMA variable    ()
        !           233: |      YID    ()
        !           234: |      var_list YCOMMA YID    ()
        !           235: id_list:       YID    ()
        !           236: |      id_list YCOMMA YID    ()
        !           237: const_id:      YID    ()
        !           238: type_id:       YID    ()
        !           239: var_id:        YID    ()
        !           240: array_id:      YID    ()
        !           241: ptr_id:        YID    ()
        !           242: record_id:     YID    ()
        !           243: field_id:      YID    ()
        !           244: func_id:       YID    ()

unix.superglobalmegacorp.com

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