d0e518695adc90b82233b99af7dffbb3d3f92c00amw%{
d0e518695adc90b82233b99af7dffbb3d3f92c00amw/*
d0e518695adc90b82233b99af7dffbb3d3f92c00amw * CDDL HEADER START
d0e518695adc90b82233b99af7dffbb3d3f92c00amw *
d0e518695adc90b82233b99af7dffbb3d3f92c00amw * The contents of this file are subject to the terms of the
d0e518695adc90b82233b99af7dffbb3d3f92c00amw * Common Development and Distribution License (the "License").
d0e518695adc90b82233b99af7dffbb3d3f92c00amw * You may not use this file except in compliance with the License.
d0e518695adc90b82233b99af7dffbb3d3f92c00amw *
d0e518695adc90b82233b99af7dffbb3d3f92c00amw * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
d0e518695adc90b82233b99af7dffbb3d3f92c00amw * or http://www.opensolaris.org/os/licensing.
d0e518695adc90b82233b99af7dffbb3d3f92c00amw * See the License for the specific language governing permissions
d0e518695adc90b82233b99af7dffbb3d3f92c00amw * and limitations under the License.
d0e518695adc90b82233b99af7dffbb3d3f92c00amw *
d0e518695adc90b82233b99af7dffbb3d3f92c00amw * When distributing Covered Code, include this CDDL HEADER in each
d0e518695adc90b82233b99af7dffbb3d3f92c00amw * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
d0e518695adc90b82233b99af7dffbb3d3f92c00amw * If applicable, add the following below this CDDL HEADER, with the
d0e518695adc90b82233b99af7dffbb3d3f92c00amw * fields enclosed by brackets "[]" replaced with your own identifying
d0e518695adc90b82233b99af7dffbb3d3f92c00amw * information: Portions Copyright [yyyy] [name of copyright owner]
d0e518695adc90b82233b99af7dffbb3d3f92c00amw *
d0e518695adc90b82233b99af7dffbb3d3f92c00amw * CDDL HEADER END
d0e518695adc90b82233b99af7dffbb3d3f92c00amw */
d0e518695adc90b82233b99af7dffbb3d3f92c00amw
d0e518695adc90b82233b99af7dffbb3d3f92c00amw/*
a0b6e447978c306e15941d158bf6939a42ed2726Alan Wright * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
d0e518695adc90b82233b99af7dffbb3d3f92c00amw * Use is subject to license terms.
d0e518695adc90b82233b99af7dffbb3d3f92c00amw */
d0e518695adc90b82233b99af7dffbb3d3f92c00amw
d0e518695adc90b82233b99af7dffbb3d3f92c00amw#include "ndrgen.h"
d0e518695adc90b82233b99af7dffbb3d3f92c00amw
d0e518695adc90b82233b99af7dffbb3d3f92c00amwtypedef struct node *node_ptr;
d0e518695adc90b82233b99af7dffbb3d3f92c00amw#define YYSTYPE node_ptr
d0e518695adc90b82233b99af7dffbb3d3f92c00amw%}
d0e518695adc90b82233b99af7dffbb3d3f92c00amw
d0e518695adc90b82233b99af7dffbb3d3f92c00amw/* keywords */
d0e518695adc90b82233b99af7dffbb3d3f92c00amw%token STRUCT_KW UNION_KW TYPEDEF_KW
d0e518695adc90b82233b99af7dffbb3d3f92c00amw
d0e518695adc90b82233b99af7dffbb3d3f92c00amw/* advice keywords */
d0e518695adc90b82233b99af7dffbb3d3f92c00amw%token ALIGN_KW OPERATION_KW IN_KW OUT_KW
d0e518695adc90b82233b99af7dffbb3d3f92c00amw%token INTERFACE_KW UUID_KW _NO_REORDER_KW EXTERN_KW
d0e518695adc90b82233b99af7dffbb3d3f92c00amw%token SIZE_IS_KW LENGTH_IS_KW STRING_KW REFERENCE_KW
d0e518695adc90b82233b99af7dffbb3d3f92c00amw%token CASE_KW DEFAULT_KW SWITCH_IS_KW
d0e518695adc90b82233b99af7dffbb3d3f92c00amw%token TRANSMIT_AS_KW ARG_IS_KW
d0e518695adc90b82233b99af7dffbb3d3f92c00amw
d0e518695adc90b82233b99af7dffbb3d3f92c00amw/* composite keywords */
d0e518695adc90b82233b99af7dffbb3d3f92c00amw%token BASIC_TYPE TYPENAME
d0e518695adc90b82233b99af7dffbb3d3f92c00amw
d0e518695adc90b82233b99af7dffbb3d3f92c00amw/* symbols and punctuation */
d0e518695adc90b82233b99af7dffbb3d3f92c00amw%token IDENTIFIER INTEGER STRING
a0b6e447978c306e15941d158bf6939a42ed2726Alan Wright%token LC RC SEMI STAR DIV MOD PLUS MINUS AND OR XOR LB RB LP RP
d0e518695adc90b82233b99af7dffbb3d3f92c00amw
d0e518695adc90b82233b99af7dffbb3d3f92c00amw
d0e518695adc90b82233b99af7dffbb3d3f92c00amw%token L_MEMBER
d0e518695adc90b82233b99af7dffbb3d3f92c00amw
d0e518695adc90b82233b99af7dffbb3d3f92c00amw
d0e518695adc90b82233b99af7dffbb3d3f92c00amw%%
d0e518695adc90b82233b99af7dffbb3d3f92c00amw
d0e518695adc90b82233b99af7dffbb3d3f92c00amwdefn : /* empty */
d0e518695adc90b82233b99af7dffbb3d3f92c00amw | construct_list ={ construct_list = (struct node *)$1; }
d0e518695adc90b82233b99af7dffbb3d3f92c00amw ;
d0e518695adc90b82233b99af7dffbb3d3f92c00amw
d0e518695adc90b82233b99af7dffbb3d3f92c00amwconstruct_list: construct
d0e518695adc90b82233b99af7dffbb3d3f92c00amw | construct_list construct ={ n_splice ($1,$2); }
d0e518695adc90b82233b99af7dffbb3d3f92c00amw ;
d0e518695adc90b82233b99af7dffbb3d3f92c00amw
d0e518695adc90b82233b99af7dffbb3d3f92c00amwconstruct: struct
d0e518695adc90b82233b99af7dffbb3d3f92c00amw | union
d0e518695adc90b82233b99af7dffbb3d3f92c00amw | typedef
d0e518695adc90b82233b99af7dffbb3d3f92c00amw ;
d0e518695adc90b82233b99af7dffbb3d3f92c00amw
d0e518695adc90b82233b99af7dffbb3d3f92c00amwstruct : advice STRUCT_KW typename LC members RC SEMI
d0e518695adc90b82233b99af7dffbb3d3f92c00amw ={ $$ = n_cons (STRUCT_KW, $1, $3, $5);
d0e518695adc90b82233b99af7dffbb3d3f92c00amw construct_fixup ($$);
d0e518695adc90b82233b99af7dffbb3d3f92c00amw }
d0e518695adc90b82233b99af7dffbb3d3f92c00amw ;
d0e518695adc90b82233b99af7dffbb3d3f92c00amw
d0e518695adc90b82233b99af7dffbb3d3f92c00amwunion : advice UNION_KW typename LC members RC SEMI
d0e518695adc90b82233b99af7dffbb3d3f92c00amw ={ $$ = n_cons (UNION_KW, $1, $3, $5);
d0e518695adc90b82233b99af7dffbb3d3f92c00amw construct_fixup ($$);
d0e518695adc90b82233b99af7dffbb3d3f92c00amw }
d0e518695adc90b82233b99af7dffbb3d3f92c00amw ;
d0e518695adc90b82233b99af7dffbb3d3f92c00amw
d0e518695adc90b82233b99af7dffbb3d3f92c00amwtypedef : TYPEDEF_KW member
d0e518695adc90b82233b99af7dffbb3d3f92c00amw ={ $$ = n_cons (TYPEDEF_KW, 0, $2->n_m_name, $2);
d0e518695adc90b82233b99af7dffbb3d3f92c00amw construct_fixup ($$);
d0e518695adc90b82233b99af7dffbb3d3f92c00amw }
d0e518695adc90b82233b99af7dffbb3d3f92c00amw ;
d0e518695adc90b82233b99af7dffbb3d3f92c00amw
d0e518695adc90b82233b99af7dffbb3d3f92c00amwmembers : member
d0e518695adc90b82233b99af7dffbb3d3f92c00amw | members member ={ n_splice ($1,$2); }
d0e518695adc90b82233b99af7dffbb3d3f92c00amw ;
d0e518695adc90b82233b99af7dffbb3d3f92c00amw
d0e518695adc90b82233b99af7dffbb3d3f92c00amwmember : advice type declarator SEMI
d0e518695adc90b82233b99af7dffbb3d3f92c00amw ={ $$ = n_cons (L_MEMBER, $1, $2, $3);
d0e518695adc90b82233b99af7dffbb3d3f92c00amw member_fixup ($$);
d0e518695adc90b82233b99af7dffbb3d3f92c00amw }
d0e518695adc90b82233b99af7dffbb3d3f92c00amw ;
d0e518695adc90b82233b99af7dffbb3d3f92c00amw
d0e518695adc90b82233b99af7dffbb3d3f92c00amwadvice : /* empty */ ={ $$ = 0; }
d0e518695adc90b82233b99af7dffbb3d3f92c00amw | adv_list
d0e518695adc90b82233b99af7dffbb3d3f92c00amw ;
d0e518695adc90b82233b99af7dffbb3d3f92c00amw
d0e518695adc90b82233b99af7dffbb3d3f92c00amwadv_list: LB adv_attrs RB ={ $$ = $2; }
d0e518695adc90b82233b99af7dffbb3d3f92c00amw | adv_list LB adv_attrs RB ={ n_splice ($1,$3); }
d0e518695adc90b82233b99af7dffbb3d3f92c00amw ;
d0e518695adc90b82233b99af7dffbb3d3f92c00amw
d0e518695adc90b82233b99af7dffbb3d3f92c00amwadv_attrs: adv_attr
d0e518695adc90b82233b99af7dffbb3d3f92c00amw | adv_attr adv_attr ={ n_splice ($1,$2); }
d0e518695adc90b82233b99af7dffbb3d3f92c00amw ;
d0e518695adc90b82233b99af7dffbb3d3f92c00amw
d0e518695adc90b82233b99af7dffbb3d3f92c00amwadv_attr: IN_KW ={ $$ = n_cons (IN_KW); }
d0e518695adc90b82233b99af7dffbb3d3f92c00amw | OUT_KW ={ $$ = n_cons (OUT_KW); }
d0e518695adc90b82233b99af7dffbb3d3f92c00amw | OPERATION_KW LP arg RP ={ $$ = n_cons (OPERATION_KW, $3); }
d0e518695adc90b82233b99af7dffbb3d3f92c00amw | ALIGN_KW LP arg RP ={ $$ = n_cons (ALIGN_KW, $3); }
d0e518695adc90b82233b99af7dffbb3d3f92c00amw | STRING_KW ={ $$ = n_cons (STRING_KW); }
d0e518695adc90b82233b99af7dffbb3d3f92c00amw
a0b6e447978c306e15941d158bf6939a42ed2726Alan Wright | SIZE_IS_KW LP arg RP
a0b6e447978c306e15941d158bf6939a42ed2726Alan Wright ={ $$ = n_cons (SIZE_IS_KW, $3, $3, $3); }
a0b6e447978c306e15941d158bf6939a42ed2726Alan Wright | SIZE_IS_KW LP arg operator INTEGER RP
a0b6e447978c306e15941d158bf6939a42ed2726Alan Wright ={ $$ = n_cons (SIZE_IS_KW, $3, $4, $5); }
a0b6e447978c306e15941d158bf6939a42ed2726Alan Wright
a0b6e447978c306e15941d158bf6939a42ed2726Alan Wright | LENGTH_IS_KW LP arg RP
a0b6e447978c306e15941d158bf6939a42ed2726Alan Wright ={ $$ = n_cons (LENGTH_IS_KW, $3, $3, $3); }
a0b6e447978c306e15941d158bf6939a42ed2726Alan Wright | LENGTH_IS_KW LP arg operator INTEGER RP
a0b6e447978c306e15941d158bf6939a42ed2726Alan Wright ={ $$ = n_cons (LENGTH_IS_KW, $3, $4, $5); }
a0b6e447978c306e15941d158bf6939a42ed2726Alan Wright
a0b6e447978c306e15941d158bf6939a42ed2726Alan Wright | SWITCH_IS_KW LP arg RP
a0b6e447978c306e15941d158bf6939a42ed2726Alan Wright ={ $$ = n_cons (SWITCH_IS_KW, $3, $3, $3); }
a0b6e447978c306e15941d158bf6939a42ed2726Alan Wright | SWITCH_IS_KW LP arg operator INTEGER RP
a0b6e447978c306e15941d158bf6939a42ed2726Alan Wright ={ $$ = n_cons (SWITCH_IS_KW, $3, $4, $5); }
a0b6e447978c306e15941d158bf6939a42ed2726Alan Wright
d0e518695adc90b82233b99af7dffbb3d3f92c00amw | CASE_KW LP arg RP ={ $$ = n_cons (CASE_KW, $3); }
d0e518695adc90b82233b99af7dffbb3d3f92c00amw | DEFAULT_KW ={ $$ = n_cons (DEFAULT_KW); }
d0e518695adc90b82233b99af7dffbb3d3f92c00amw
d0e518695adc90b82233b99af7dffbb3d3f92c00amw | ARG_IS_KW LP arg RP ={ $$ = n_cons (ARG_IS_KW, $3); }
d0e518695adc90b82233b99af7dffbb3d3f92c00amw | TRANSMIT_AS_KW LP BASIC_TYPE RP
d0e518695adc90b82233b99af7dffbb3d3f92c00amw ={ $$ = n_cons (TRANSMIT_AS_KW, $3); }
d0e518695adc90b82233b99af7dffbb3d3f92c00amw
d0e518695adc90b82233b99af7dffbb3d3f92c00amw | INTERFACE_KW LP arg RP ={ $$ = n_cons (INTERFACE_KW, $3); }
d0e518695adc90b82233b99af7dffbb3d3f92c00amw | UUID_KW LP arg RP ={ $$ = n_cons (UUID_KW, $3); }
d0e518695adc90b82233b99af7dffbb3d3f92c00amw | _NO_REORDER_KW ={ $$ = n_cons (_NO_REORDER_KW); }
d0e518695adc90b82233b99af7dffbb3d3f92c00amw | EXTERN_KW ={ $$ = n_cons (EXTERN_KW); }
d0e518695adc90b82233b99af7dffbb3d3f92c00amw | REFERENCE_KW ={ $$ = n_cons (REFERENCE_KW); }
d0e518695adc90b82233b99af7dffbb3d3f92c00amw ;
d0e518695adc90b82233b99af7dffbb3d3f92c00amw
d0e518695adc90b82233b99af7dffbb3d3f92c00amwarg : IDENTIFIER
d0e518695adc90b82233b99af7dffbb3d3f92c00amw | INTEGER
d0e518695adc90b82233b99af7dffbb3d3f92c00amw | STRING
d0e518695adc90b82233b99af7dffbb3d3f92c00amw ;
d0e518695adc90b82233b99af7dffbb3d3f92c00amw
d0e518695adc90b82233b99af7dffbb3d3f92c00amwtype : BASIC_TYPE
d0e518695adc90b82233b99af7dffbb3d3f92c00amw | typename
d0e518695adc90b82233b99af7dffbb3d3f92c00amw | STRUCT_KW typename ={ $$ = $2; }
d0e518695adc90b82233b99af7dffbb3d3f92c00amw | UNION_KW typename ={ $$ = $2; }
d0e518695adc90b82233b99af7dffbb3d3f92c00amw ;
d0e518695adc90b82233b99af7dffbb3d3f92c00amw
d0e518695adc90b82233b99af7dffbb3d3f92c00amwtypename: TYPENAME
d0e518695adc90b82233b99af7dffbb3d3f92c00amw | IDENTIFIER
d0e518695adc90b82233b99af7dffbb3d3f92c00amw ;
d0e518695adc90b82233b99af7dffbb3d3f92c00amw
a0b6e447978c306e15941d158bf6939a42ed2726Alan Wrightoperator: STAR
a0b6e447978c306e15941d158bf6939a42ed2726Alan Wright | DIV
a0b6e447978c306e15941d158bf6939a42ed2726Alan Wright | MOD
a0b6e447978c306e15941d158bf6939a42ed2726Alan Wright | PLUS
a0b6e447978c306e15941d158bf6939a42ed2726Alan Wright | MINUS
a0b6e447978c306e15941d158bf6939a42ed2726Alan Wright | AND
a0b6e447978c306e15941d158bf6939a42ed2726Alan Wright | OR
a0b6e447978c306e15941d158bf6939a42ed2726Alan Wright | XOR
a0b6e447978c306e15941d158bf6939a42ed2726Alan Wright ;
a0b6e447978c306e15941d158bf6939a42ed2726Alan Wright
d0e518695adc90b82233b99af7dffbb3d3f92c00amwdeclarator: decl1
d0e518695adc90b82233b99af7dffbb3d3f92c00amw ;
d0e518695adc90b82233b99af7dffbb3d3f92c00amw
d0e518695adc90b82233b99af7dffbb3d3f92c00amwdecl1 : decl2
d0e518695adc90b82233b99af7dffbb3d3f92c00amw | STAR decl1 ={ $$ = n_cons (STAR, $2); }
d0e518695adc90b82233b99af7dffbb3d3f92c00amw ;
d0e518695adc90b82233b99af7dffbb3d3f92c00amw
d0e518695adc90b82233b99af7dffbb3d3f92c00amwdecl2 : decl3
d0e518695adc90b82233b99af7dffbb3d3f92c00amw | decl3 LB RB ={ $$ = n_cons (LB, $1, 0); }
d0e518695adc90b82233b99af7dffbb3d3f92c00amw | decl3 LB STAR RB ={ $$ = n_cons (LB, $1, 0); }
d0e518695adc90b82233b99af7dffbb3d3f92c00amw | decl3 LB INTEGER RB ={ $$ = n_cons (LB, $1, $3); }
d0e518695adc90b82233b99af7dffbb3d3f92c00amw ;
d0e518695adc90b82233b99af7dffbb3d3f92c00amw
d0e518695adc90b82233b99af7dffbb3d3f92c00amwdecl3 : IDENTIFIER
d0e518695adc90b82233b99af7dffbb3d3f92c00amw | LP decl1 RP ={ $$ = n_cons (LP, $2); }
d0e518695adc90b82233b99af7dffbb3d3f92c00amw ;
d0e518695adc90b82233b99af7dffbb3d3f92c00amw
d0e518695adc90b82233b99af7dffbb3d3f92c00amw
d0e518695adc90b82233b99af7dffbb3d3f92c00amw
d0e518695adc90b82233b99af7dffbb3d3f92c00amw%%