%{ (* PC.grm: parser specification for HMU Fig. 5.14 mrh 3/11 02 *) (* Notice the direct correspondence with the DTD *) open Absyn; %} %token Text %token PCSs PCs MODELs PRICEs MANFs SPEEDs RAMs DISKs HARDDISKs .................. %token PCSe PCe MODELe PRICEe MANFe SPEEDe RAMe DISKe HARDDISKe ................... %token EOF %start Main %type Main PCS %type PCList %type ... . . . %type SIZE %% Main: PCS EOF { $1 } ; PCS: PCSs PCList PCSe { Pcs $2 } ; PCList: ... ; PC: PCs MODEL PRICE PROCESSOR RAM DISKList PCe { Pc($2, $3, $4, $5, $6) } ; MODEL: MODELs Text MODELe { Model $2 } ; PRICE: PRICEs Text PRICEe { Price $2 } ; PROCESSOR: ....... ; MANF: ......... ; SPEED: SPEEDs Text SPEEDe { Speed $2 } ; RAM: RAMs Text RAMe { Ram $2 } ; DISK: ........... ; DISKList: ................. ; HARDDISK: HARDDISKs MANF MODEL SIZE HARDDISKe { Harddisk($2, $3, $4) } ; SIZE: .......... ; CD: ............ ; DVD: ........ ;