1 ;;; wisent-cim.wy --- GNU Cim Grammar
3 ;; Copyright (C) 2002 David Ponce
4 ;; Copyright 2001 Free Software Foundation, Inc.
6 ;; Author: David Ponce <david@dponce.com>
7 ;; Maintainer: David Ponce <david@dponce.com>
8 ;; Created: 03 Mar 2002
10 ;; X-RCS: $Id: wisent-cim.wy,v 1.1 2007-11-26 15:12:29 michaels Exp $
12 ;; This file is not part of GNU Emacs.
14 ;; This program is free software; you can redistribute it and/or
15 ;; modify it under the terms of the GNU General Public License as
16 ;; published by the Free Software Foundation; either version 2, or (at
17 ;; your option) any later version.
19 ;; This program is distributed in the hope that it will be useful, but
20 ;; WITHOUT ANY WARRANTY; without even the implied warranty of
21 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
22 ;; General Public License for more details.
24 ;; You should have received a copy of the GNU General Public License
25 ;; along with this program; see the file COPYING. If not, write to
26 ;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
27 ;; Boston, MA 02110-1301, USA.
31 ;; This is a port of the Bison 1.31 GNU Cim, the GNU Simula 87
32 ;; Compiler, grammar found in file tests/torture.at. It is good to
33 ;; torture Wisent too ;-). It should report 78 shift/reduce conflicts
34 ;; and 10 reduce/reduce conflicts.
36 ;; Implementation is in the file wisent-cim.el.
41 ;;%package wisent-cim-wy
44 HACTIVATE HAFTER ;;/*HAND*/
46 HBEFORE HBEGIN HBOOLEAN
47 HCHARACTER HCLASS ;;/*HCOMMENT*/
50 HELSE HEND HEQ ;;/*HEQV*/
56 HIN HINNER HINSPECT HINTEGER HIS
58 HNAME HNE HNEW HNONE ;;/*HNOT*/
62 HPRIOR HPROCEDURE HPROTECTED
64 HREACTIVATE HREAL HREF
71 HASSIGNVALUE HASSIGNREF
73 HPAREXPSEPARATOR HLABELSEPARATOR HSTATEMENTSEPARATOR
76 HADD HSUB HMUL HDIV HINTDIV HEXP
79 %token <ident> HIDENTIFIER
80 %token <ival> HBOOLEANKONST HINTEGERKONST HCHARACTERKONST
81 %token <rval> HREALKONST
82 %token <tval> HTEXTKONST
84 %right <token> HASSIGN
94 %left <token> HVALRELOPERATOR HREFRELOPERATOR HOBJRELOPERATOR
98 %left <token> HTERMOPERATOR
100 %left <token> HFACTOROPERATOR
101 %left HPRIMARYOPERATOR
109 ;;/* GRAMATIKK FOR PROGRAM MODULES */
112 | error HSTATEMENTSEPARATOR MBEE_DECLSTMS
114 EXT_DECLARATION : HEXTERNAL
133 EXTERNAL_KIND_ITEM: EXT_IDENT
144 ;; MBEE_REST_EXT_LIST
147 ;; MBEE_REST_EXT_LIST: /* EMPTY
148 ;; | HPAREXPSEPARATOR EXT_KIND_LIST
150 ;; EXT_KIND_LIST : EXT_KIND_ITEM
151 ;; | EXT_KIND_LIST HPAREXPSEPARATOR EXT_KIND_ITEM
153 ;; EXT_KIND_ITEM : HIDENTIFIER
157 EMPTY_BLOCK : ;;/*EMPT*/
161 | EXT_LIST HPAREXPSEPARATOR EXT_ITEM
163 EXT_ITEM : HIDENTIFIER
167 EXT_IDENT : ;;/* EMPTY */
172 ;;/* GRAMATIKK FOR TYPER */
192 ;;/* GRAMATIKK FOR DEL AV SETNINGER */
193 MBEE_ELSE_PART : ;;/*EMPT*/
199 ;; MBEE_ELSE_PART {}*/
203 FOR_LIST : FOR_LIST_ELEMENT {}
208 FOR_LIST_ELEMENT: EXPRESSION
211 MBEE_F_L_EL_R_PT: ;;/*EMPT*/
223 CONN_STATE_R_PT : WHEN_CLAUSE_LIST
227 WHEN_CLAUSE_LIST: HWHEN
237 MBEE_OTWI_CLAUS : ;;/*EMPT*/
242 ACTIVATOR : HACTIVATE {}
245 SCHEDULE : ;;/*EMPT*/
247 | ATDELAY EXPRESSION {}
255 BEFOREAFTER : HBEFORE {}
262 ;;/* GRAMATIKK FOR SETNINGER OG DEKLARASJONER */
263 MODULSTATEMENT : HWHILE
297 | EXPRESSION_SIMP HBEGIN error HSTATEMENTSEPARATOR
298 MBEE_DECLSTMS HEND {}
299 | EXPRESSION_SIMP HBEGIN error HEND
304 | ACTIVATOR EXPRESSION SCHEDULE
310 | MBEE_TYPE HPROCEDURE
333 IMPORT_SPEC_MODULE: {}
335 DECLSTATEMENT : MODULSTATEMENT
354 BLOCK : DECLSTATEMENT {}
355 | HBEGIN MBEE_DECLSTMS HEND
356 | HBEGIN error HSTATEMENTSEPARATOR MBEE_DECLSTMS HEND
359 MBEE_DECLSTMS : MBEE_DECLSTMSU {}
361 MBEE_DECLSTMSU : DECLSTATEMENT {}
366 MODULS : MODULSTATEMENT {}
367 | MODULS HSTATEMENTSEPARATOR MODULSTATEMENT
370 ;;/* GRAMATIKK FOR DEL AV DEKLARASJONER */
371 ARR_SEGMENT_LIST: ARR_SEGMENT
376 ARR_SEGMENT : ARRAY_SEGMENT
378 BAUND_PAIR_LIST HENDPAR {}
380 ARRAY_SEGMENT : ARRAY_SEGMENT_EL {}
386 ARRAY_SEGMENT_EL: HIDENTIFIER {}
388 BAUND_PAIR_LIST : BAUND_PAIR {}
393 BAUND_PAIR : EXPRESSION
397 SWITCH_LIST : EXPRESSION {}
402 HEADING : MBEE_FMAL_PAR_P HSTATEMENTSEPARATOR {}
409 MBEE_FMAL_PAR_P : ;;/*EMPT*/
412 FMAL_PAR_PART : HBEGPAR NO_TYPE
415 MBEE_LISTV : ;;/*EMPT*/
418 LISTV : HIDENTIFIER {}
419 | FPP_CATEG HDOTDOTDOT {}
421 HPAREXPSEPARATOR LISTV
424 HPAREXPSEPARATOR LISTV
426 FPP_HEADING : HBEGPAR NO_TYPE
427 FPP_MBEE_LISTV HENDPAR
429 FPP_MBEE_LISTV : ;;/*EMPT*/
432 FPP_LISTV : FPP_CATEG HDOTDOTDOT {}
435 HPAREXPSEPARATOR LISTV
437 FPP_SPEC : FPP_CATEG SPECIFIER HIDENTIFIER
439 | FPP_CATEG FPP_PROC_DECL_IN_SPEC
441 FPP_CATEG : HNAME HLABELSEPARATOR
443 | HVALUE HLABELSEPARATOR
445 | HVAR HLABELSEPARATOR
449 FPP_PROC_DECL_IN_SPEC: MBEE_TYPE HPROCEDURE
456 IDENTIFIER_LISTV: HIDENTIFIER {}
459 HPAREXPSEPARATOR IDENTIFIER_LISTV
461 MBEE_MODE_PART : ;;/*EMPT*/
464 MODE_PART : NAME_PART
467 | NAME_PART VALUE_PART
468 | VALUE_PART NAME_PART
471 | VALUE_PART VAR_PART
472 | VAR_PART VALUE_PART
473 | VAR_PART NAME_PART VALUE_PART
474 | NAME_PART VAR_PART VALUE_PART
475 | NAME_PART VALUE_PART VAR_PART
476 | VAR_PART VALUE_PART NAME_PART
477 | VALUE_PART VAR_PART NAME_PART
478 | VALUE_PART NAME_PART VAR_PART
488 VALUE_PART : HVALUE {}
489 IDENTIFIER_LISTV HSTATEMENTSEPARATOR
491 MBEE_SPEC_PART : ;;/*EMPT*/
497 ONE_SPEC : SPECIFIER IDENTIFIER_LIST HSTATEMENTSEPARATOR
498 | NO_TYPE HPROCEDURE HIDENTIFIER HOBJRELOPERATOR
500 PROC_DECL_IN_SPEC HSTATEMENTSEPARATOR
501 | FPP_PROC_DECL_IN_SPEC HSTATEMENTSEPARATOR
502 | MBEE_TYPE HPROCEDURE HIDENTIFIER HSTATEMENTSEPARATOR
504 | MBEE_TYPE HPROCEDURE HIDENTIFIER HPAREXPSEPARATOR
505 IDENTIFIER_LIST HSTATEMENTSEPARATOR
514 PROC_DECL_IN_SPEC: MBEE_TYPE HPROCEDURE
522 MBEE_BEGIN_END : ;;/* EMPTY */
525 MBEE_PROT_PART : ;;/*EMPT*/
528 PROTECTION_PART : PROT_SPECIFIER IDENTIFIER_LIST
530 | PROTECTION_PART PROT_SPECIFIER
531 IDENTIFIER_LIST HSTATEMENTSEPARATOR
533 PROT_SPECIFIER : HHIDDEN {}
540 MBEE_VIRT_PART : ;;/*EMPT*/
543 VIRTUAL_PART : HVIRTUAL
547 IDENTIFIER_LIST : HIDENTIFIER {}
548 | IDENTIFIER_LIST HPAREXPSEPARATOR
551 IDENTIFIER_LISTC: HIDENTIFIER
553 | IDENTIFIER_LISTC HPAREXPSEPARATOR
557 MBEE_CONSTANT : ;;/* EMPTY */
563 ;;/* GRAMATIKK FOR UTTRYKK */
564 EXPRESSION : EXPRESSION_SIMP {}
572 EXPRESSION_SIMP : EXPRESSION_SIMP
580 | EXPRESSION_SIMP HOR
584 | EXPRESSION_SIMP HAND
589 HEQV EXPRESSION_SIMP {}
591 HIMP EXPRESSION_SIMP {}
593 HOR EXPRESSION_SIMP {}
595 HAND EXPRESSION_SIMP {}
596 | HNOT EXPRESSION_SIMP {}
610 EXPRESSION_SIMP %prec UNEAR
624 EXPRESSION HENDPAR {}
634 | HTHIS HIDENTIFIER {}
644 ARG_R_PT : ;;/*EMPTY*/
647 ARGUMENT_LIST HENDPAR
649 MBEE_ARG_R_PT : ;;/*EMPTY*/
652 ARGUMENT_LIST HENDPAR {}
654 ARGUMENT_LIST : EXPRESSION {}
661 ;;; wisent-cim.wy ends here