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