/* Zz Dynamic Parser Library Copyright (C) 1989 - I.N.F.N - S.Cabasino, P.S.Paolucci, G.M.Todesco The Zz Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The Zz Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include #include "zlex.h" #include "kernel.h" zkernel() { /* redefinition of the syntax */ OPEN(stat) M("/") GSB(lvalue) M("->") GSB($thread) GSB($action) PROC(z_link_rule_default) END OPEN(stat) M("/(") GSB(lvalue) M(")") GSB(ident) M("->") GSB($thread) GSB($action) PROC(z_link_rule) END /* action */ OPEN($action) END OPEN($action) GSB(list) PROC(z_set_action) END OPEN($action) M("{") GSB($ablock) M("}") PROC(z_set_action) END OPEN($action) M(":") GSB(ident) PROC(z_set_action) END OPEN($action) M(":return") GSB($arg) PROC(z_set_return_action) END OPEN($action) M(":return") GSB($arg)M("as") GSB(ident) PROC(z_set_return_action)END /* execute the action when last rule defined is re-defined */ OPEN(stat) M("/when change action") GSB(list_e) PROC(z_set_when_change_action) END /* execute the action when */ OPEN(stat) M("/when delete scope") GSB(list_e) PROC(z_set_when_exit_scope) END /* la thread */ OPEN($thread) END OPEN($thread) GSB($thread) GSB(ident) PROC(z_bead) END OPEN($thread) GSB($thread) GSB(int) PROC(z_bead) END OPEN($thread) GSB($thread) GSB(float) PROC(z_bead) END OPEN($thread) GSB($thread) GSB(double) PROC(z_bead) END OPEN($thread) GSB($thread) GSB(qstring) PROC(z_bead) END OPEN($thread) GSB($thread) GSB(ident) M("^") GSB(ident) PROC(z_bead) END /* precedence */ OPEN(stat) M("/prec") GSB(any) /*ACTION(z_show_prec)*/END OPEN(stat) M("/prec") GSB(any) GSB(num_e) /*ACTION(z_set_left_prec)*/ END OPEN(stat) M("/prec") GSB(any) M("right") GSB(num_e) /*ACTION(z_set_right_prec)*/END /* OPEN(stat) M("/remove rules") GSB(ident) PROC(z_remove_rules) END */ OPEN(stat) M("/push scope") GSB(ident) SPROC(zz_push_scope) END OPEN(stat) M("/delpush scope") GSB(ident) SPROC(delete_and_push_scope) END OPEN(stat) M("/pop scope") SPROC(zz_pop_scope) END OPEN(stat) M("/delete scope") GSB(ident) SPROC(delete_scope) END /* OPEN(stat) M("/scope") GSB(ident) SPROC(set_scope) END */ OPEN($ablock) LIST END OPEN($ablock) GSB($ablock) M("{") GSB($ablock) M("}") MERGE_ALL END OPEN($ablock) GSB($ablock) GSB(any) APPEND END OPEN($ablock) GSB($ablock) GSB(gparam) APPEND END /* OPEN($bparam) GSB(param) PROC(s_param_filter) END */ /* set case_sensitive state of lexer: != 0 is true == 0 is false */ OPEN(stat) M("/zlex_set_case_sensitive") GSB(int) SPROC(zlex_set_case_sensitive) END /* switch between C-like and TAO-like lexer behaviour: != 0 is true (eol is returned as a token and breaks rule paring) == 0 is false (eol is ignored and ';' is necessary to delimit rules) */ OPEN(stat) M("/zlex_set_parse_eol") GSB(int) SPROC(zlex_set_parse_eol) END /* set default type for real consts != 0 is true (every floating const is of double type) == 0 is false (float is default) */ OPEN(stat) M("/zlex_set_default_real_as_double") GSB(int) SPROC(zlex_set_default_real_as_double) END /* set default type for integer const != 0 is true (every floating const is of double type) == 0 is false (float is default) */ OPEN(stat) M("/zlex_set_default_integer_as_int64") GSB(int) SPROC(zlex_set_default_integer_as_int64) END } static char sccsid[]="@(#)zkernel.c 6.2\t9/7/94"; static char rcsid[] = "$Id: zkernel.c,v 1.6 2002/06/03 11:06:13 kibun Exp $ ";