


generic package lr_vals_g(package token : Token;
) {
package parser_data{
package header {
# DO NOT CHANGE THIS FILE -- this file was generated from cd.grammar
# Compiled by:
# src/lib/c-kit/src/parser/c-parser.sublib# new comments from Satish Chandra, 6/21/99
# Overriding design approach:
#
# Accept all legal programs, but possibly some illegal ones at this stage.
# Do not attempt to make a really tight grammar. Our tools are supposed to
# work on "correct" C programs (i.e. those that cc -ansi would compile without
# warnings). Of course, a type checker on the parse tree can report some errors
# as syntax errors.
#
# Note on MARK:
#
# External_Decl, statement, and expression are the non-terms that are marked.
# Compound statements are not separately marked.
# declarations eventually become either a statement or a External_Decl
# if they are outside any function. They are marked accordingly.
#
# Note on function definitions:
#
# The order of the paramaters will always come from the FUNC_DECR.
# The types of the parameter may come from the second declaration list
# (in K&R style)
#
# Note on the package of the grammar:
#
# It is difficult to write a LALR(1) grammar based on the grammar given at
# the back of the K&R book. The basic difficulty is that both TYPE_NAME and
# IDENTIFIER are tokens that are strings, but it depends on the context whether
# a given string is to be treated as an IDENTIFIER or a TYPE_NAME.
# We have borrowed the solution used in GCC's parser specification. In this
# scheme, the lexer always return the token TYPE_NAME if a name has been
# defined as a type name (via a typedef) in an applicable scope. The grammar
# productions are heavily rearranged (from K&R's grammar) to do the right
# thing. In this rearrangement, the basic idea is that a TYPE_NAME is
# allowed to appear in a declaration as a plain identifier only after a type
# specifier has previously appeared in the declaration. Also, a TYPE_NAME may
# appear only once in a declaration as a type specifier.
# old comments below
# Shortcomings
# 1. No floating-point whatsoever
# Notes on MARK:
# External_Decl and statement are the non-terms that are marked.
# Compound statements are not separately marked.
# expressions are not marked at all.
# declarations eventually become either a statement or a External_Decl
# if they are outside any function. they are marked accordingly.
# Overriding theme: accept all legal programs, but also some illegal ones at this
# stage. Do not attempt to make a really tight grammar. Our tools are supposed to
# work on "correct" C programs (i.e. those that cc -ansi would compile without
# warnings). Of course, a type checker on the parse tree can report some errors
# as syntax errors.
### "You can either have software quality
### or you can have pointer arithmetic,
### but you cannot have both at the same time."
###
### -- Bertrand Meyer
# About function definitions:
# The order of the parameters will always come from the FUNC_DECR thing
# The types of the parameter may come from the second declaration list (in K&R style)
include parse_tree; # PortingHelp
fun mark_external_decl src_map (d, left, right)
=
MARKEXTERNAL_DECL(line_number_db::location src_map (left, right), d);
fun mark_declaration src_map (d, left, right)
=
MARKDECLARATION(line_number_db::location src_map (left, right), d);
fun mark_declarator src_map (d, left, right)
=
MARKDECLARATOR(line_number_db::location src_map (left, right), d);
fun mark_statement src_map (s, left, right)
=
MARKSTATEMENT(line_number_db::location src_map (left, right), s);
fun mark_expression src_map (s, left, right)
=
MARKEXPRESSION(line_number_db::location src_map (left, right), s);
unknown = { storage => [], qualifiers => [], specifiers => [] }: Decltype;
# This code duplicated in BuildRawSyntaxTree in function processDeclarator:
fun ctype_decr_to_type_name (type as { qualifiers, specifiers }, decr)
=
{ fun mk_type spc = { qualifiers => [], specifiers => [spc] };
fun add_qual q = { qualifiers => q ! qualifiers, specifiers };
case decr
VAR_DECR x => (type, THE x);
POINTER_DECR x
=>
ctype_decr_to_type_name (mk_type (POINTER type), x);
ARRAY_DECR (x, size)
=>
ctype_decr_to_type_name (mk_type (ARRAY (size, type)), x);
FUNC_DECR (x, lst)
=>
ctype_decr_to_type_name (mk_type (FUNCTION { ret_type => type, parameters => lst } ), x);
QUAL_DECR (q, decr)
=>
ctype_decr_to_type_name (add_qual q, decr);
EMPTY_DECR => (type, NULL);
ELLIPSES_DECR => (mk_type ELLIPSES, THE("**ellipses**"));
DECR_EXT _ => (type, NULL); # Should call decr extension?
MARKDECLARATOR(loc, decr) => ctype_decr_to_type_name(type, decr);
esac;
};
fun dclr2str dcl
=
case (ctype_decr_to_type_name ({ qualifiers => [], specifiers => [] }, dcl))
(_, THE s) => s;
(_, NULL) => "";
esac;
fun combine_decltypes ( { qualifiers => q1, storage => st1, specifiers => sp1 },
{ qualifiers => q2, storage => st2, specifiers => sp2 }
)
=
{ qualifiers => q1@q2, storage => st1@st2, specifiers => sp1@sp2 }; # @ ok
fun apply_pointer (POINTER_DECR x, rest) => POINTER_DECR (apply_pointer (x, rest));
apply_pointer (QUAL_DECR (q, x), rest) => QUAL_DECR (q, apply_pointer (x, rest));
apply_pointer (EMPTY_DECR, rest) => rest;
apply_pointer (_, rest) => rest;
end;
/* NCH/David B MacQueen[6/14/99]: this case can never occur */
fun add_storage (st, { qualifiers, storage, specifiers } )
=
{ qualifiers, storage => st ! storage, specifiers };
fun add_qualifiers (qs, { qualifiers, storage, specifiers } )
=
{ qualifiers => qs@qualifiers, storage, specifiers }; # @ ok
fun add_qualifier (q, { qualifiers, storage, specifiers } )
=
{ qualifiers => q ! qualifiers, storage, specifiers };
fun add_specifier (sp, { qualifiers, storage, specifiers } )
=
{ qualifiers, storage, specifiers => sp ! specifiers };
add_all = combine_decltypes;
fun loop_qd (q ! rst, acc) => loop_qd(rst, QUAL_DECR (q, acc));
loop_qd (NIL, acc) => acc;
end;
fun mk_ctype type = type;
# David B MacQueen: major kludge, using TYPEDEF as storage ilk
fun insert_decl_names ({ storage, ... }: Decltype, idl)
=
case storage
[TYPEDEF] => list::apply (fn x as (dcl, _) = type_defs::add_tdef (dclr2str dcl)) idl;
_ => list::apply (fn x as (dcl, _) = type_defs::add_no_tdef (dclr2str dcl)) idl;
esac;
fun insert_func_name dcl
=
{ name = dclr2str dcl;
type_defs::add_no_tdef name;
};
fun insert_func_params (FUNC_DECR (_, parameters)) : Void
=>
{ fun get_name (ct, dclr)
=
dclr2str dclr;
names = map get_name parameters;
list::apply type_defs::add_no_tdef names;
};
insert_func_params (ARRAY_DECR (dcl, _)) => insert_func_params dcl;
insert_func_params (POINTER_DECR dcl) => insert_func_params dcl;
insert_func_params _ => (); # This is actually an error, but it will be caught in
end; # BuildRawSyntaxTree when processing a xt::FUN
abstype Seq X = SEQ List(X)
with empty_seq = SEQ NIL;
fun singleton_seq x = SEQ [x];
fun add_to_seq (x, SEQ yl) = SEQ(x ! yl); # add to end of sequence!
# fun addListToEnd(xl, yl) = SEQ((list::reverse xl) @ yl);
fun add_opt_to_end (NULL, yl ) => yl;
add_opt_to_end (THE x, SEQ yl) => SEQ(x ! yl);
end;
fun seq_to_list (SEQ yl)
=
list::reverse yl;
end;
};
package lr_table = token::lr_table;
package token = token;
stipulate include lr_table; herein
my table={ action_rows =
"\
\\001\000\001\000\000\000\000\000\
\\001\000\002\000\169\000\004\000\070\000\022\000\042\000\026\000\041\000\
\\089\000\069\000\000\000\
\\001\000\002\000\174\000\004\000\043\000\022\000\042\000\026\000\041\000\
\\071\000\034\000\072\000\033\000\073\000\032\000\074\000\031\000\
\\075\000\030\000\076\000\029\000\077\000\028\000\080\000\027\000\
\\081\000\026\000\082\000\025\000\083\000\024\000\084\000\023\000\
\\089\000\021\000\000\000\
\\001\000\002\000\226\000\000\000\
\\001\000\002\000\075\001\011\000\178\000\000\000\
\\001\000\002\000\115\001\011\000\178\000\000\000\
\\001\000\003\000\083\002\006\000\130\002\011\000\083\002\027\000\139\000\
\\052\000\130\002\053\000\130\002\054\000\130\002\055\000\130\002\
\\056\000\130\002\057\000\130\002\071\000\130\002\072\000\130\002\
\\073\000\130\002\074\000\130\002\075\000\130\002\076\000\130\002\
\\077\000\130\002\080\000\130\002\081\000\130\002\082\000\130\002\
\\083\000\130\002\084\000\130\002\086\000\130\002\089\000\130\002\000\000\
\\001\000\003\000\087\002\006\000\131\002\011\000\087\002\027\000\135\000\
\\052\000\131\002\053\000\131\002\054\000\131\002\055\000\131\002\
\\056\000\131\002\057\000\131\002\071\000\131\002\072\000\131\002\
\\073\000\131\002\074\000\131\002\075\000\131\002\076\000\131\002\
\\077\000\131\002\080\000\131\002\081\000\131\002\082\000\131\002\
\\083\000\131\002\084\000\131\002\086\000\131\002\089\000\131\002\000\000\
\\001\000\003\000\048\000\000\000\
\\001\000\003\000\127\000\004\000\126\000\006\000\054\000\007\000\194\001\
\\014\000\125\000\016\000\124\000\018\000\123\000\019\000\122\000\
\\021\000\121\000\022\000\120\000\023\000\119\000\024\000\118\000\
\\026\000\117\000\048\000\116\000\049\000\115\000\050\000\114\000\
\\051\000\113\000\052\000\156\002\053\000\156\002\054\000\156\002\
\\055\000\156\002\056\000\156\002\057\000\156\002\058\000\112\000\
\\061\000\111\000\062\000\110\000\063\000\109\000\064\000\108\000\
\\065\000\107\000\066\000\106\000\067\000\105\000\068\000\104\000\
\\069\000\103\000\070\000\102\000\071\000\156\002\072\000\156\002\
\\073\000\156\002\074\000\156\002\075\000\156\002\076\000\156\002\
\\077\000\156\002\080\000\156\002\081\000\156\002\082\000\156\002\
\\083\000\156\002\084\000\156\002\085\000\101\000\086\000\156\002\
\\089\000\156\002\000\000\
\\001\000\003\000\127\000\004\000\126\000\006\000\054\000\014\000\125\000\
\\016\000\124\000\018\000\123\000\019\000\122\000\021\000\121\000\
\\022\000\120\000\023\000\119\000\024\000\118\000\026\000\117\000\
\\048\000\116\000\049\000\115\000\050\000\114\000\051\000\113\000\
\\058\000\112\000\061\000\111\000\062\000\110\000\063\000\109\000\
\\064\000\108\000\065\000\107\000\066\000\106\000\067\000\105\000\
\\068\000\104\000\069\000\103\000\070\000\102\000\085\000\101\000\000\000\
\\001\000\003\000\179\000\011\000\178\000\000\000\
\\001\000\003\000\221\000\000\000\
\\001\000\003\000\222\000\000\000\
\\001\000\003\000\021\001\011\000\020\001\000\000\
\\001\000\003\000\025\001\011\000\024\001\000\000\
\\001\000\003\000\071\001\000\000\
\\001\000\003\000\072\001\000\000\
\\001\000\003\000\124\001\000\000\
\\001\000\003\000\159\001\000\000\
\\001\000\003\000\161\001\000\000\
\\001\000\004\000\043\000\022\000\042\000\026\000\041\000\000\000\
\\001\000\004\000\043\000\022\000\042\000\026\000\041\000\052\000\040\000\
\\053\000\039\000\054\000\038\000\055\000\037\000\056\000\036\000\
\\057\000\035\000\071\000\034\000\072\000\033\000\073\000\032\000\
\\074\000\031\000\075\000\030\000\076\000\029\000\077\000\028\000\
\\080\000\027\000\081\000\026\000\082\000\025\000\083\000\024\000\
\\084\000\023\000\086\000\022\000\089\000\021\000\000\000\
\\001\000\004\000\043\000\026\000\041\000\000\000\
\\001\000\004\000\070\000\022\000\042\000\026\000\041\000\089\000\069\000\000\000\
\\001\000\004\000\070\000\026\000\041\000\089\000\069\000\000\000\
\\001\000\004\000\126\000\005\000\069\001\014\000\125\000\016\000\124\000\
\\018\000\123\000\019\000\122\000\021\000\121\000\022\000\120\000\
\\023\000\119\000\024\000\118\000\026\000\144\000\048\000\116\000\
\\049\000\115\000\050\000\114\000\051\000\113\000\085\000\101\000\000\000\
\\001\000\004\000\126\000\006\000\242\000\014\000\125\000\016\000\124\000\
\\018\000\123\000\019\000\122\000\021\000\121\000\022\000\120\000\
\\023\000\119\000\024\000\118\000\026\000\144\000\048\000\116\000\
\\049\000\115\000\050\000\114\000\051\000\113\000\085\000\101\000\000\000\
\\001\000\004\000\126\000\009\000\145\000\014\000\125\000\016\000\124\000\
\\018\000\123\000\019\000\122\000\021\000\121\000\022\000\120\000\
\\023\000\119\000\024\000\118\000\026\000\144\000\048\000\116\000\
\\049\000\115\000\050\000\114\000\051\000\113\000\085\000\101\000\000\000\
\\001\000\004\000\126\000\009\000\245\000\014\000\125\000\016\000\124\000\
\\018\000\123\000\019\000\122\000\021\000\121\000\022\000\120\000\
\\023\000\119\000\024\000\118\000\026\000\144\000\048\000\116\000\
\\049\000\115\000\050\000\114\000\051\000\113\000\085\000\101\000\000\000\
\\001\000\004\000\126\000\009\000\098\001\014\000\125\000\016\000\124\000\
\\018\000\123\000\019\000\122\000\021\000\121\000\022\000\120\000\
\\023\000\119\000\024\000\118\000\026\000\144\000\048\000\116\000\
\\049\000\115\000\050\000\114\000\051\000\113\000\085\000\101\000\000\000\
\\001\000\004\000\126\000\009\000\130\001\014\000\125\000\016\000\124\000\
\\018\000\123\000\019\000\122\000\021\000\121\000\022\000\120\000\
\\023\000\119\000\024\000\118\000\026\000\144\000\048\000\116\000\
\\049\000\115\000\050\000\114\000\051\000\113\000\085\000\101\000\000\000\
\\001\000\004\000\126\000\009\000\137\001\014\000\125\000\016\000\124\000\
\\018\000\123\000\019\000\122\000\021\000\121\000\022\000\120\000\
\\023\000\119\000\024\000\118\000\026\000\144\000\048\000\116\000\
\\049\000\115\000\050\000\114\000\051\000\113\000\085\000\101\000\000\000\
\\001\000\004\000\126\000\014\000\125\000\016\000\124\000\018\000\123\000\
\\019\000\122\000\021\000\121\000\022\000\120\000\023\000\119\000\
\\024\000\118\000\026\000\144\000\048\000\116\000\049\000\115\000\
\\050\000\114\000\051\000\113\000\056\000\036\000\057\000\035\000\
\\071\000\034\000\072\000\033\000\073\000\032\000\074\000\031\000\
\\075\000\030\000\076\000\029\000\077\000\028\000\080\000\027\000\
\\081\000\026\000\082\000\025\000\083\000\024\000\084\000\023\000\
\\085\000\101\000\089\000\021\000\000\000\
\\001\000\004\000\126\000\014\000\125\000\016\000\124\000\018\000\123\000\
\\019\000\122\000\021\000\121\000\022\000\120\000\023\000\119\000\
\\024\000\118\000\026\000\144\000\048\000\116\000\049\000\115\000\
\\050\000\114\000\051\000\113\000\085\000\101\000\000\000\
\\001\000\004\000\215\000\008\000\214\000\009\000\252\000\010\000\213\000\
\\012\000\212\000\013\000\211\000\014\000\210\000\015\000\209\000\
\\017\000\208\000\018\000\207\000\019\000\206\000\020\000\205\000\
\\022\000\204\000\023\000\203\000\024\000\202\000\025\000\201\000\
\\027\000\200\000\028\000\199\000\029\000\198\000\030\000\197\000\
\\031\000\196\000\032\000\195\000\033\000\194\000\034\000\193\000\
\\035\000\192\000\036\000\191\000\037\000\190\000\038\000\189\000\
\\039\000\188\000\040\000\187\000\041\000\186\000\042\000\185\000\
\\043\000\184\000\044\000\183\000\045\000\182\000\046\000\181\000\
\\047\000\180\000\000\000\
\\001\000\004\000\215\000\008\000\214\000\009\000\088\001\010\000\213\000\
\\012\000\212\000\013\000\211\000\014\000\210\000\015\000\209\000\
\\017\000\208\000\018\000\207\000\019\000\206\000\020\000\205\000\
\\022\000\204\000\023\000\203\000\024\000\202\000\025\000\201\000\
\\027\000\200\000\028\000\199\000\029\000\198\000\030\000\197\000\
\\031\000\196\000\032\000\195\000\033\000\194\000\034\000\193\000\
\\035\000\192\000\036\000\191\000\037\000\190\000\038\000\189\000\
\\039\000\188\000\040\000\187\000\041\000\186\000\042\000\185\000\
\\043\000\184\000\044\000\183\000\045\000\182\000\046\000\181\000\
\\047\000\180\000\000\000\
\\001\000\004\000\215\000\008\000\214\000\009\000\133\001\010\000\213\000\
\\012\000\212\000\013\000\211\000\014\000\210\000\015\000\209\000\
\\017\000\208\000\018\000\207\000\019\000\206\000\020\000\205\000\
\\022\000\204\000\023\000\203\000\024\000\202\000\025\000\201\000\
\\027\000\200\000\028\000\199\000\029\000\198\000\030\000\197\000\
\\031\000\196\000\032\000\195\000\033\000\194\000\034\000\193\000\
\\035\000\192\000\036\000\191\000\037\000\190\000\038\000\189\000\
\\039\000\188\000\040\000\187\000\041\000\186\000\042\000\185\000\
\\043\000\184\000\044\000\183\000\045\000\182\000\046\000\181\000\
\\047\000\180\000\000\000\
\\001\000\004\000\215\000\008\000\214\000\009\000\153\001\010\000\213\000\
\\012\000\212\000\013\000\211\000\014\000\210\000\015\000\209\000\
\\017\000\208\000\018\000\207\000\019\000\206\000\020\000\205\000\
\\022\000\204\000\023\000\203\000\024\000\202\000\025\000\201\000\
\\027\000\200\000\028\000\199\000\029\000\198\000\030\000\197\000\
\\031\000\196\000\032\000\195\000\033\000\194\000\034\000\193\000\
\\035\000\192\000\036\000\191\000\037\000\190\000\038\000\189\000\
\\039\000\188\000\040\000\187\000\041\000\186\000\042\000\185\000\
\\043\000\184\000\044\000\183\000\045\000\182\000\046\000\181\000\
\\047\000\180\000\000\000\
\\001\000\004\000\215\000\008\000\214\000\009\000\155\001\010\000\213\000\
\\012\000\212\000\013\000\211\000\014\000\210\000\015\000\209\000\
\\017\000\208\000\018\000\207\000\019\000\206\000\020\000\205\000\
\\022\000\204\000\023\000\203\000\024\000\202\000\025\000\201\000\
\\027\000\200\000\028\000\199\000\029\000\198\000\030\000\197\000\
\\031\000\196\000\032\000\195\000\033\000\194\000\034\000\193\000\
\\035\000\192\000\036\000\191\000\037\000\190\000\038\000\189\000\
\\039\000\188\000\040\000\187\000\041\000\186\000\042\000\185\000\
\\043\000\184\000\044\000\183\000\045\000\182\000\046\000\181\000\
\\047\000\180\000\000\000\
\\001\000\004\000\219\000\014\000\125\000\016\000\124\000\018\000\123\000\
\\019\000\122\000\021\000\121\000\022\000\120\000\023\000\119\000\
\\024\000\118\000\026\000\144\000\048\000\116\000\049\000\115\000\
\\050\000\114\000\051\000\113\000\085\000\101\000\000\000\
\\001\000\004\000\225\000\000\000\
\\001\000\004\000\228\000\000\000\
\\001\000\004\000\230\000\000\000\
\\001\000\004\000\231\000\000\000\
\\001\000\004\000\006\001\005\000\101\001\008\000\005\001\022\000\042\000\
\\026\000\041\000\052\000\040\000\053\000\039\000\054\000\038\000\
\\055\000\037\000\056\000\036\000\057\000\035\000\071\000\034\000\
\\072\000\033\000\073\000\032\000\074\000\031\000\075\000\030\000\
\\076\000\029\000\077\000\028\000\080\000\027\000\081\000\026\000\
\\082\000\025\000\083\000\024\000\084\000\023\000\086\000\022\000\
\\089\000\021\000\000\000\
\\001\000\004\000\006\001\008\000\005\001\022\000\042\000\026\000\041\000\
\\052\000\040\000\053\000\039\000\054\000\038\000\055\000\037\000\
\\056\000\036\000\057\000\035\000\071\000\034\000\072\000\033\000\
\\073\000\032\000\074\000\031\000\075\000\030\000\076\000\029\000\
\\077\000\028\000\080\000\027\000\081\000\026\000\082\000\025\000\
\\083\000\024\000\084\000\023\000\086\000\022\000\089\000\021\000\000\000\
\\001\000\004\000\083\001\005\000\101\001\008\000\005\001\022\000\042\000\
\\052\000\040\000\053\000\039\000\054\000\038\000\055\000\037\000\
\\056\000\036\000\057\000\035\000\071\000\034\000\072\000\033\000\
\\073\000\032\000\074\000\031\000\075\000\030\000\076\000\029\000\
\\077\000\028\000\080\000\027\000\081\000\026\000\082\000\025\000\
\\083\000\024\000\084\000\023\000\086\000\022\000\089\000\021\000\000\000\
\\001\000\004\000\123\001\000\000\
\\001\000\005\000\153\000\026\000\152\000\052\000\040\000\053\000\039\000\
\\054\000\038\000\055\000\037\000\056\000\036\000\057\000\035\000\
\\071\000\034\000\072\000\033\000\073\000\032\000\074\000\031\000\
\\075\000\030\000\076\000\029\000\077\000\028\000\080\000\027\000\
\\081\000\026\000\082\000\025\000\083\000\024\000\084\000\023\000\
\\086\000\022\000\089\000\021\000\000\000\
\\001\000\005\000\161\000\000\000\
\\001\000\005\000\248\000\026\000\152\000\052\000\040\000\053\000\039\000\
\\054\000\038\000\055\000\037\000\056\000\036\000\057\000\035\000\
\\071\000\034\000\072\000\033\000\073\000\032\000\074\000\031\000\
\\075\000\030\000\076\000\029\000\077\000\028\000\080\000\027\000\
\\081\000\026\000\082\000\025\000\083\000\024\000\084\000\023\000\
\\086\000\022\000\089\000\021\000\000\000\
\\001\000\005\000\251\000\000\000\
\\001\000\005\000\253\000\000\000\
\\001\000\005\000\000\001\011\000\255\000\000\000\
\\001\000\005\000\084\001\000\000\
\\001\000\005\000\085\001\011\000\178\000\000\000\
\\001\000\005\000\089\001\000\000\
\\001\000\005\000\090\001\011\000\255\000\000\000\
\\001\000\005\000\118\001\011\000\117\001\000\000\
\\001\000\005\000\119\001\000\000\
\\001\000\005\000\120\001\011\000\178\000\000\000\
\\001\000\005\000\122\001\011\000\178\000\000\000\
\\001\000\005\000\125\001\011\000\178\000\000\000\
\\001\000\005\000\132\001\052\000\040\000\053\000\039\000\054\000\038\000\
\\055\000\037\000\056\000\036\000\057\000\035\000\071\000\034\000\
\\072\000\033\000\073\000\032\000\074\000\031\000\075\000\030\000\
\\076\000\029\000\077\000\028\000\080\000\027\000\081\000\026\000\
\\082\000\025\000\083\000\024\000\084\000\023\000\086\000\022\000\
\\089\000\021\000\000\000\
\\001\000\005\000\134\001\000\000\
\\001\000\005\000\135\001\000\000\
\\001\000\005\000\140\001\026\000\152\000\052\000\040\000\053\000\039\000\
\\054\000\038\000\055\000\037\000\056\000\036\000\057\000\035\000\
\\071\000\034\000\072\000\033\000\073\000\032\000\074\000\031\000\
\\075\000\030\000\076\000\029\000\077\000\028\000\080\000\027\000\
\\081\000\026\000\082\000\025\000\083\000\024\000\084\000\023\000\
\\086\000\022\000\089\000\021\000\000\000\
\\001\000\005\000\154\001\000\000\
\\001\000\005\000\156\001\000\000\
\\001\000\005\000\157\001\011\000\255\000\000\000\
\\001\000\005\000\158\001\011\000\178\000\000\000\
\\001\000\005\000\164\001\000\000\
\\001\000\006\000\047\000\026\000\046\000\089\000\045\000\000\000\
\\001\000\006\000\054\000\052\000\040\000\053\000\039\000\054\000\038\000\
\\055\000\037\000\056\000\036\000\057\000\035\000\071\000\034\000\
\\072\000\033\000\073\000\032\000\074\000\031\000\075\000\030\000\
\\076\000\029\000\077\000\028\000\080\000\027\000\081\000\026\000\
\\082\000\025\000\083\000\024\000\084\000\023\000\086\000\022\000\
\\089\000\021\000\000\000\
\\001\000\006\000\076\000\026\000\075\000\089\000\074\000\000\000\
\\001\000\007\000\165\000\056\000\036\000\057\000\035\000\071\000\034\000\
\\072\000\033\000\073\000\032\000\074\000\031\000\075\000\030\000\
\\076\000\029\000\077\000\028\000\080\000\027\000\081\000\026\000\
\\082\000\025\000\083\000\024\000\084\000\023\000\089\000\021\000\000\000\
\\001\000\007\000\217\000\000\000\
\\001\000\007\000\018\001\056\000\036\000\057\000\035\000\071\000\034\000\
\\072\000\033\000\073\000\032\000\074\000\031\000\075\000\030\000\
\\076\000\029\000\077\000\028\000\080\000\027\000\081\000\026\000\
\\082\000\025\000\083\000\024\000\084\000\023\000\089\000\021\000\000\000\
\\001\000\007\000\019\001\056\000\036\000\057\000\035\000\071\000\034\000\
\\072\000\033\000\073\000\032\000\074\000\031\000\075\000\030\000\
\\076\000\029\000\077\000\028\000\080\000\027\000\081\000\026\000\
\\082\000\025\000\083\000\024\000\084\000\023\000\089\000\021\000\000\000\
\\001\000\007\000\107\001\000\000\
\\001\000\007\000\141\001\000\000\
\\001\000\007\000\142\001\000\000\
\\001\000\007\000\143\001\000\000\
\\001\000\007\000\151\001\000\000\
\\001\000\009\000\116\001\011\000\178\000\000\000\
\\001\000\026\000\158\000\000\000\
\\001\000\026\000\220\000\000\000\
\\001\000\026\000\054\001\089\000\053\001\000\000\
\\001\000\026\000\065\001\089\000\064\001\000\000\
\\001\000\026\000\093\001\000\000\
\\001\000\052\000\040\000\053\000\039\000\054\000\038\000\055\000\037\000\
\\056\000\036\000\057\000\035\000\071\000\034\000\072\000\033\000\
\\073\000\032\000\074\000\031\000\075\000\030\000\076\000\029\000\
\\077\000\028\000\080\000\027\000\081\000\026\000\082\000\025\000\
\\083\000\024\000\084\000\023\000\086\000\022\000\088\000\092\001\
\\089\000\021\000\000\000\
\\001\000\052\000\040\000\053\000\039\000\054\000\038\000\055\000\037\000\
\\056\000\036\000\057\000\035\000\071\000\034\000\072\000\033\000\
\\073\000\032\000\074\000\031\000\075\000\030\000\076\000\029\000\
\\077\000\028\000\080\000\027\000\081\000\026\000\082\000\025\000\
\\083\000\024\000\084\000\023\000\086\000\022\000\089\000\021\000\000\000\
\\001\000\056\000\036\000\057\000\035\000\071\000\034\000\072\000\033\000\
\\073\000\032\000\074\000\031\000\075\000\030\000\076\000\029\000\
\\077\000\028\000\080\000\027\000\081\000\026\000\082\000\025\000\
\\083\000\024\000\084\000\023\000\089\000\021\000\000\000\
\\001\000\066\000\077\001\000\000\
\\001\000\071\000\034\000\072\000\033\000\073\000\032\000\074\000\031\000\
\\075\000\030\000\076\000\029\000\077\000\028\000\080\000\027\000\
\\081\000\026\000\082\000\025\000\083\000\024\000\084\000\023\000\
\\089\000\021\000\000\000\
\\167\001\003\000\044\000\004\000\043\000\022\000\042\000\026\000\041\000\
\\052\000\040\000\053\000\039\000\054\000\038\000\055\000\037\000\
\\056\000\036\000\057\000\035\000\071\000\034\000\072\000\033\000\
\\073\000\032\000\074\000\031\000\075\000\030\000\076\000\029\000\
\\077\000\028\000\080\000\027\000\081\000\026\000\082\000\025\000\
\\083\000\024\000\084\000\023\000\086\000\022\000\089\000\021\000\000\000\
\\168\001\000\000\
\\169\001\000\000\
\\170\001\000\000\
\\171\001\000\000\
\\172\001\000\000\
\\173\001\000\000\
\\174\001\000\000\
\\175\001\000\000\
\\176\001\000\000\
\\177\001\000\000\
\\178\001\000\000\
\\179\001\000\000\
\\180\001\000\000\
\\181\001\000\000\
\\182\001\000\000\
\\183\001\000\000\
\\184\001\000\000\
\\185\001\060\000\160\001\000\000\
\\186\001\000\000\
\\187\001\000\000\
\\188\001\000\000\
\\189\001\000\000\
\\190\001\004\000\070\000\022\000\042\000\026\000\041\000\089\000\069\000\000\000\
\\191\001\011\000\141\000\000\000\
\\192\001\011\000\136\000\000\000\
\\193\001\003\000\127\000\004\000\126\000\006\000\054\000\014\000\125\000\
\\016\000\124\000\018\000\123\000\019\000\122\000\021\000\121\000\
\\022\000\120\000\023\000\119\000\024\000\118\000\026\000\117\000\
\\048\000\116\000\049\000\115\000\050\000\114\000\051\000\113\000\
\\058\000\112\000\061\000\111\000\062\000\110\000\063\000\109\000\
\\064\000\108\000\065\000\107\000\066\000\106\000\067\000\105\000\
\\068\000\104\000\069\000\103\000\070\000\102\000\085\000\101\000\000\000\
\\194\001\003\000\127\000\004\000\126\000\006\000\054\000\014\000\125\000\
\\016\000\124\000\018\000\123\000\019\000\122\000\021\000\121\000\
\\022\000\120\000\023\000\119\000\024\000\118\000\026\000\117\000\
\\048\000\116\000\049\000\115\000\050\000\114\000\051\000\113\000\
\\052\000\040\000\053\000\039\000\054\000\038\000\055\000\037\000\
\\056\000\036\000\057\000\035\000\058\000\112\000\061\000\111\000\
\\062\000\110\000\063\000\109\000\064\000\108\000\065\000\107\000\
\\066\000\106\000\067\000\105\000\068\000\104\000\069\000\103\000\
\\070\000\102\000\071\000\034\000\072\000\033\000\073\000\032\000\
\\074\000\031\000\075\000\030\000\076\000\029\000\077\000\028\000\
\\080\000\027\000\081\000\026\000\082\000\025\000\083\000\024\000\
\\084\000\023\000\085\000\101\000\086\000\022\000\089\000\021\000\000\000\
\\195\001\000\000\
\\196\001\000\000\
\\197\001\000\000\
\\198\001\000\000\
\\199\001\000\000\
\\200\001\000\000\
\\201\001\000\000\
\\202\001\000\000\
\\203\001\000\000\
\\204\001\000\000\
\\205\001\004\000\215\000\008\000\214\000\010\000\213\000\012\000\212\000\
\\013\000\211\000\014\000\210\000\015\000\209\000\017\000\208\000\
\\018\000\207\000\019\000\206\000\020\000\205\000\022\000\204\000\
\\023\000\203\000\024\000\202\000\025\000\201\000\038\000\189\000\
\\039\000\188\000\040\000\187\000\041\000\186\000\042\000\185\000\
\\043\000\184\000\044\000\183\000\045\000\182\000\046\000\181\000\
\\047\000\180\000\000\000\
\\206\001\004\000\215\000\008\000\214\000\010\000\213\000\012\000\212\000\
\\013\000\211\000\014\000\210\000\015\000\209\000\017\000\208\000\
\\018\000\207\000\019\000\206\000\020\000\205\000\022\000\204\000\
\\023\000\203\000\024\000\202\000\025\000\201\000\027\000\200\000\
\\028\000\199\000\029\000\198\000\030\000\197\000\031\000\196\000\
\\032\000\195\000\033\000\194\000\034\000\193\000\035\000\192\000\
\\036\000\191\000\037\000\190\000\038\000\189\000\039\000\188\000\
\\040\000\187\000\041\000\186\000\042\000\185\000\043\000\184\000\
\\044\000\183\000\045\000\182\000\046\000\181\000\047\000\180\000\000\000\
\\207\001\004\000\215\000\008\000\214\000\010\000\213\000\012\000\212\000\
\\013\000\211\000\014\000\210\000\015\000\209\000\017\000\208\000\
\\018\000\207\000\019\000\206\000\020\000\205\000\022\000\204\000\
\\023\000\203\000\024\000\202\000\025\000\201\000\027\000\200\000\
\\028\000\199\000\029\000\198\000\030\000\197\000\031\000\196\000\
\\032\000\195\000\033\000\194\000\034\000\193\000\035\000\192\000\
\\036\000\191\000\037\000\190\000\038\000\189\000\039\000\188\000\
\\040\000\187\000\041\000\186\000\042\000\185\000\043\000\184\000\
\\044\000\183\000\045\000\182\000\046\000\181\000\047\000\180\000\000\000\
\\208\001\004\000\215\000\008\000\214\000\010\000\213\000\012\000\212\000\
\\013\000\211\000\014\000\210\000\015\000\209\000\017\000\208\000\
\\018\000\207\000\019\000\206\000\020\000\205\000\022\000\204\000\
\\023\000\203\000\024\000\202\000\025\000\201\000\027\000\200\000\
\\028\000\199\000\029\000\198\000\030\000\197\000\031\000\196\000\
\\032\000\195\000\033\000\194\000\034\000\193\000\035\000\192\000\
\\036\000\191\000\037\000\190\000\038\000\189\000\039\000\188\000\
\\040\000\187\000\041\000\186\000\042\000\185\000\043\000\184\000\
\\044\000\183\000\045\000\182\000\046\000\181\000\047\000\180\000\000\000\
\\209\001\004\000\215\000\008\000\214\000\010\000\213\000\012\000\212\000\
\\013\000\211\000\014\000\210\000\015\000\209\000\017\000\208\000\
\\018\000\207\000\019\000\206\000\020\000\205\000\022\000\204\000\
\\023\000\203\000\024\000\202\000\025\000\201\000\027\000\200\000\
\\028\000\199\000\029\000\198\000\030\000\197\000\031\000\196\000\
\\032\000\195\000\033\000\194\000\034\000\193\000\035\000\192\000\
\\036\000\191\000\037\000\190\000\038\000\189\000\039\000\188\000\
\\040\000\187\000\041\000\186\000\042\000\185\000\043\000\184\000\
\\044\000\183\000\045\000\182\000\046\000\181\000\047\000\180\000\000\000\
\\210\001\004\000\215\000\008\000\214\000\010\000\213\000\012\000\212\000\
\\013\000\211\000\014\000\210\000\015\000\209\000\017\000\208\000\
\\018\000\207\000\019\000\206\000\020\000\205\000\022\000\204\000\
\\023\000\203\000\024\000\202\000\025\000\201\000\027\000\200\000\
\\028\000\199\000\029\000\198\000\030\000\197\000\031\000\196\000\
\\032\000\195\000\033\000\194\000\034\000\193\000\035\000\192\000\
\\036\000\191\000\037\000\190\000\038\000\189\000\039\000\188\000\
\\040\000\187\000\041\000\186\000\042\000\185\000\043\000\184\000\
\\044\000\183\000\045\000\182\000\046\000\181\000\047\000\180\000\000\000\
\\211\001\004\000\215\000\008\000\214\000\010\000\213\000\012\000\212\000\
\\013\000\211\000\014\000\210\000\015\000\209\000\017\000\208\000\
\\018\000\207\000\019\000\206\000\020\000\205\000\022\000\204\000\
\\023\000\203\000\024\000\202\000\025\000\201\000\027\000\200\000\
\\028\000\199\000\029\000\198\000\030\000\197\000\031\000\196\000\
\\032\000\195\000\033\000\194\000\034\000\193\000\035\000\192\000\
\\036\000\191\000\037\000\190\000\038\000\189\000\039\000\188\000\
\\040\000\187\000\041\000\186\000\042\000\185\000\043\000\184\000\
\\044\000\183\000\045\000\182\000\046\000\181\000\047\000\180\000\000\000\
\\212\001\004\000\215\000\008\000\214\000\010\000\213\000\012\000\212\000\
\\013\000\211\000\014\000\210\000\015\000\209\000\017\000\208\000\
\\018\000\207\000\019\000\206\000\020\000\205\000\022\000\204\000\
\\023\000\203\000\024\000\202\000\025\000\201\000\027\000\200\000\
\\028\000\199\000\029\000\198\000\030\000\197\000\031\000\196\000\
\\032\000\195\000\033\000\194\000\034\000\193\000\035\000\192\000\
\\036\000\191\000\037\000\190\000\038\000\189\000\039\000\188\000\
\\040\000\187\000\041\000\186\000\042\000\185\000\043\000\184\000\
\\044\000\183\000\045\000\182\000\046\000\181\000\047\000\180\000\000\000\
\\213\001\004\000\215\000\008\000\214\000\010\000\213\000\012\000\212\000\
\\013\000\211\000\014\000\210\000\015\000\209\000\017\000\208\000\
\\018\000\207\000\019\000\206\000\020\000\205\000\022\000\204\000\
\\023\000\203\000\024\000\202\000\025\000\201\000\027\000\200\000\
\\028\000\199\000\029\000\198\000\030\000\197\000\031\000\196\000\
\\032\000\195\000\033\000\194\000\034\000\193\000\035\000\192\000\
\\036\000\191\000\037\000\190\000\038\000\189\000\039\000\188\000\
\\040\000\187\000\041\000\186\000\042\000\185\000\043\000\184\000\
\\044\000\183\000\045\000\182\000\046\000\181\000\047\000\180\000\000\000\
\\214\001\004\000\215\000\008\000\214\000\010\000\213\000\012\000\212\000\
\\013\000\211\000\014\000\210\000\015\000\209\000\017\000\208\000\
\\018\000\207\000\019\000\206\000\020\000\205\000\022\000\204\000\
\\023\000\203\000\024\000\202\000\025\000\201\000\027\000\200\000\
\\028\000\199\000\029\000\198\000\030\000\197\000\031\000\196\000\
\\032\000\195\000\033\000\194\000\034\000\193\000\035\000\192\000\
\\036\000\191\000\037\000\190\000\038\000\189\000\039\000\188\000\
\\040\000\187\000\041\000\186\000\042\000\185\000\043\000\184\000\
\\044\000\183\000\045\000\182\000\046\000\181\000\047\000\180\000\000\000\
\\215\001\004\000\215\000\008\000\214\000\010\000\213\000\012\000\212\000\
\\013\000\211\000\014\000\210\000\015\000\209\000\017\000\208\000\
\\018\000\207\000\019\000\206\000\020\000\205\000\022\000\204\000\
\\023\000\203\000\024\000\202\000\025\000\201\000\027\000\200\000\
\\028\000\199\000\029\000\198\000\030\000\197\000\031\000\196\000\
\\032\000\195\000\033\000\194\000\034\000\193\000\035\000\192\000\
\\036\000\191\000\037\000\190\000\038\000\189\000\039\000\188\000\
\\040\000\187\000\041\000\186\000\042\000\185\000\043\000\184\000\
\\044\000\183\000\045\000\182\000\046\000\181\000\047\000\180\000\000\000\
\\216\001\004\000\215\000\008\000\214\000\010\000\213\000\012\000\212\000\
\\013\000\211\000\014\000\210\000\015\000\209\000\017\000\208\000\
\\018\000\207\000\019\000\206\000\020\000\205\000\022\000\204\000\
\\023\000\203\000\024\000\202\000\025\000\201\000\027\000\200\000\
\\028\000\199\000\029\000\198\000\030\000\197\000\031\000\196\000\
\\032\000\195\000\033\000\194\000\034\000\193\000\035\000\192\000\
\\036\000\191\000\037\000\190\000\038\000\189\000\039\000\188\000\
\\040\000\187\000\041\000\186\000\042\000\185\000\043\000\184\000\
\\044\000\183\000\045\000\182\000\046\000\181\000\047\000\180\000\000\000\
\\217\001\004\000\215\000\008\000\214\000\010\000\213\000\013\000\211\000\
\\014\000\210\000\015\000\209\000\017\000\208\000\018\000\207\000\
\\019\000\206\000\020\000\205\000\022\000\204\000\023\000\203\000\
\\024\000\202\000\025\000\201\000\038\000\189\000\039\000\188\000\
\\040\000\187\000\041\000\186\000\042\000\185\000\043\000\184\000\
\\045\000\182\000\046\000\181\000\047\000\180\000\000\000\
\\218\001\004\000\215\000\008\000\214\000\010\000\213\000\013\000\211\000\
\\014\000\210\000\015\000\209\000\017\000\208\000\018\000\207\000\
\\019\000\206\000\020\000\205\000\022\000\204\000\023\000\203\000\
\\024\000\202\000\025\000\201\000\038\000\189\000\039\000\188\000\
\\040\000\187\000\041\000\186\000\042\000\185\000\043\000\184\000\
\\046\000\181\000\047\000\180\000\000\000\
\\219\001\004\000\215\000\008\000\214\000\010\000\213\000\013\000\211\000\
\\014\000\210\000\017\000\208\000\018\000\207\000\019\000\206\000\
\\020\000\205\000\022\000\204\000\023\000\203\000\024\000\202\000\
\\025\000\201\000\038\000\189\000\039\000\188\000\040\000\187\000\
\\041\000\186\000\042\000\185\000\043\000\184\000\046\000\181\000\
\\047\000\180\000\000\000\
\\220\001\004\000\215\000\008\000\214\000\010\000\213\000\013\000\211\000\
\\014\000\210\000\017\000\208\000\018\000\207\000\019\000\206\000\
\\022\000\204\000\023\000\203\000\024\000\202\000\025\000\201\000\
\\038\000\189\000\039\000\188\000\040\000\187\000\041\000\186\000\
\\042\000\185\000\043\000\184\000\046\000\181\000\047\000\180\000\000\000\
\\221\001\004\000\215\000\008\000\214\000\010\000\213\000\013\000\211\000\
\\017\000\208\000\018\000\207\000\019\000\206\000\022\000\204\000\
\\023\000\203\000\024\000\202\000\025\000\201\000\038\000\189\000\
\\039\000\188\000\040\000\187\000\041\000\186\000\042\000\185\000\
\\043\000\184\000\046\000\181\000\047\000\180\000\000\000\
\\222\001\004\000\215\000\008\000\214\000\010\000\213\000\013\000\211\000\
\\017\000\208\000\018\000\207\000\019\000\206\000\022\000\204\000\
\\023\000\203\000\024\000\202\000\025\000\201\000\038\000\189\000\
\\039\000\188\000\040\000\187\000\041\000\186\000\046\000\181\000\
\\047\000\180\000\000\000\
\\223\001\004\000\215\000\008\000\214\000\010\000\213\000\013\000\211\000\
\\017\000\208\000\018\000\207\000\019\000\206\000\022\000\204\000\
\\023\000\203\000\024\000\202\000\025\000\201\000\038\000\189\000\
\\039\000\188\000\040\000\187\000\041\000\186\000\046\000\181\000\
\\047\000\180\000\000\000\
\\224\001\004\000\215\000\008\000\214\000\010\000\213\000\013\000\211\000\
\\017\000\208\000\018\000\207\000\019\000\206\000\022\000\204\000\
\\023\000\203\000\024\000\202\000\025\000\201\000\046\000\181\000\
\\047\000\180\000\000\000\
\\225\001\004\000\215\000\008\000\214\000\010\000\213\000\013\000\211\000\
\\017\000\208\000\018\000\207\000\019\000\206\000\022\000\204\000\
\\023\000\203\000\024\000\202\000\025\000\201\000\046\000\181\000\
\\047\000\180\000\000\000\
\\226\001\004\000\215\000\008\000\214\000\010\000\213\000\013\000\211\000\
\\017\000\208\000\018\000\207\000\019\000\206\000\022\000\204\000\
\\023\000\203\000\024\000\202\000\025\000\201\000\046\000\181\000\
\\047\000\180\000\000\000\
\\227\001\004\000\215\000\008\000\214\000\010\000\213\000\013\000\211\000\
\\017\000\208\000\018\000\207\000\019\000\206\000\022\000\204\000\
\\023\000\203\000\024\000\202\000\025\000\201\000\046\000\181\000\
\\047\000\180\000\000\000\
\\228\001\004\000\215\000\008\000\214\000\010\000\213\000\013\000\211\000\
\\017\000\208\000\018\000\207\000\019\000\206\000\022\000\204\000\
\\023\000\203\000\024\000\202\000\025\000\201\000\000\000\
\\229\001\004\000\215\000\008\000\214\000\010\000\213\000\013\000\211\000\
\\017\000\208\000\018\000\207\000\019\000\206\000\022\000\204\000\
\\023\000\203\000\024\000\202\000\025\000\201\000\000\000\
\\230\001\004\000\215\000\008\000\214\000\010\000\213\000\013\000\211\000\
\\017\000\208\000\022\000\204\000\023\000\203\000\024\000\202\000\
\\025\000\201\000\000\000\
\\231\001\004\000\215\000\008\000\214\000\010\000\213\000\013\000\211\000\
\\017\000\208\000\022\000\204\000\023\000\203\000\024\000\202\000\
\\025\000\201\000\000\000\
\\232\001\004\000\215\000\008\000\214\000\010\000\213\000\023\000\203\000\
\\024\000\202\000\025\000\201\000\000\000\
\\233\001\004\000\215\000\008\000\214\000\010\000\213\000\023\000\203\000\
\\024\000\202\000\025\000\201\000\000\000\
\\234\001\004\000\215\000\008\000\214\000\010\000\213\000\023\000\203\000\
\\024\000\202\000\025\000\201\000\000\000\
\\235\001\000\000\
\\236\001\000\000\
\\237\001\004\000\215\000\008\000\214\000\010\000\213\000\023\000\203\000\
\\024\000\202\000\025\000\201\000\000\000\
\\238\001\004\000\215\000\008\000\214\000\010\000\213\000\023\000\203\000\
\\024\000\202\000\025\000\201\000\000\000\
\\239\001\004\000\215\000\008\000\214\000\010\000\213\000\023\000\203\000\
\\024\000\202\000\025\000\201\000\000\000\
\\240\001\004\000\215\000\008\000\214\000\010\000\213\000\023\000\203\000\
\\024\000\202\000\025\000\201\000\000\000\
\\241\001\004\000\215\000\008\000\214\000\010\000\213\000\023\000\203\000\
\\024\000\202\000\025\000\201\000\000\000\
\\242\001\004\000\126\000\016\000\124\000\021\000\121\000\023\000\119\000\
\\024\000\118\000\026\000\144\000\048\000\116\000\049\000\115\000\
\\050\000\114\000\051\000\113\000\085\000\101\000\000\000\
\\243\001\000\000\
\\244\001\000\000\
\\245\001\000\000\
\\246\001\000\000\
\\247\001\000\000\
\\248\001\000\000\
\\249\001\000\000\
\\250\001\000\000\
\\251\001\000\000\
\\252\001\000\000\
\\253\001\000\000\
\\254\001\000\000\
\\254\001\002\000\233\000\000\000\
\\255\001\000\000\
\\000\002\050\000\114\000\000\000\
\\001\002\000\000\
\\002\002\004\000\215\000\008\000\214\000\010\000\213\000\012\000\212\000\
\\013\000\211\000\014\000\210\000\015\000\209\000\017\000\208\000\
\\018\000\207\000\019\000\206\000\020\000\205\000\022\000\204\000\
\\023\000\203\000\024\000\202\000\025\000\201\000\027\000\200\000\
\\028\000\199\000\029\000\198\000\030\000\197\000\031\000\196\000\
\\032\000\195\000\033\000\194\000\034\000\193\000\035\000\192\000\
\\036\000\191\000\037\000\190\000\038\000\189\000\039\000\188\000\
\\040\000\187\000\041\000\186\000\042\000\185\000\043\000\184\000\
\\044\000\183\000\045\000\182\000\046\000\181\000\047\000\180\000\000\000\
\\003\002\004\000\215\000\008\000\214\000\010\000\213\000\012\000\212\000\
\\013\000\211\000\014\000\210\000\015\000\209\000\017\000\208\000\
\\018\000\207\000\019\000\206\000\020\000\205\000\022\000\204\000\
\\023\000\203\000\024\000\202\000\025\000\201\000\027\000\200\000\
\\028\000\199\000\029\000\198\000\030\000\197\000\031\000\196\000\
\\032\000\195\000\033\000\194\000\034\000\193\000\035\000\192\000\
\\036\000\191\000\037\000\190\000\038\000\189\000\039\000\188\000\
\\040\000\187\000\041\000\186\000\042\000\185\000\043\000\184\000\
\\044\000\183\000\045\000\182\000\046\000\181\000\047\000\180\000\000\000\
\\004\002\004\000\126\000\014\000\125\000\016\000\124\000\018\000\123\000\
\\019\000\122\000\021\000\121\000\022\000\120\000\023\000\119\000\
\\024\000\118\000\026\000\144\000\048\000\116\000\049\000\115\000\
\\050\000\114\000\051\000\113\000\085\000\101\000\000\000\
\\005\002\011\000\178\000\000\000\
\\006\002\004\000\215\000\008\000\214\000\010\000\213\000\012\000\212\000\
\\013\000\211\000\014\000\210\000\015\000\209\000\017\000\208\000\
\\018\000\207\000\019\000\206\000\020\000\205\000\022\000\204\000\
\\023\000\203\000\024\000\202\000\025\000\201\000\027\000\200\000\
\\028\000\199\000\029\000\198\000\030\000\197\000\031\000\196\000\
\\032\000\195\000\033\000\194\000\034\000\193\000\035\000\192\000\
\\036\000\191\000\037\000\190\000\038\000\189\000\039\000\188\000\
\\040\000\187\000\041\000\186\000\042\000\185\000\043\000\184\000\
\\044\000\183\000\045\000\182\000\046\000\181\000\047\000\180\000\000\000\
\\007\002\004\000\215\000\008\000\214\000\010\000\213\000\012\000\212\000\
\\013\000\211\000\014\000\210\000\015\000\209\000\017\000\208\000\
\\018\000\207\000\019\000\206\000\020\000\205\000\022\000\204\000\
\\023\000\203\000\024\000\202\000\025\000\201\000\027\000\200\000\
\\028\000\199\000\029\000\198\000\030\000\197\000\031\000\196\000\
\\032\000\195\000\033\000\194\000\034\000\193\000\035\000\192\000\
\\036\000\191\000\037\000\190\000\038\000\189\000\039\000\188\000\
\\040\000\187\000\041\000\186\000\042\000\185\000\043\000\184\000\
\\044\000\183\000\045\000\182\000\046\000\181\000\047\000\180\000\000\000\
\\008\002\004\000\083\001\008\000\005\001\022\000\042\000\000\000\
\\009\002\000\000\
\\010\002\052\000\040\000\053\000\039\000\054\000\038\000\055\000\037\000\
\\056\000\036\000\057\000\035\000\071\000\034\000\072\000\033\000\
\\073\000\032\000\074\000\031\000\075\000\030\000\076\000\029\000\
\\077\000\028\000\080\000\027\000\081\000\026\000\082\000\025\000\
\\083\000\024\000\084\000\023\000\086\000\022\000\000\000\
\\011\002\052\000\040\000\053\000\039\000\054\000\038\000\055\000\037\000\
\\056\000\036\000\057\000\035\000\071\000\034\000\072\000\033\000\
\\073\000\032\000\074\000\031\000\075\000\030\000\076\000\029\000\
\\077\000\028\000\080\000\027\000\081\000\026\000\082\000\025\000\
\\083\000\024\000\084\000\023\000\086\000\022\000\000\000\
\\012\002\000\000\
\\013\002\000\000\
\\014\002\000\000\
\\015\002\000\000\
\\016\002\000\000\
\\017\002\000\000\
\\018\002\000\000\
\\019\002\000\000\
\\020\002\000\000\
\\021\002\000\000\
\\022\002\000\000\
\\023\002\056\000\036\000\057\000\035\000\071\000\034\000\072\000\033\000\
\\073\000\032\000\074\000\031\000\075\000\030\000\076\000\029\000\
\\077\000\028\000\080\000\027\000\081\000\026\000\082\000\025\000\
\\083\000\024\000\084\000\023\000\000\000\
\\024\002\056\000\036\000\057\000\035\000\071\000\034\000\072\000\033\000\
\\073\000\032\000\074\000\031\000\075\000\030\000\076\000\029\000\
\\077\000\028\000\080\000\027\000\081\000\026\000\082\000\025\000\
\\083\000\024\000\084\000\023\000\000\000\
\\025\002\000\000\
\\026\002\000\000\
\\027\002\056\000\036\000\057\000\035\000\000\000\
\\028\002\000\000\
\\029\002\000\000\
\\030\002\000\000\
\\031\002\000\000\
\\032\002\000\000\
\\033\002\000\000\
\\034\002\000\000\
\\035\002\000\000\
\\036\002\000\000\
\\037\002\000\000\
\\038\002\000\000\
\\039\002\000\000\
\\040\002\000\000\
\\041\002\000\000\
\\042\002\000\000\
\\043\002\000\000\
\\044\002\000\000\
\\045\002\006\000\082\000\000\000\
\\046\002\006\000\081\000\000\000\
\\047\002\000\000\
\\048\002\000\000\
\\049\002\000\000\
\\050\002\000\000\
\\051\002\000\000\
\\052\002\000\000\
\\053\002\000\000\
\\054\002\000\000\
\\055\002\000\000\
\\056\002\000\000\
\\057\002\002\000\022\001\000\000\
\\058\002\004\000\215\000\008\000\214\000\010\000\213\000\012\000\212\000\
\\013\000\211\000\014\000\210\000\015\000\209\000\017\000\208\000\
\\018\000\207\000\019\000\206\000\020\000\205\000\022\000\204\000\
\\023\000\203\000\024\000\202\000\025\000\201\000\027\000\200\000\
\\028\000\199\000\029\000\198\000\030\000\197\000\031\000\196\000\
\\032\000\195\000\033\000\194\000\034\000\193\000\035\000\192\000\
\\036\000\191\000\037\000\190\000\038\000\189\000\039\000\188\000\
\\040\000\187\000\041\000\186\000\042\000\185\000\043\000\184\000\
\\044\000\183\000\045\000\182\000\046\000\181\000\047\000\180\000\000\000\
\\059\002\004\000\215\000\008\000\214\000\010\000\213\000\012\000\212\000\
\\013\000\211\000\014\000\210\000\015\000\209\000\017\000\208\000\
\\018\000\207\000\019\000\206\000\020\000\205\000\022\000\204\000\
\\023\000\203\000\024\000\202\000\025\000\201\000\027\000\200\000\
\\028\000\199\000\029\000\198\000\030\000\197\000\031\000\196\000\
\\032\000\195\000\033\000\194\000\034\000\193\000\035\000\192\000\
\\036\000\191\000\037\000\190\000\038\000\189\000\039\000\188\000\
\\040\000\187\000\041\000\186\000\042\000\185\000\043\000\184\000\
\\044\000\183\000\045\000\182\000\046\000\181\000\047\000\180\000\000\000\
\\060\002\002\000\027\001\000\000\
\\061\002\004\000\215\000\008\000\214\000\010\000\213\000\012\000\212\000\
\\013\000\211\000\014\000\210\000\015\000\209\000\017\000\208\000\
\\018\000\207\000\019\000\206\000\020\000\205\000\022\000\204\000\
\\023\000\203\000\024\000\202\000\025\000\201\000\027\000\200\000\
\\028\000\199\000\029\000\198\000\030\000\197\000\031\000\196\000\
\\032\000\195\000\033\000\194\000\034\000\193\000\035\000\192\000\
\\036\000\191\000\037\000\190\000\038\000\189\000\039\000\188\000\
\\040\000\187\000\041\000\186\000\042\000\185\000\043\000\184\000\
\\044\000\183\000\045\000\182\000\046\000\181\000\047\000\180\000\000\000\
\\062\002\004\000\215\000\008\000\214\000\010\000\213\000\012\000\212\000\
\\013\000\211\000\014\000\210\000\015\000\209\000\017\000\208\000\
\\018\000\207\000\019\000\206\000\020\000\205\000\022\000\204\000\
\\023\000\203\000\024\000\202\000\025\000\201\000\027\000\200\000\
\\028\000\199\000\029\000\198\000\030\000\197\000\031\000\196\000\
\\032\000\195\000\033\000\194\000\034\000\193\000\035\000\192\000\
\\036\000\191\000\037\000\190\000\038\000\189\000\039\000\188\000\
\\040\000\187\000\041\000\186\000\042\000\185\000\043\000\184\000\
\\044\000\183\000\045\000\182\000\046\000\181\000\047\000\180\000\000\000\
\\063\002\000\000\
\\064\002\000\000\
\\065\002\000\000\
\\066\002\000\000\
\\067\002\000\000\
\\068\002\006\000\155\000\000\000\
\\069\002\006\000\154\000\000\000\
\\070\002\000\000\
\\071\002\000\000\
\\072\002\027\000\017\001\000\000\
\\073\002\004\000\215\000\008\000\214\000\010\000\213\000\012\000\212\000\
\\013\000\211\000\014\000\210\000\015\000\209\000\017\000\208\000\
\\018\000\207\000\019\000\206\000\020\000\205\000\022\000\204\000\
\\023\000\203\000\024\000\202\000\025\000\201\000\027\000\200\000\
\\028\000\199\000\029\000\198\000\030\000\197\000\031\000\196\000\
\\032\000\195\000\033\000\194\000\034\000\193\000\035\000\192\000\
\\036\000\191\000\037\000\190\000\038\000\189\000\039\000\188\000\
\\040\000\187\000\041\000\186\000\042\000\185\000\043\000\184\000\
\\044\000\183\000\045\000\182\000\046\000\181\000\047\000\180\000\000\000\
\\074\002\000\000\
\\075\002\000\000\
\\076\002\000\000\
\\077\002\000\000\
\\078\002\000\000\
\\079\002\011\000\016\001\000\000\
\\079\002\011\000\128\001\000\000\
\\080\002\004\000\126\000\006\000\242\000\014\000\125\000\016\000\124\000\
\\018\000\123\000\019\000\122\000\021\000\121\000\022\000\120\000\
\\023\000\119\000\024\000\118\000\026\000\144\000\048\000\116\000\
\\049\000\115\000\050\000\114\000\051\000\113\000\085\000\101\000\000\000\
\\080\002\026\000\158\000\000\000\
\\081\002\000\000\
\\082\002\000\000\
\\083\002\027\000\139\000\000\000\
\\084\002\000\000\
\\085\002\000\000\
\\086\002\000\000\
\\087\002\027\000\135\000\000\000\
\\088\002\000\000\
\\089\002\000\000\
\\090\002\000\000\
\\091\002\004\000\138\000\008\000\137\000\000\000\
\\092\002\004\000\138\000\008\000\137\000\000\000\
\\093\002\004\000\072\000\008\000\071\000\000\000\
\\094\002\004\000\072\000\008\000\071\000\000\000\
\\095\002\004\000\103\001\008\000\102\001\000\000\
\\096\002\004\000\103\001\008\000\102\001\000\000\
\\097\002\022\000\042\000\056\000\036\000\057\000\035\000\000\000\
\\098\002\022\000\042\000\000\000\
\\099\002\000\000\
\\100\002\000\000\
\\101\002\000\000\
\\102\002\000\000\
\\103\002\000\000\
\\104\002\000\000\
\\105\002\000\000\
\\106\002\000\000\
\\107\002\000\000\
\\108\002\000\000\
\\109\002\000\000\
\\110\002\000\000\
\\111\002\000\000\
\\112\002\000\000\
\\113\002\000\000\
\\114\002\000\000\
\\115\002\000\000\
\\116\002\000\000\
\\117\002\000\000\
\\118\002\000\000\
\\119\002\000\000\
\\120\002\000\000\
\\121\002\004\000\215\000\008\000\214\000\010\000\213\000\012\000\212\000\
\\013\000\211\000\014\000\210\000\015\000\209\000\017\000\208\000\
\\018\000\207\000\019\000\206\000\020\000\205\000\022\000\204\000\
\\023\000\203\000\024\000\202\000\025\000\201\000\027\000\200\000\
\\028\000\199\000\029\000\198\000\030\000\197\000\031\000\196\000\
\\032\000\195\000\033\000\194\000\034\000\193\000\035\000\192\000\
\\036\000\191\000\037\000\190\000\038\000\189\000\039\000\188\000\
\\040\000\187\000\041\000\186\000\042\000\185\000\043\000\184\000\
\\044\000\183\000\045\000\182\000\046\000\181\000\047\000\180\000\000\000\
\\122\002\000\000\
\\123\002\000\000\
\\124\002\000\000\
\\125\002\000\000\
\\126\002\000\000\
\\127\002\000\000\
\\128\002\000\000\
\\129\002\000\000\
\\132\002\000\000\
\\133\002\000\000\
\\134\002\004\000\006\001\008\000\005\001\026\000\041\000\000\000\
\\134\002\004\000\006\001\008\000\005\001\026\000\041\000\089\000\012\001\000\000\
\\134\002\004\000\083\001\008\000\005\001\000\000\
\\135\002\004\000\096\001\008\000\095\001\000\000\
\\136\002\004\000\096\001\008\000\095\001\000\000\
\\137\002\000\000\
\\138\002\000\000\
\\139\002\000\000\
\\140\002\000\000\
\\141\002\000\000\
\\142\002\000\000\
\\143\002\000\000\
\\144\002\000\000\
\\145\002\000\000\
\\146\002\011\000\254\000\000\000\
\\147\002\000\000\
\\148\002\000\000\
\\149\002\000\000\
\\150\002\000\000\
\\151\002\000\000\
\\152\002\004\000\006\001\008\000\005\001\022\000\042\000\026\000\041\000\
\\089\000\012\001\000\000\
\\153\002\000\000\
\\154\002\000\000\
\\155\002\000\000\
\\157\002\000\000\
\";
action_row_numbers =
"\097\000\096\000\073\000\098\000\
\\008\000\099\000\101\000\074\000\
\\216\000\217\000\207\000\215\000\
\\198\000\205\000\022\000\119\000\
\\025\001\061\001\023\000\218\000\
\\008\001\219\000\226\000\227\000\
\\234\000\233\000\221\000\223\000\
\\222\000\224\000\075\000\225\000\
\\220\000\250\000\249\000\007\001\
\\005\001\006\001\004\001\040\001\
\\029\001\021\000\100\000\232\000\
\\231\000\093\000\118\000\057\001\
\\074\000\022\000\119\000\062\001\
\\009\000\196\000\208\000\198\000\
\\206\000\007\000\121\000\017\001\
\\023\001\022\001\021\001\006\000\
\\025\000\120\000\013\001\033\001\
\\024\000\028\000\049\000\026\001\
\\255\000\254\000\086\000\030\001\
\\213\000\031\001\050\000\093\000\
\\093\000\235\000\076\000\001\000\
\\002\000\211\000\058\001\063\001\
\\019\001\015\001\185\000\092\000\
\\034\000\011\000\188\000\110\000\
\\122\000\077\000\124\000\040\000\
\\087\000\012\000\013\000\190\000\
\\041\000\003\000\034\000\042\000\
\\010\000\043\000\044\000\182\000\
\\186\000\181\000\180\000\184\000\
\\034\000\034\000\129\000\133\000\
\\131\000\130\000\132\000\128\000\
\\033\000\117\000\203\000\204\000\
\\202\000\201\000\200\000\199\000\
\\197\000\027\000\024\000\029\000\
\\051\000\027\000\024\001\024\000\
\\052\000\035\000\183\000\042\001\
\\080\001\053\000\078\001\054\000\
\\046\000\084\001\059\001\044\001\
\\086\000\086\000\001\001\009\001\
\\002\001\032\001\214\000\041\001\
\\078\000\079\000\236\000\228\000\
\\014\000\239\000\243\000\034\000\
\\015\000\241\000\211\000\246\000\
\\034\000\209\000\123\000\168\000\
\\034\000\116\000\034\000\034\000\
\\034\000\034\000\034\000\034\000\
\\034\000\034\000\034\000\034\000\
\\034\000\034\000\034\000\034\000\
\\034\000\034\000\034\000\034\000\
\\034\000\034\000\034\000\088\000\
\\165\000\164\000\034\000\034\000\
\\034\000\034\000\034\000\034\000\
\\034\000\034\000\034\000\089\000\
\\034\000\026\000\125\000\127\000\
\\169\000\033\000\016\000\107\000\
\\106\000\191\000\017\000\034\000\
\\010\000\004\000\034\000\094\000\
\\190\000\034\000\187\000\010\000\
\\167\000\166\000\194\000\095\000\
\\055\000\056\000\020\001\053\001\
\\027\000\018\001\036\000\035\001\
\\057\000\058\000\037\001\016\001\
\\014\001\034\001\043\001\045\001\
\\091\000\090\000\046\001\086\001\
\\064\001\067\001\087\001\030\000\
\\045\000\027\001\083\001\082\001\
\\065\001\085\001\047\001\009\001\
\\009\001\080\000\012\001\034\000\
\\230\000\229\000\001\000\237\000\
\\034\000\244\000\001\000\238\000\
\\210\000\034\000\247\000\212\000\
\\088\001\189\000\158\000\157\000\
\\147\000\146\000\152\000\151\000\
\\154\000\153\000\156\000\155\000\
\\144\000\143\000\142\000\141\000\
\\138\000\137\000\139\000\140\000\
\\136\000\135\000\145\000\178\000\
\\176\000\161\000\149\000\160\000\
\\159\000\162\000\148\000\150\000\
\\163\000\005\000\177\000\175\000\
\\085\000\059\000\192\000\173\000\
\\060\000\109\000\108\000\061\000\
\\112\000\010\000\062\000\048\000\
\\018\000\063\000\111\000\066\001\
\\195\000\047\000\034\000\179\000\
\\010\001\055\001\036\001\038\001\
\\039\001\081\001\079\001\060\001\
\\068\001\031\000\064\000\037\000\
\\070\001\065\000\066\000\074\001\
\\032\000\067\000\028\001\081\000\
\\082\000\251\000\000\001\003\001\
\\240\000\245\000\242\000\248\000\
\\083\000\034\000\172\000\034\000\
\\174\000\171\000\010\000\113\000\
\\010\000\034\000\190\000\010\000\
\\170\000\084\000\011\001\038\000\
\\072\001\068\000\076\001\071\001\
\\075\001\069\001\039\000\048\001\
\\069\000\070\000\050\001\253\000\
\\252\000\126\000\134\000\193\000\
\\103\000\104\000\071\000\019\000\
\\114\000\054\001\056\001\073\001\
\\077\001\049\001\051\001\052\001\
\\020\000\190\000\010\000\105\000\
\\072\000\115\000\010\000\102\000\
\\000\000";
goto_table =
"\
\\001\000\164\001\002\000\001\000\000\000\
\\021\000\018\000\024\000\017\000\027\000\016\000\029\000\015\000\
\\030\000\014\000\036\000\013\000\038\000\012\000\039\000\011\000\
\\040\000\010\000\043\000\009\000\044\000\008\000\045\000\007\000\
\\048\000\006\000\049\000\005\000\050\000\004\000\051\000\003\000\
\\055\000\002\000\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\006\000\051\000\029\000\050\000\030\000\049\000\036\000\013\000\
\\038\000\012\000\039\000\011\000\040\000\010\000\043\000\009\000\
\\044\000\008\000\046\000\048\000\049\000\047\000\050\000\004\000\
\\055\000\002\000\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\031\000\053\000\000\000\
\\000\000\
\\018\000\059\000\020\000\058\000\021\000\018\000\024\000\057\000\
\\027\000\016\000\036\000\056\000\038\000\055\000\039\000\011\000\
\\040\000\054\000\043\000\009\000\044\000\008\000\055\000\002\000\000\000\
\\017\000\066\000\019\000\065\000\021\000\064\000\022\000\063\000\
\\023\000\062\000\024\000\061\000\026\000\060\000\027\000\016\000\000\000\
\\000\000\
\\000\000\
\\027\000\071\000\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\021\000\077\000\040\000\076\000\041\000\075\000\000\000\
\\021\000\018\000\024\000\078\000\027\000\016\000\000\000\
\\000\000\
\\000\000\
\\000\000\
\\038\000\085\000\039\000\011\000\040\000\076\000\041\000\084\000\
\\042\000\083\000\043\000\009\000\044\000\008\000\055\000\002\000\
\\060\000\082\000\061\000\081\000\000\000\
\\000\000\
\\000\000\
\\006\000\087\000\029\000\050\000\030\000\049\000\036\000\013\000\
\\038\000\012\000\039\000\011\000\040\000\010\000\043\000\009\000\
\\044\000\008\000\049\000\086\000\050\000\004\000\055\000\002\000\000\000\
\\018\000\059\000\020\000\058\000\021\000\018\000\024\000\088\000\
\\027\000\016\000\036\000\056\000\038\000\055\000\039\000\011\000\
\\040\000\054\000\043\000\009\000\044\000\008\000\055\000\002\000\000\000\
\\017\000\066\000\019\000\065\000\021\000\064\000\022\000\089\000\
\\023\000\062\000\024\000\061\000\026\000\060\000\027\000\016\000\000\000\
\\000\000\
\\003\000\098\000\004\000\097\000\005\000\096\000\006\000\095\000\
\\007\000\094\000\009\000\093\000\010\000\092\000\062\000\091\000\
\\064\000\090\000\000\000\
\\032\000\131\000\036\000\130\000\039\000\129\000\040\000\128\000\
\\043\000\127\000\044\000\126\000\055\000\002\000\000\000\
\\000\000\
\\031\000\132\000\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\026\000\138\000\027\000\071\000\000\000\
\\000\000\
\\000\000\
\\000\000\
\\021\000\064\000\023\000\140\000\024\000\078\000\026\000\060\000\
\\027\000\016\000\000\000\
\\007\000\141\000\010\000\092\000\064\000\090\000\000\000\
\\029\000\149\000\030\000\148\000\036\000\013\000\038\000\012\000\
\\039\000\011\000\040\000\010\000\043\000\009\000\044\000\008\000\
\\047\000\147\000\052\000\146\000\053\000\145\000\054\000\144\000\
\\055\000\002\000\000\000\
\\000\000\
\\000\000\
\\000\000\
\\013\000\155\000\014\000\154\000\000\000\
\\021\000\157\000\000\000\
\\040\000\076\000\041\000\158\000\000\000\
\\000\000\
\\000\000\
\\038\000\085\000\039\000\011\000\040\000\076\000\041\000\084\000\
\\042\000\083\000\043\000\009\000\044\000\008\000\055\000\002\000\
\\060\000\160\000\061\000\081\000\000\000\
\\038\000\085\000\039\000\011\000\040\000\076\000\041\000\084\000\
\\042\000\083\000\043\000\009\000\044\000\008\000\055\000\002\000\
\\060\000\161\000\061\000\081\000\000\000\
\\000\000\
\\038\000\085\000\039\000\011\000\040\000\076\000\041\000\084\000\
\\042\000\083\000\043\000\009\000\044\000\008\000\055\000\002\000\
\\061\000\162\000\000\000\
\\021\000\064\000\022\000\166\000\023\000\062\000\024\000\061\000\
\\026\000\060\000\027\000\016\000\056\000\165\000\058\000\164\000\000\000\
\\021\000\018\000\024\000\171\000\027\000\016\000\038\000\170\000\
\\039\000\011\000\043\000\009\000\044\000\008\000\055\000\002\000\
\\057\000\169\000\059\000\168\000\000\000\
\\033\000\173\000\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\029\000\050\000\030\000\049\000\036\000\013\000\038\000\012\000\
\\039\000\011\000\040\000\010\000\043\000\009\000\044\000\008\000\
\\046\000\174\000\049\000\047\000\050\000\004\000\055\000\002\000\000\000\
\\007\000\175\000\010\000\092\000\064\000\090\000\000\000\
\\000\000\
\\000\000\
\\000\000\
\\003\000\214\000\006\000\095\000\007\000\094\000\009\000\093\000\
\\010\000\092\000\064\000\090\000\000\000\
\\000\000\
\\000\000\
\\007\000\216\000\010\000\092\000\064\000\090\000\000\000\
\\000\000\
\\000\000\
\\000\000\
\\007\000\094\000\008\000\222\000\009\000\221\000\010\000\092\000\
\\064\000\090\000\000\000\
\\000\000\
\\000\000\
\\007\000\094\000\009\000\225\000\010\000\092\000\064\000\090\000\000\000\
\\000\000\
\\003\000\227\000\006\000\095\000\007\000\094\000\009\000\093\000\
\\010\000\092\000\064\000\090\000\000\000\
\\000\000\
\\000\000\
\\000\000\
\\064\000\230\000\000\000\
\\000\000\
\\000\000\
\\000\000\
\\007\000\232\000\010\000\092\000\064\000\090\000\000\000\
\\007\000\233\000\010\000\092\000\064\000\090\000\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\007\000\094\000\009\000\237\000\010\000\092\000\037\000\236\000\
\\038\000\085\000\039\000\011\000\040\000\076\000\041\000\235\000\
\\042\000\234\000\043\000\009\000\044\000\008\000\055\000\002\000\
\\064\000\090\000\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\032\000\131\000\036\000\130\000\039\000\129\000\040\000\128\000\
\\043\000\127\000\044\000\126\000\055\000\002\000\000\000\
\\007\000\239\000\010\000\092\000\034\000\238\000\064\000\090\000\000\000\
\\017\000\241\000\021\000\064\000\022\000\089\000\023\000\062\000\
\\024\000\061\000\026\000\060\000\027\000\016\000\000\000\
\\007\000\242\000\010\000\092\000\064\000\090\000\000\000\
\\029\000\149\000\030\000\148\000\036\000\013\000\038\000\012\000\
\\039\000\011\000\040\000\010\000\043\000\009\000\044\000\008\000\
\\047\000\245\000\052\000\146\000\053\000\244\000\054\000\144\000\
\\055\000\002\000\000\000\
\\007\000\239\000\010\000\092\000\034\000\247\000\064\000\090\000\000\000\
\\000\000\
\\017\000\248\000\021\000\064\000\022\000\089\000\023\000\062\000\
\\024\000\061\000\026\000\060\000\027\000\016\000\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\015\000\002\001\016\000\001\001\021\000\000\001\024\000\255\000\
\\027\000\016\000\036\000\056\000\038\000\055\000\039\000\011\000\
\\040\000\054\000\043\000\009\000\044\000\008\000\055\000\002\000\000\000\
\\015\000\009\001\016\000\001\001\021\000\008\001\024\000\007\001\
\\025\000\006\001\027\000\016\000\028\000\005\001\000\000\
\\000\000\
\\000\000\
\\013\000\011\001\014\000\154\000\000\000\
\\013\000\012\001\014\000\154\000\000\000\
\\000\000\
\\012\000\013\001\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\038\000\085\000\039\000\011\000\040\000\076\000\041\000\084\000\
\\042\000\083\000\043\000\009\000\044\000\008\000\055\000\002\000\
\\061\000\162\000\000\000\
\\038\000\085\000\039\000\011\000\040\000\076\000\041\000\084\000\
\\042\000\083\000\043\000\009\000\044\000\008\000\055\000\002\000\
\\061\000\162\000\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\007\000\021\001\010\000\092\000\064\000\090\000\000\000\
\\000\000\
\\000\000\
\\033\000\024\001\000\000\
\\000\000\
\\007\000\026\001\010\000\092\000\064\000\090\000\000\000\
\\032\000\027\001\039\000\129\000\040\000\128\000\043\000\127\000\
\\044\000\126\000\055\000\002\000\000\000\
\\003\000\098\000\004\000\028\001\005\000\096\000\006\000\095\000\
\\007\000\094\000\009\000\093\000\010\000\092\000\029\000\050\000\
\\030\000\049\000\036\000\013\000\038\000\012\000\039\000\011\000\
\\040\000\010\000\043\000\009\000\044\000\008\000\049\000\086\000\
\\050\000\004\000\055\000\002\000\064\000\090\000\000\000\
\\000\000\
\\007\000\029\001\010\000\092\000\064\000\090\000\000\000\
\\000\000\
\\007\000\030\001\010\000\092\000\064\000\090\000\000\000\
\\007\000\031\001\010\000\092\000\064\000\090\000\000\000\
\\007\000\032\001\010\000\092\000\064\000\090\000\000\000\
\\007\000\033\001\010\000\092\000\064\000\090\000\000\000\
\\007\000\034\001\010\000\092\000\064\000\090\000\000\000\
\\007\000\035\001\010\000\092\000\064\000\090\000\000\000\
\\007\000\036\001\010\000\092\000\064\000\090\000\000\000\
\\007\000\037\001\010\000\092\000\064\000\090\000\000\000\
\\007\000\038\001\010\000\092\000\064\000\090\000\000\000\
\\007\000\039\001\010\000\092\000\064\000\090\000\000\000\
\\007\000\040\001\010\000\092\000\064\000\090\000\000\000\
\\007\000\041\001\010\000\092\000\064\000\090\000\000\000\
\\007\000\042\001\010\000\092\000\064\000\090\000\000\000\
\\007\000\043\001\010\000\092\000\064\000\090\000\000\000\
\\007\000\044\001\010\000\092\000\064\000\090\000\000\000\
\\007\000\045\001\010\000\092\000\064\000\090\000\000\000\
\\007\000\046\001\010\000\092\000\064\000\090\000\000\000\
\\007\000\047\001\010\000\092\000\064\000\090\000\000\000\
\\007\000\048\001\010\000\092\000\064\000\090\000\000\000\
\\007\000\049\001\010\000\092\000\064\000\090\000\000\000\
\\007\000\050\001\010\000\092\000\064\000\090\000\000\000\
\\000\000\
\\000\000\
\\000\000\
\\007\000\053\001\010\000\092\000\064\000\090\000\000\000\
\\007\000\054\001\010\000\092\000\064\000\090\000\000\000\
\\007\000\055\001\010\000\092\000\064\000\090\000\000\000\
\\007\000\056\001\010\000\092\000\064\000\090\000\000\000\
\\007\000\057\001\010\000\092\000\064\000\090\000\000\000\
\\007\000\058\001\010\000\092\000\064\000\090\000\000\000\
\\007\000\059\001\010\000\092\000\064\000\090\000\000\000\
\\007\000\060\001\010\000\092\000\064\000\090\000\000\000\
\\007\000\094\000\009\000\061\001\010\000\092\000\064\000\090\000\000\000\
\\000\000\
\\007\000\094\000\009\000\064\001\010\000\092\000\064\000\090\000\000\000\
\\007\000\066\001\010\000\092\000\011\000\065\001\064\000\090\000\000\000\
\\000\000\
\\000\000\
\\000\000\
\\007\000\094\000\009\000\237\000\010\000\092\000\037\000\068\001\
\\038\000\085\000\039\000\011\000\040\000\076\000\041\000\235\000\
\\042\000\234\000\043\000\009\000\044\000\008\000\055\000\002\000\
\\064\000\090\000\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\007\000\094\000\009\000\071\001\010\000\092\000\064\000\090\000\000\000\
\\003\000\072\001\006\000\095\000\007\000\094\000\009\000\093\000\
\\010\000\092\000\064\000\090\000\000\000\
\\000\000\
\\007\000\094\000\009\000\074\001\010\000\092\000\064\000\090\000\000\000\
\\000\000\
\\007\000\094\000\008\000\076\001\009\000\221\000\010\000\092\000\
\\064\000\090\000\000\000\
\\007\000\094\000\009\000\077\001\010\000\092\000\064\000\090\000\000\000\
\\000\000\
\\003\000\078\001\006\000\095\000\007\000\094\000\009\000\093\000\
\\010\000\092\000\064\000\090\000\000\000\
\\000\000\
\\000\000\
\\015\000\080\001\016\000\001\001\021\000\079\001\000\000\
\\038\000\170\000\039\000\011\000\043\000\009\000\044\000\008\000\
\\055\000\002\000\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\007\000\239\000\010\000\092\000\034\000\085\001\035\000\084\001\
\\064\000\090\000\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\029\000\149\000\030\000\148\000\036\000\013\000\038\000\012\000\
\\039\000\011\000\040\000\010\000\043\000\009\000\044\000\008\000\
\\054\000\089\001\055\000\002\000\000\000\
\\000\000\
\\000\000\
\\000\000\
\\016\000\092\001\027\000\071\000\000\000\
\\000\000\
\\000\000\
\\007\000\095\001\010\000\092\000\064\000\090\000\000\000\
\\015\000\098\001\016\000\001\001\021\000\000\001\024\000\078\000\
\\027\000\016\000\029\000\149\000\030\000\148\000\036\000\013\000\
\\038\000\012\000\039\000\011\000\040\000\010\000\043\000\009\000\
\\044\000\008\000\052\000\146\000\053\000\097\001\054\000\144\000\
\\055\000\002\000\000\000\
\\000\000\
\\000\000\
\\000\000\
\\016\000\092\001\027\000\071\000\028\000\102\001\000\000\
\\000\000\
\\000\000\
\\012\000\103\001\000\000\
\\012\000\104\001\000\000\
\\000\000\
\\014\000\106\001\000\000\
\\007\000\107\001\010\000\092\000\064\000\090\000\000\000\
\\000\000\
\\000\000\
\\021\000\064\000\022\000\166\000\023\000\062\000\024\000\061\000\
\\026\000\060\000\027\000\016\000\056\000\108\001\000\000\
\\000\000\
\\007\000\109\001\010\000\092\000\064\000\090\000\000\000\
\\000\000\
\\021\000\064\000\022\000\166\000\023\000\062\000\024\000\061\000\
\\026\000\060\000\027\000\016\000\056\000\110\001\000\000\
\\000\000\
\\032\000\027\001\039\000\129\000\040\000\128\000\043\000\127\000\
\\044\000\126\000\055\000\002\000\000\000\
\\007\000\111\001\010\000\092\000\064\000\090\000\000\000\
\\000\000\
\\000\000\
\\063\000\112\001\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\003\000\119\001\006\000\095\000\007\000\094\000\009\000\093\000\
\\010\000\092\000\064\000\090\000\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\016\000\092\001\000\000\
\\000\000\
\\015\000\098\001\016\000\001\001\021\000\079\001\029\000\149\000\
\\030\000\148\000\036\000\013\000\038\000\012\000\039\000\011\000\
\\040\000\010\000\043\000\009\000\044\000\008\000\052\000\146\000\
\\053\000\097\001\054\000\144\000\055\000\002\000\000\000\
\\007\000\124\001\010\000\092\000\064\000\090\000\000\000\
\\000\000\
\\012\000\125\001\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\007\000\127\001\010\000\092\000\064\000\090\000\000\000\
\\029\000\149\000\030\000\148\000\036\000\013\000\038\000\012\000\
\\039\000\011\000\040\000\010\000\043\000\009\000\044\000\008\000\
\\052\000\146\000\053\000\129\001\054\000\144\000\055\000\002\000\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\007\000\134\001\010\000\092\000\064\000\090\000\000\000\
\\029\000\149\000\030\000\148\000\036\000\013\000\038\000\012\000\
\\039\000\011\000\040\000\010\000\043\000\009\000\044\000\008\000\
\\047\000\137\001\052\000\146\000\053\000\136\001\054\000\144\000\
\\055\000\002\000\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\007\000\142\001\010\000\092\000\064\000\090\000\000\000\
\\000\000\
\\007\000\143\001\010\000\092\000\064\000\090\000\000\000\
\\000\000\
\\007\000\124\001\010\000\092\000\064\000\090\000\000\000\
\\003\000\144\001\006\000\095\000\007\000\094\000\009\000\093\000\
\\010\000\092\000\064\000\090\000\000\000\
\\000\000\
\\003\000\145\001\006\000\095\000\007\000\094\000\009\000\093\000\
\\010\000\092\000\064\000\090\000\000\000\
\\007\000\094\000\009\000\146\001\010\000\092\000\064\000\090\000\000\000\
\\007\000\094\000\008\000\147\001\009\000\221\000\010\000\092\000\
\\064\000\090\000\000\000\
\\003\000\148\001\006\000\095\000\007\000\094\000\009\000\093\000\
\\010\000\092\000\064\000\090\000\000\000\
\\000\000\
\\000\000\
\\007\000\239\000\010\000\092\000\034\000\150\001\064\000\090\000\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\000\000\
\\007\000\094\000\008\000\160\001\009\000\221\000\010\000\092\000\
\\064\000\090\000\000\000\
\\003\000\161\001\006\000\095\000\007\000\094\000\009\000\093\000\
\\010\000\092\000\064\000\090\000\000\000\
\\000\000\
\\000\000\
\\000\000\
\\003\000\163\001\006\000\095\000\007\000\094\000\009\000\093\000\
\\010\000\092\000\064\000\090\000\000\000\
\\000\000\
\\000\000\
\";
numstates = 421;
numrules = 247;
s = REF ""; index = REF 0;
string_to_int = fn () =
{ i = *index;
index := i+2;
char::to_int (string::get(*s, i)) + char::to_int (string::get(*s, i+1)) * 256;
};
string_to_list = fn s' =
{ len = string::length s';
fun f () =
if (*index < len)
string_to_int() ! f();
else NIL; fi;
index := 0;
s := s';
f ();
};
string_to_pairlist = fn (conv_key, conv_entry) = f
where
fun f ()
=
case (string_to_int ())
0 => EMPTY;
n => PAIR (conv_key (n - 1), conv_entry (string_to_int()), f());
esac;
end;
string_to_pairlist_default = fn (conv_key, conv_entry) =
{ conv_row = string_to_pairlist (conv_key, conv_entry);
fn () =
{ default = conv_entry (string_to_int());
row = conv_row();
(row, default);
};
};
string_to_table = fn (convert_row, s') =
{ len = string::length s';
fun f ()
=
if (*index < len)
convert_row() ! f();
else NIL; fi;
s := s';
index := 0;
f ();
};
stipulate
memo = rw_vector::make_rw_vector (numstates+numrules, ERROR);
my _ ={ fun g i
=
{ rw_vector::set (memo, i, REDUCE (i-numstates));
g (i+1);
};
fun f i
=
if (i == numstates)
g i;
else rw_vector::set (memo, i, SHIFT (STATE i));
f (i+1);
fi;
f 0
except
(SUBSCRIPT|INDEX_OUT_OF_BOUNDS) = ();
};
herein
entry_to_action
=
fn 0 => ACCEPT;
1 => ERROR;
j => rw_vector::get (memo, (j - 2));
end;
end;
goto_table = rw_vector::from_list (string_to_table (string_to_pairlist (NONTERM, STATE), goto_table));
action_rows = string_to_table (string_to_pairlist_default (TERM, entry_to_action), action_rows);
action_row_numbers = string_to_list action_row_numbers;
action_table
=
{ action_row_lookup
=
{ a=rw_vector::from_list (action_rows);
fn i = rw_vector::get (a, i);
};
rw_vector::from_list (map action_row_lookup action_row_numbers);
};
lr_table::make_lr_table {
actions => action_table,
gotos => goto_table,
rule_count => numrules,
state_count => numstates,
initial_state => STATE 0 };
};
end;
stipulate include header; herein
Source_Position = Int;
Arg = line_number_db::Sourcemap;
package values {
Semantic_Value = TM_VOID | NT_VOID Void | TYPE_NAME (String) | CCONST (large_int::Int) | STRING_CONSTANT (String) | REALNUM (Float) | DECNUM (large_int::Int) | IDENTIFIER (String)
| QQ_STRINGS (String) | QQ_POPSCOPE (Void) | QQ_PUSHSCOPE (Void) | QQ_STRUCTDECLARATION ((Ctype, List( (Declarator, Expression)) ))
| QQ_STRUCTDECLARATIONLIST (Seq ( (Ctype, List( (Declarator, Expression))) ) ) | QQ_NOTYPESTRUCTDECLARATORLIST (Seq ( (Declarator, Expression) ) )
| QQ_STRUCTDECLARATORLIST (Seq ( (Declarator, Expression) ) ) | QQ_NOTYPESTRUCTDECLARATOR ((Declarator, Expression)) | QQ_STRUCTDECLARATOR ((Declarator, Expression)) | QQ_STRUCTORUNION (Bool)
| QQ_PARAMETERDECLARATION ((Decltype, Declarator)) | QQ_PARAMETERTYPELIST (List ( (Decltype, Declarator) ) ) | QQ_PARAMETERLIST (Seq ( (Decltype, Declarator) ) )
| QQ_EXTERNALDECLARATION (Null_Or External_Decl ) | QQ_DECLARATION1 (Declaration) | QQ_DECLARATION (Declaration) | QQ_FUNCTIONDEFINITION (External_Decl)
| QQ_IDENTLIST (Seq ( (String, Int, Int) ) ) | QQ_DECLARATIONLIST (Seq Declaration ) | QQ_FDEFDECLARATION ((Decltype, Declarator)) | QQ_STRUCTORUNIONSPECIFIER (Specifier)
| QQ_ENUMSPECIFIER (Specifier) | QQ_SPECIFIERQUALIFIERLIST (Ctype) | QQ_TYPEQUALIFIERLIST (List Qualifier ) | QQ_TYPEQUALIFIER (Qualifier) | QQ_TYPESPECIFIERRESERVED (Specifier)
| QQ_TYPESPECIFIER (Specifier) | QQ_TYPENAME (Ctype) | QQ_STORAGEILKSPECIFIER (Storage) | QQ_INITIALIZERLIST (Seq Expression ) | QQ_INITIALIZER (Expression)
| QQ_RESERVEDSPECIFIERQUALIFIERS (Ctype) | QQ_SPECIFIERQUALIFIERRESERVED (Ctype) | QQ_RESERVEDECLARATIONSPECIFIER (Decltype) | QQ_DECLARATIONMODIFIERS (Decltype)
| QQ_DECLARATIONSPECIFIERS (Decltype) | QQ_PARMDIRECTDECLARATOR (Declarator) | QQ_NOTYPEDIRECTDECLARATOR (Declarator) | QQ_AFTERTYPEDIRECTDECLARATOR (Declarator) | QQ_PARMDECLARATOR (Declarator)
| QQ_NOTYPEDECLARATOR (Declarator) | QQ_AFTERTYPEDECLARATOR (Declarator) | QQ_DECLARATOR (Declarator) | QQ_POINTER (Declarator) | QQ_NOTYPEINITDECLARATORLIST (Seq ( (Declarator, Expression) ) )
| QQ_INITDECLARATORLIST (Seq ( (Declarator, Expression) ) ) | QQ_NOTYPEINITDECLARATOR ((Declarator, Expression)) | QQ_INITDECLARATOR ((Declarator, Expression))
| QQ_DIRECTABSTRACTDECLARATOR (Declarator) | QQ_ABSTRACTDECLARATOR (Declarator) | QQ_ENUMERATOR ((String, Expression)) | QQ_ENUMERATORLIST (Seq ( (String, Expression) ) )
| QQ_TRAILINGCOMMA (Bool) | QQ_ARGUMENTEXPRLIST (Seq Expression ) | QQ_UNARYOPERATOR (Operator) | QQ_EXPRWCOMMA (Expression) | QQ_OPEXPR (Expression) | QQ_EXPR (Expression)
| QQ_COMPOUNDSTATEMENT (Statement) | QQ_STATEMENTLIST (Seq Statement ) | QQ_OSTATEMENTLIST (List Statement ) | QQ_STATEMENT (Statement) | QQ_TU (Seq External_Decl )
| QQ_TRANSLATIONUNIT (List External_Decl );
};
Semantic_Value = values::Semantic_Value;
Result = List External_Decl ;
end;
package error_recovery{
include lr_table;
infix my 60 @@;
fun x @@ y = y ! x;
is_keyword =
fn (TERM 11) => TRUE; (TERM 57) => TRUE; (TERM 58) => TRUE; (TERM 59) => TRUE; (TERM 60) => TRUE; (TERM 61) => TRUE; (TERM 62) => TRUE; (TERM 63) => TRUE; (TERM 64) => TRUE; (TERM 65) => TRUE; (TERM
66) => TRUE; (TERM 67) => TRUE; (TERM 68) => TRUE; (TERM 69) => TRUE; _ => FALSE; end;
my preferred_change: List( (List( Terminal ), List( Terminal )) ) =
(NIL
@@ (TERM 25), NIL
@@ (TERM 88)) !
NIL;
no_shift =
fn (TERM 0) => TRUE; _ => FALSE; end;
show_terminal =
fn (TERM 0) => "EOF"
; (TERM 1) => "COLON"
; (TERM 2) => "SEMICOLON"
; (TERM 3) => "LPAREN"
; (TERM 4) => "RPAREN"
; (TERM 5) => "LCURLY"
; (TERM 6) => "RCURLY"
; (TERM 7) => "LBRACE"
; (TERM 8) => "RBRACE"
; (TERM 9) => "DOT"
; (TERM 10) => "COMMA"
; (TERM 11) => "QUESTION"
; (TERM 12) => "PERCENT"
; (TERM 13) => "AMP"
; (TERM 14) => "BAR"
; (TERM 15) => "TILDE"
; (TERM 16) => "DIVIDE"
; (TERM 17) => "PLUS"
; (TERM 18) => "MINUS"
; (TERM 19) => "HAT"
; (TERM 20) => "BANG"
; (TERM 21) => "TIMES"
; (TERM 22) => "INC"
; (TERM 23) => "DEC"
; (TERM 24) => "ARROW"
; (TERM 25) => "IDENTIFIER"
; (TERM 26) => "EQUALS"
; (TERM 27) => "PLUSEQUALS"
; (TERM 28) => "MINUSEQUALS"
; (TERM 29) => "XOREQUALS"
; (TERM 30) => "MODEQUALS"
; (TERM 31) => "TIMESEQUALS"
; (TERM 32) => "DIVEQUALS"
; (TERM 33) => "OREQUALS"
; (TERM 34) => "ANDEQUALS"
; (TERM 35) => "LSHIFTEQUALS"
; (TERM 36) => "RSHIFTEQUALS"
; (TERM 37) => "LTE"
; (TERM 38) => "GTE"
; (TERM 39) => "LT"
; (TERM 40) => "GT"
; (TERM 41) => "EQ"
; (TERM 42) => "NEQ"
; (TERM 43) => "OR_T"
; (TERM 44) => "AND_T"
; (TERM 45) => "LSHIFT"
; (TERM 46) => "RSHIFT"
; (TERM 47) => "DECNUM"
; (TERM 48) => "REALNUM"
; (TERM 49) => "STRING_CONSTANT"
; (TERM 50) => "CCONST"
; (TERM 51) => "EXTERN"
; (TERM 52) => "AUTO"
; (TERM 53) => "STATIC"
; (TERM 54) => "REGISTER"
; (TERM 55) => "CONST"
; (TERM 56) => "VOLATILE"
; (TERM 57) => "IF_T"
; (TERM 58) => "THEN_T"
; (TERM 59) => "ELSE_T"
; (TERM 60) => "FOR_T"
; (TERM 61) => "DO_T"
; (TERM 62) => "SWITCH"
; (TERM 63) => "CASE_T"
; (TERM 64) => "DEFAULT"
; (TERM 65) => "WHILE_T"
; (TERM 66) => "RETURN"
; (TERM 67) => "BREAK"
; (TERM 68) => "CONTINUE"
; (TERM 69) => "GOTO"
; (TERM 70) => "CHAR"
; (TERM 71) => "DOUBLE"
; (TERM 72) => "ENUM_T"
; (TERM 73) => "FLOAT"
; (TERM 74) => "INT"
; (TERM 75) => "LONG"
; (TERM 76) => "SHORT"
; (TERM 77) => "FRACTIONAL"
; (TERM 78) => "SATURATE"
; (TERM 79) => "STRUCT"
; (TERM 80) => "UNION"
; (TERM 81) => "UNSIGNED"
; (TERM 82) => "SIGNED"
; (TERM 83) => "VOID"
; (TERM 84) => "SIZEOF"
; (TERM 85) => "TYPEDEF"
; (TERM 86) => "UNARY"
; (TERM 87) => "ELIPSIS"
; (TERM 88) => "TYPE_NAME"
; _ => "bogus-term"; end;
stipulate include header; herein
errtermvalue=
fn (TERM 88) => values::TYPE_NAME(({ error::hint "Likely cause: missing typedef declaration.\n"; "bogus"; } ));
_ => values::TM_VOID;
end; end;
my terms: List( Terminal ) = NIL
@@ (TERM 87) @@ (TERM 86) @@ (TERM 85) @@ (TERM 84) @@ (TERM 83) @@ (TERM 82) @@ (TERM 81) @@ (TERM 80) @@ (TERM 79) @@ (TERM 78) @@ (TERM 77) @@ (TERM 76) @@ (TERM 75) @@ (TERM 74) @@ (TERM 73) @@
(TERM 72) @@ (TERM 71) @@ (TERM 70) @@ (TERM 69) @@ (TERM 68) @@ (TERM 67) @@ (TERM 66) @@ (TERM 65) @@ (TERM 64) @@ (TERM 63) @@ (TERM 62) @@ (TERM 61) @@ (TERM 60) @@ (TERM 59) @@ (TERM 58) @@
(TERM 57) @@ (TERM 56) @@ (TERM 55) @@ (TERM 54) @@ (TERM 53) @@ (TERM 52) @@ (TERM 51) @@ (TERM 46) @@ (TERM 45) @@ (TERM 44) @@ (TERM 43) @@ (TERM 42) @@ (TERM 41) @@ (TERM 40) @@ (TERM 39) @@
(TERM 38) @@ (TERM 37) @@ (TERM 36) @@ (TERM 35) @@ (TERM 34) @@ (TERM 33) @@ (TERM 32) @@ (TERM 31) @@ (TERM 30) @@ (TERM 29) @@ (TERM 28) @@ (TERM 27) @@ (TERM 26) @@ (TERM 24) @@ (TERM 23) @@
(TERM 22) @@ (TERM 21) @@ (TERM 20) @@ (TERM 19) @@ (TERM 18) @@ (TERM 17) @@ (TERM 16) @@ (TERM 15) @@ (TERM 14) @@ (TERM 13) @@ (TERM 12) @@ (TERM 11) @@ (TERM 10) @@ (TERM 9) @@ (TERM 8) @@ (TERM 7
) @@ (TERM 6) @@ (TERM 5) @@ (TERM 4) @@ (TERM 3) @@ (TERM 2) @@ (TERM 1) @@ (TERM 0);
};
package actions {
exception MLY_ACTION Int;
stipulate include header; herein
actions =
fn (i392, default_position, stack,
(src_map): Arg) =
case (i392, stack)
( 0, ( ( _, ( values::QQ_TU tu, tu1left, tu1right)) ! rest671)) => { my result = values::QQ_TRANSLATIONUNIT (seq_to_list tu);
( lr_table::NONTERM 0, ( result, tu1left, tu1right), rest671
);
}
; ( 1, ( rest671)) => { my result = values::QQ_TU (empty_seq);
( lr_table::NONTERM 1, ( result, default_position, default_position), rest671);
}
; ( 2, ( ( _, ( values::QQ_EXTERNALDECLARATION externaldeclaration, _, externaldeclaration1right)) ! ( _, ( values::QQ_TU tu, tu1left, _)) ! rest671)) => { my result = values::QQ_TU (
add_opt_to_end (externaldeclaration, tu));
( lr_table::NONTERM 1, ( result, tu1left, externaldeclaration1right), rest671);
}
; ( 3, ( ( _, ( values::QQ_DECLARATION declaration, (declarationleft as declaration1left), (declarationright as declaration1right))) ! rest671)) => { my result = values::QQ_EXTERNALDECLARATION
(THE(mark_external_decl src_map (EXTERNAL_DECL declaration,
declarationleft,
declarationright)));
( lr_table::NONTERM 50, ( result, declaration1left,
declaration1right), rest671);
}
; ( 4, ( ( _, ( _, semicolon1left, semicolon1right)) ! rest671)) => { my result = values::QQ_EXTERNALDECLARATION (NULL);
( lr_table::NONTERM 50, ( result, semicolon1left, semicolon1right)
, rest671);
}
; ( 5, ( ( _, ( values::QQ_FUNCTIONDEFINITION functiondefinition, (functiondefinitionleft as functiondefinition1left), (functiondefinitionright as functiondefinition1right))) ! rest671)) => {
my result = values::QQ_EXTERNALDECLARATION (THE(mark_external_decl src_map (functiondefinition,
functiondefinitionleft,
functiondefinitionright)));
(
lr_table::NONTERM 50, ( result, functiondefinition1left, functiondefinition1right), rest671);
}
; ( 6, ( ( _, ( values::QQ_STATEMENT statement, _, (statementright as statement1right))) ! _ ! ( _, ( values::QQ_OPEXPR opexpr3, _, _)) ! _ ! ( _, ( values::QQ_OPEXPR opexpr2, _, _)) !
_ ! ( _, ( values::QQ_OPEXPR opexpr1, _, _)) ! _ ! ( _, ( _, (for_tleft as for_t1left), _)) ! rest671)) => { my result = values::QQ_STATEMENT (
mark_statement src_map (FOR(opexpr1, opexpr2, opexpr3, statement),
for_tleft, statementright));
( lr_table::NONTERM 2, ( result, for_t1left, statement1right), rest671);
}
; ( 7, ( ( _, ( values::QQ_STATEMENT statement, _, (statementright as statement1right))) ! _ ! ( _, ( values::QQ_EXPRWCOMMA exprwcomma, _, _)) ! _ ! ( _, ( _, (while_tleft as
while_t1left), _)) ! rest671)) => { my result = values::QQ_STATEMENT (mark_statement src_map (WHILE(exprwcomma, statement),
while_tleft, statementright));
( lr_table::NONTERM 2, ( result
, while_t1left, statement1right), rest671);
}
; ( 8, ( ( _, ( values::QQ_STATEMENT statement, _, (statementright as statement1right))) ! _ ! ( _, ( values::QQ_EXPRWCOMMA exprwcomma, _, _)) ! _ ! ( _, ( _, (switchleft as switch1left)
, _)) ! rest671)) => { my result = values::QQ_STATEMENT (mark_statement src_map (SWITCH(exprwcomma, statement),
switchleft, statementright));
( lr_table::NONTERM 2, ( result, switch1left
, statement1right), rest671);
}
; ( 9, ( ( _, ( _, _, (semicolonright as semicolon1right))) ! _ ! ( _, ( values::QQ_EXPRWCOMMA exprwcomma, _, _)) ! _ ! _ ! ( _, ( values::QQ_STATEMENT statement, _, _)) ! ( _, ( _,
(do_tleft as do_t1left), _)) ! rest671)) => { my result = values::QQ_STATEMENT (mark_statement src_map (DO(exprwcomma, statement),
do_tleft, semicolonright));
( lr_table::NONTERM 2, (
result, do_t1left, semicolon1right), rest671);
}
; ( 10, ( ( _, ( _, _, (semicolonright as semicolon1right))) ! ( _, ( _, (breakleft as break1left), _)) ! rest671)) => { my result = values::QQ_STATEMENT (
mark_statement src_map (BREAK,
breakleft, semicolonright));
( lr_table::NONTERM 2, ( result, break1left, semicolon1right), rest671);
}
; ( 11, ( ( _, ( _, _, (semicolonright as semicolon1right))) ! ( _, ( _, (continueleft as continue1left), _)) ! rest671)) => { my result = values::QQ_STATEMENT (
mark_statement src_map (CONTINUE,
continueleft, semicolonright));
( lr_table::NONTERM 2, ( result, continue1left, semicolon1right), rest671);
}
; ( 12, ( ( _, ( _, _, (semicolonright as semicolon1right))) ! ( _, ( values::QQ_OPEXPR opexpr, _, _)) ! ( _, ( _, (returnleft as return1left), _)) ! rest671)) => { my result =
values::QQ_STATEMENT (mark_statement src_map (RETURN(opexpr),
returnleft, semicolonright));
( lr_table::NONTERM 2, ( result, return1left, semicolon1right), rest671);
}
; ( 13, ( ( _, ( _, _, (semicolonright as semicolon1right))) ! ( _, ( values::IDENTIFIER identifier, _, _)) ! ( _, ( _, (gotoleft as goto1left), _)) ! rest671)) => { my result =
values::QQ_STATEMENT (mark_statement src_map (GOTO(identifier),
gotoleft, semicolonright));
( lr_table::NONTERM 2, ( result, goto1left, semicolon1right), rest671);
}
; ( 14, ( ( _, ( values::QQ_COMPOUNDSTATEMENT compoundstatement, compoundstatement1left, compoundstatement1right)) ! rest671)) => { my result = values::QQ_STATEMENT (compoundstatement);
(
lr_table::NONTERM 2, ( result, compoundstatement1left, compoundstatement1right), rest671);
}
; ( 15, ( ( _, ( values::QQ_STATEMENT statement, _, (statementright as statement1right))) ! _ ! ( _, ( values::IDENTIFIER identifier, (identifierleft as identifier1left), _)) ! rest671)) =>
{ my result = values::QQ_STATEMENT (mark_statement src_map (LABELED (identifier, statement),
identifierleft, statementright));
( lr_table::NONTERM 2, ( result, identifier1left,
statement1right), rest671);
}
; ( 16, ( ( _, ( values::QQ_STATEMENT statement, _, (statementright as statement1right))) ! _ ! ( _, ( _, (defaultleft as default1left), _)) ! rest671)) => { my result =
values::QQ_STATEMENT (mark_statement src_map (DEFAULT_LABEL(statement),
defaultleft, statementright));
( lr_table::NONTERM 2, ( result, default1left, statement1right), rest671);
}
; ( 17, ( ( _, ( values::QQ_STATEMENT statement, _, (statementright as statement1right))) ! _ ! ( _, ( values::QQ_EXPRWCOMMA exprwcomma, _, _)) ! ( _, ( _, (case_tleft as case_t1left), _
)) ! rest671)) => { my result = values::QQ_STATEMENT (mark_statement src_map (CASE_LABEL(exprwcomma, statement),
case_tleft, statementright));
( lr_table::NONTERM 2, ( result, case_t1left
, statement1right), rest671);
}
; ( 18, ( ( _, ( values::QQ_STATEMENT statement, _, (statementright as statement1right))) ! _ ! ( _, ( values::QQ_EXPRWCOMMA exprwcomma, _, _)) ! _ ! ( _, ( _, (if_tleft as if_t1left),
_)) ! rest671)) => { my result = values::QQ_STATEMENT (mark_statement src_map (IF_THEN (exprwcomma, statement),
if_tleft, statementright));
( lr_table::NONTERM 2, ( result, if_t1left,
statement1right), rest671);
}
; ( 19, ( ( _, ( values::QQ_STATEMENT statement2, _, statement2right)) ! _ ! ( _, ( values::QQ_STATEMENT statement1, _, _)) ! _ ! ( _, ( values::QQ_EXPRWCOMMA exprwcomma, _, _)) ! _ !
( _, ( _, (if_tleft as if_t1left), _)) ! rest671)) => { my result = values::QQ_STATEMENT (
mark_statement src_map (IF_THEN_ELSE (exprwcomma, statement1, statement2),
if_tleft,
statement2right));
( lr_table::NONTERM 2, ( result, if_t1left, statement2right), rest671);
}
; ( 20, ( ( _, ( _, _, (semicolonright as semicolon1right))) ! ( _, ( values::QQ_EXPRWCOMMA exprwcomma, (exprwcommaleft as exprwcomma1left), _)) ! rest671)) => { my result =
values::QQ_STATEMENT (mark_statement src_map (EXPR (exprwcomma),
exprwcommaleft, semicolonright));
( lr_table::NONTERM 2, ( result, exprwcomma1left, semicolon1right), rest671);
}
; ( 21, ( ( _, ( _, (semicolonleft as semicolon1left), (semicolonright as semicolon1right))) ! rest671)) => { my result = values::QQ_STATEMENT (
mark_statement src_map (EXPR(EMPTY_EXPR),
semicolonleft, semicolonright));
( lr_table::NONTERM 2, ( result, semicolon1left, semicolon1right), rest671);
}
; ( 22, ( ( _, ( _, _, semicolon1right)) ! ( _, ( values::QQ_DECLARATION1 declaration1, declaration11left, _)) ! rest671)) => { my result = values::QQ_DECLARATION (declaration1);
(
lr_table::NONTERM 48, ( result, declaration11left, semicolon1right), rest671);
}
; ( 23, ( ( _, ( values::QQ_DECLARATIONSPECIFIERS declarationspecifiers, (declarationspecifiersleft as declarationspecifiers1left), (declarationspecifiersright as declarationspecifiers1right)))
! rest671)) => { my result = values::QQ_DECLARATION1 (
{ insert_decl_names (declarationspecifiers, []);
mark_declaration src_map
(DECLARATION (declarationspecifiers, []),
declarationspecifiersleft, declarationspecifiersright);
}
);
( lr_table::NONTERM 49, ( result, declarationspecifiers1left, declarationspecifiers1right), rest671);
}
; ( 24, ( ( _, ( values::QQ_INITDECLARATORLIST initdeclaratorlist, _, (initdeclaratorlistright as initdeclaratorlist1right))) ! ( _, ( values::QQ_DECLARATIONSPECIFIERS declarationspecifiers, (
declarationspecifiersleft as declarationspecifiers1left), _)) ! rest671)) => { my result = values::QQ_DECLARATION1 (
{ decl = (declarationspecifiers, seq_to_list initdeclaratorlist);
insert_decl_names decl;
mark_declaration src_map
(DECLARATION decl, declarationspecifiersleft, initdeclaratorlistright);
}
);
( lr_table::NONTERM 49, ( result, declarationspecifiers1left, initdeclaratorlist1right), rest671);
}
; ( 25, ( ( _, ( values::QQ_NOTYPEINITDECLARATORLIST notypeinitdeclaratorlist, _, (notypeinitdeclaratorlistright as notypeinitdeclaratorlist1right))) ! ( _, ( values::QQ_DECLARATIONMODIFIERS
declarationmodifiers, (declarationmodifiersleft as declarationmodifiers1left), _)) ! rest671)) => { my result = values::QQ_DECLARATION1 (
{ decl = (declarationmodifiers, seq_to_list notypeinitdeclaratorlist);
insert_decl_names decl;
mark_declaration src_map
(DECLARATION decl, declarationmodifiersleft, notypeinitdeclaratorlistright);
}
);
( lr_table::NONTERM 49, ( result, declarationmodifiers1left, notypeinitdeclaratorlist1right), rest671);
}
; ( 26, ( ( _, ( values::QQ_STATEMENTLIST statementlist, statementlist1left, statementlist1right)) ! rest671)) => { my result = values::QQ_OSTATEMENTLIST (seq_to_list statementlist);
(
lr_table::NONTERM 3, ( result, statementlist1left, statementlist1right), rest671);
}
; ( 27, ( rest671)) => { my result = values::QQ_OSTATEMENTLIST ([]);
( lr_table::NONTERM 3, ( result, default_position, default_position), rest671);
}
; ( 28, ( ( _, ( values::QQ_STATEMENT statement, statement1left, statement1right)) ! rest671)) => { my result = values::QQ_STATEMENTLIST (singleton_seq statement);
( lr_table::NONTERM 4, (
result, statement1left, statement1right), rest671);
}
; ( 29, ( ( _, ( values::QQ_STATEMENT statement, _, statement1right)) ! ( _, ( values::QQ_STATEMENTLIST statementlist, statementlist1left, _)) ! rest671)) => { my result =
values::QQ_STATEMENTLIST (add_to_seq(statement, statementlist));
( lr_table::NONTERM 4, ( result, statementlist1left, statement1right), rest671);
}
; ( 30, ( ( _, ( _, _, (rcurlyright as rcurly1right))) ! _ ! ( _, ( values::QQ_OSTATEMENTLIST ostatementlist, _, _)) ! ( _, ( values::QQ_DECLARATIONLIST declarationlist, _, _)) ! _ ! (
_, ( _, (lcurlyleft as lcurly1left), _)) ! rest671)) => { my result = values::QQ_COMPOUNDSTATEMENT (
mark_statement src_map (COMPOUND ((map DECL (seq_to_list declarationlist)) @ ostatementlist), lcurlyleft, rcurlyright));
( lr_table::NONTERM 5, ( result, lcurly1left, rcurly1right), rest671);
}
; ( 31, ( ( _, ( _, _, (rcurlyright as rcurly1right))) ! ( _, ( values::QQ_OSTATEMENTLIST ostatementlist, _, _)) ! ( _, ( _, (lcurlyleft as lcurly1left), _)) ! rest671)) => { my result
= values::QQ_COMPOUNDSTATEMENT (mark_statement src_map (COMPOUND (ostatementlist), lcurlyleft, rcurlyright));
( lr_table::NONTERM 5, ( result, lcurly1left, rcurly1right), rest671);
}
; ( 32, ( ( _, ( _, amp1left, amp1right)) ! rest671)) => { my result = values::QQ_UNARYOPERATOR (ADDR_OF);
( lr_table::NONTERM 9, ( result, amp1left, amp1right), rest671);
}
; ( 33, ( ( _, ( _, times1left, times1right)) ! rest671)) => { my result = values::QQ_UNARYOPERATOR (STAR);
( lr_table::NONTERM 9, ( result, times1left, times1right), rest671);
}
; ( 34, ( ( _, ( _, plus1left, plus1right)) ! rest671)) => { my result = values::QQ_UNARYOPERATOR (UPLUS);
( lr_table::NONTERM 9, ( result, plus1left, plus1right), rest671);
}
; ( 35, ( ( _, ( _, minus1left, minus1right)) ! rest671)) => { my result = values::QQ_UNARYOPERATOR (NEGATE);
( lr_table::NONTERM 9, ( result, minus1left, minus1right), rest671);
}
; ( 36, ( ( _, ( _, tilde1left, tilde1right)) ! rest671)) => { my result = values::QQ_UNARYOPERATOR (BIT_NOT);
( lr_table::NONTERM 9, ( result, tilde1left, tilde1right), rest671);
}
; ( 37, ( ( _, ( _, bang1left, bang1right)) ! rest671)) => { my result = values::QQ_UNARYOPERATOR (NOT);
( lr_table::NONTERM 9, ( result, bang1left, bang1right), rest671);
}
; ( 38, ( ( _, ( values::QQ_EXPR expr2, _, expr2right)) ! _ ! ( _, ( values::QQ_EXPRWCOMMA exprwcomma1, _, _)) ! _ ! ( _, ( values::QQ_EXPR expr1, expr1left, _)) ! rest671)) => { my
result = values::QQ_EXPR (mark_expression src_map (QUESTION_COLON(expr1, exprwcomma1, expr2), expr1left, expr2right));
( lr_table::NONTERM 6, ( result, expr1left, expr2right), rest671);
}
; ( 39, ( ( _, ( values::QQ_EXPR expr2, _, expr2right)) ! _ ! ( _, ( values::QQ_EXPR expr1, expr1left, _)) ! rest671)) => { my result = values::QQ_EXPR (
mark_expression src_map (BINOP(PLUS_ASSIGN, expr1, expr2), expr1left, expr2right));
( lr_table::NONTERM 6, ( result, expr1left, expr2right), rest671);
}
; ( 40, ( ( _, ( values::QQ_EXPR expr2, _, expr2right)) ! _ ! ( _, ( values::QQ_EXPR expr1, expr1left, _)) ! rest671)) => { my result = values::QQ_EXPR (
mark_expression src_map (BINOP(MINUS_ASSIGN, expr1, expr2), expr1left, expr2right));
( lr_table::NONTERM 6, ( result, expr1left, expr2right), rest671);
}
; ( 41, ( ( _, ( values::QQ_EXPR expr2, _, expr2right)) ! _ ! ( _, ( values::QQ_EXPR expr1, expr1left, _)) ! rest671)) => { my result = values::QQ_EXPR (
mark_expression src_map (BINOP(TIMES_ASSIGN, expr1, expr2), expr1left, expr2right));
( lr_table::NONTERM 6, ( result, expr1left, expr2right), rest671);
}
; ( 42, ( ( _, ( values::QQ_EXPR expr2, _, expr2right)) ! _ ! ( _, ( values::QQ_EXPR expr1, expr1left, _)) ! rest671)) => { my result = values::QQ_EXPR (
mark_expression src_map (BINOP(DIV_ASSIGN, expr1, expr2), expr1left, expr2right));
( lr_table::NONTERM 6, ( result, expr1left, expr2right), rest671);
}
; ( 43, ( ( _, ( values::QQ_EXPR expr2, _, expr2right)) ! _ ! ( _, ( values::QQ_EXPR expr1, expr1left, _)) ! rest671)) => { my result = values::QQ_EXPR (
mark_expression src_map (BINOP(MOD_ASSIGN, expr1, expr2), expr1left, expr2right));
( lr_table::NONTERM 6, ( result, expr1left, expr2right), rest671);
}
; ( 44, ( ( _, ( values::QQ_EXPR expr2, _, expr2right)) ! _ ! ( _, ( values::QQ_EXPR expr1, expr1left, _)) ! rest671)) => { my result = values::QQ_EXPR (
mark_expression src_map (BINOP(XOR_ASSIGN, expr1, expr2), expr1left, expr2right));
( lr_table::NONTERM 6, ( result, expr1left, expr2right), rest671);
}
; ( 45, ( ( _, ( values::QQ_EXPR expr2, _, expr2right)) ! _ ! ( _, ( values::QQ_EXPR expr1, expr1left, _)) ! rest671)) => { my result = values::QQ_EXPR (
mark_expression src_map (BINOP(OR_ASSIGN, expr1, expr2), expr1left, expr2right));
( lr_table::NONTERM 6, ( result, expr1left, expr2right), rest671);
}
; ( 46, ( ( _, ( values::QQ_EXPR expr2, _, expr2right)) ! _ ! ( _, ( values::QQ_EXPR expr1, expr1left, _)) ! rest671)) => { my result = values::QQ_EXPR (
mark_expression src_map (BINOP(AND_ASSIGN, expr1, expr2), expr1left, expr2right));
( lr_table::NONTERM 6, ( result, expr1left, expr2right), rest671);
}
; ( 47, ( ( _, ( values::QQ_EXPR expr2, _, expr2right)) ! _ ! ( _, ( values::QQ_EXPR expr1, expr1left, _)) ! rest671)) => { my result = values::QQ_EXPR (
mark_expression src_map (BINOP(LSHIFT_ASSIGN, expr1, expr2), expr1left, expr2right));
( lr_table::NONTERM 6, ( result, expr1left, expr2right), rest671);
}
; ( 48, ( ( _, ( values::QQ_EXPR expr2, _, expr2right)) ! _ ! ( _, ( values::QQ_EXPR expr1, expr1left, _)) ! rest671)) => { my result = values::QQ_EXPR (
mark_expression src_map (BINOP(RSHIFT_ASSIGN, expr1, expr2), expr1left, expr2right));
( lr_table::NONTERM 6, ( result, expr1left, expr2right), rest671);
}
; ( 49, ( ( _, ( values::QQ_EXPR expr2, _, expr2right)) ! _ ! ( _, ( values::QQ_EXPR expr1, expr1left, _)) ! rest671)) => { my result = values::QQ_EXPR (
mark_expression src_map (BINOP(ASSIGN, expr1, expr2), expr1left, expr2right));
( lr_table::NONTERM 6, ( result, expr1left, expr2right), rest671);
}
; ( 50, ( ( _, ( values::QQ_EXPR expr2, _, expr2right)) ! _ ! ( _, ( values::QQ_EXPR expr1, expr1left, _)) ! rest671)) => { my result = values::QQ_EXPR (
mark_expression src_map (BINOP(OR, expr1, expr2), expr1left, expr2right));
( lr_table::NONTERM 6, ( result, expr1left, expr2right), rest671);
}
; ( 51, ( ( _, ( values::QQ_EXPR expr2, _, expr2right)) ! _ ! ( _, ( values::QQ_EXPR expr1, expr1left, _)) ! rest671)) => { my result = values::QQ_EXPR (
mark_expression src_map (BINOP(AND, expr1, expr2), expr1left, expr2right));
( lr_table::NONTERM 6, ( result, expr1left, expr2right), rest671);
}
; ( 52, ( ( _, ( values::QQ_EXPR expr2, _, expr2right)) ! _ ! ( _, ( values::QQ_EXPR expr1, expr1left, _)) ! rest671)) => { my result = values::QQ_EXPR (
mark_expression src_map (BINOP(BIT_OR, expr1, expr2), expr1left, expr2right));
( lr_table::NONTERM 6, ( result, expr1left, expr2right), rest671);
}
; ( 53, ( ( _, ( values::QQ_EXPR expr2, _, expr2right)) ! _ ! ( _, ( values::QQ_EXPR expr1, expr1left, _)) ! rest671)) => { my result = values::QQ_EXPR (
mark_expression src_map (BINOP(BIT_XOR, expr1, expr2), expr1left, expr2right));
( lr_table::NONTERM 6, ( result, expr1left, expr2right), rest671);
}
; ( 54, ( ( _, ( values::QQ_EXPR expr2, _, expr2right)) ! _ ! ( _, ( values::QQ_EXPR expr1, expr1left, _)) ! rest671)) => { my result = values::QQ_EXPR (
mark_expression src_map (BINOP(BIT_AND, expr1, expr2), expr1left, expr2right));
( lr_table::NONTERM 6, ( result, expr1left, expr2right), rest671);
}
; ( 55, ( ( _, ( values::QQ_EXPR expr2, _, expr2right)) ! _ ! ( _, ( values::QQ_EXPR expr1, expr1left, _)) ! rest671)) => { my result = values::QQ_EXPR (
mark_expression src_map (BINOP(EQ, expr1, expr2), expr1left, expr2right));
( lr_table::NONTERM 6, ( result, expr1left, expr2right), rest671);
}
; ( 56, ( ( _, ( values::QQ_EXPR expr2, _, expr2right)) ! _ ! ( _, ( values::QQ_EXPR expr1, expr1left, _)) ! rest671)) => { my result = values::QQ_EXPR (
mark_expression src_map (BINOP(NEQ, expr1, expr2), expr1left, expr2right));
( lr_table::NONTERM 6, ( result, expr1left, expr2right), rest671);
}
; ( 57, ( ( _, ( values::QQ_EXPR expr2, _, expr2right)) ! _ ! ( _, ( values::QQ_EXPR expr1, expr1left, _)) ! rest671)) => { my result = values::QQ_EXPR (
mark_expression src_map (BINOP(LT, expr1, expr2), expr1left, expr2right));
( lr_table::NONTERM 6, ( result, expr1left, expr2right), rest671);
}
; ( 58, ( ( _, ( values::QQ_EXPR expr2, _, expr2right)) ! _ ! ( _, ( values::QQ_EXPR expr1, expr1left, _)) ! rest671)) => { my result = values::QQ_EXPR (
mark_expression src_map (BINOP(GT, expr1, expr2), expr1left, expr2right));
( lr_table::NONTERM 6, ( result, expr1left, expr2right), rest671);
}
; ( 59, ( ( _, ( values::QQ_EXPR expr2, _, expr2right)) ! _ ! ( _, ( values::QQ_EXPR expr1, expr1left, _)) ! rest671)) => { my result = values::QQ_EXPR (
mark_expression src_map (BINOP(LTE, expr1, expr2), expr1left, expr2right));
( lr_table::NONTERM 6, ( result, expr1left, expr2right), rest671);
}
; ( 60, ( ( _, ( values::QQ_EXPR expr2, _, expr2right)) ! _ ! ( _, ( values::QQ_EXPR expr1, expr1left, _)) ! rest671)) => { my result = values::QQ_EXPR (
mark_expression src_map (BINOP(GTE, expr1, expr2), expr1left, expr2right));
( lr_table::NONTERM 6, ( result, expr1left, expr2right), rest671);
}
; ( 61, ( ( _, ( values::QQ_EXPR expr2, _, expr2right)) ! _ ! ( _, ( values::QQ_EXPR expr1, expr1left, _)) ! rest671)) => { my result = values::QQ_EXPR (
mark_expression src_map (BINOP(LSHIFT, expr1, expr2), expr1left, expr2right));
( lr_table::NONTERM 6, ( result, expr1left, expr2right), rest671);
}
; ( 62, ( ( _, ( values::QQ_EXPR expr2, _, expr2right)) ! _ ! ( _, ( values::QQ_EXPR expr1, expr1left, _)) ! rest671)) => { my result = values::QQ_EXPR (
mark_expression src_map (BINOP(RSHIFT, expr1, expr2), expr1left, expr2right));
( lr_table::NONTERM 6, ( result, expr1left, expr2right), rest671);
}
; ( 63, ( ( _, ( values::QQ_EXPR expr2, _, expr2right)) ! _ ! ( _, ( values::QQ_EXPR expr1, expr1left, _)) ! rest671)) => { my result = values::QQ_EXPR (
mark_expression src_map (BINOP(PLUS, expr1, expr2), expr1left, expr2right));
( lr_table::NONTERM 6, ( result, expr1left, expr2right), rest671);
}
; ( 64, ( ( _, ( values::QQ_EXPR expr2, _, expr2right)) ! _ ! ( _, ( values::QQ_EXPR expr1, expr1left, _)) ! rest671)) => { my result = values::QQ_EXPR (
mark_expression src_map (BINOP(MINUS, expr1, expr2), expr1left, expr2right));
( lr_table::NONTERM 6, ( result, expr1left, expr2right), rest671);
}
; ( 65, ( ( _, ( values::QQ_EXPR expr2, _, expr2right)) ! _ ! ( _, ( values::QQ_EXPR expr1, expr1left, _)) ! rest671)) => { my result = values::QQ_EXPR (
mark_expression src_map (BINOP(TIMES, expr1, expr2), expr1left, expr2right));
( lr_table::NONTERM 6, ( result, expr1left, expr2right), rest671);
}
; ( 66, ( ( _, ( values::QQ_EXPR expr2, _, expr2right)) ! _ ! ( _, ( values::QQ_EXPR expr1, expr1left, _)) ! rest671)) => { my result = values::QQ_EXPR (
mark_expression src_map (BINOP(DIVIDE, expr1, expr2), expr1left, expr2right));
( lr_table::NONTERM 6, ( result, expr1left, expr2right), rest671);
}
; ( 67, ( ( _, ( values::QQ_EXPR expr2, _, expr2right)) ! _ ! ( _, ( values::QQ_EXPR expr1, expr1left, _)) ! rest671)) => { my result = values::QQ_EXPR (
mark_expression src_map (BINOP(MOD, expr1, expr2), expr1left, expr2right));
( lr_table::NONTERM 6, ( result, expr1left, expr2right), rest671);
}
; ( 68, ( ( _, ( _, _, (incright as inc1right))) ! ( _, ( values::QQ_EXPR expr, (exprleft as expr1left), _)) ! rest671)) => { my result = values::QQ_EXPR (
mark_expression src_map (UNOP(POST_INC, expr), exprleft, incright));
( lr_table::NONTERM 6, ( result, expr1left, inc1right), rest671);
}
; ( 69, ( ( _, ( _, _, (decright as dec1right))) ! ( _, ( values::QQ_EXPR expr, (exprleft as expr1left), _)) ! rest671)) => { my result = values::QQ_EXPR (
mark_expression src_map (UNOP(POST_DEC, expr), exprleft, decright));
( lr_table::NONTERM 6, ( result, expr1left, dec1right), rest671);
}
; ( 70, ( ( _, ( values::QQ_EXPR expr, _, (exprright as expr1right))) ! ( _, ( _, (incleft as inc1left), _)) ! rest671)) => { my result = values::QQ_EXPR (
mark_expression src_map (UNOP(PRE_INC, expr), incleft, exprright));
( lr_table::NONTERM 6, ( result, inc1left, expr1right), rest671);
}
; ( 71, ( ( _, ( values::QQ_EXPR expr, _, (exprright as expr1right))) ! ( _, ( _, (decleft as dec1left), _)) ! rest671)) => { my result = values::QQ_EXPR (
mark_expression src_map (UNOP(PRE_DEC, expr), decleft, exprright));
( lr_table::NONTERM 6, ( result, dec1left, expr1right), rest671);
}
; ( 72, ( ( _, ( values::QQ_EXPR expr, _, (exprright as expr1right))) ! ( _, ( values::QQ_UNARYOPERATOR unaryoperator, (unaryoperatorleft as unaryoperator1left), _)) ! rest671)) => { my
result = values::QQ_EXPR (mark_expression src_map (UNOP(unaryoperator, expr), unaryoperatorleft, exprright));
( lr_table::NONTERM 6, ( result, unaryoperator1left, expr1right), rest671);
}
; ( 73, ( ( _, ( values::QQ_EXPR expr, _, (exprright as expr1right))) ! ( _, ( _, (sizeofleft as sizeof1left), _)) ! rest671)) => { my result = values::QQ_EXPR (
mark_expression src_map (UNOP(SIZEOF, expr), sizeofleft, exprright));
( lr_table::NONTERM 6, ( result, sizeof1left, expr1right), rest671);
}
; ( 74, ( ( _, ( values::QQ_EXPR expr, _, (exprright as expr1right))) ! _ ! ( _, ( values::QQ_TYPENAME typename, _, _)) ! ( _, ( _, (lparenleft as lparen1left), _)) ! rest671)) => {
my result = values::QQ_EXPR (mark_expression src_map (CAST (typename, expr), lparenleft, exprright));
( lr_table::NONTERM 6, ( result, lparen1left, expr1right), rest671);
}
; ( 75, ( ( _, ( _, _, (rparenright as rparen1right))) ! ( _, ( values::QQ_TYPENAME typename, _, _)) ! _ ! ( _, ( _, (sizeofleft as sizeof1left), _)) ! rest671)) => { my result =
values::QQ_EXPR (mark_expression src_map (UNOP(SIZEOF_TYPE typename, EMPTY_EXPR), sizeofleft, rparenright));
( lr_table::NONTERM 6, ( result, sizeof1left, rparen1right), rest671);
}
; ( 76, ( ( _, ( _, _, (rbraceright as rbrace1right))) ! ( _, ( values::QQ_EXPRWCOMMA exprwcomma, _, _)) ! _ ! ( _, ( values::QQ_EXPR expr, (exprleft as expr1left), _)) ! rest671)) =>
{ my result = values::QQ_EXPR (mark_expression src_map (BINOP(SUB, expr, exprwcomma), exprleft, rbraceright));
( lr_table::NONTERM 6, ( result, expr1left, rbrace1right), rest671);
}
; ( 77, ( ( _, ( _, _, (rparenright as rparen1right))) ! _ ! ( _, ( values::QQ_EXPR expr, (exprleft as expr1left), _)) ! rest671)) => { my result = values::QQ_EXPR (
mark_expression src_map (CALL(expr,[]), exprleft, rparenright));
( lr_table::NONTERM 6, ( result, expr1left, rparen1right), rest671);
}
; ( 78, ( ( _, ( _, _, (rparenright as rparen1right))) ! ( _, ( values::QQ_ARGUMENTEXPRLIST argumentexprlist, _, _)) ! _ ! ( _, ( values::QQ_EXPR expr, (exprleft as expr1left), _)) !
rest671)) => { my result = values::QQ_EXPR (mark_expression src_map (CALL(expr, seq_to_list argumentexprlist), exprleft, rparenright));
( lr_table::NONTERM 6, ( result, expr1left, rparen1right)
, rest671);
}
; ( 79, ( ( _, ( values::IDENTIFIER identifier, _, (identifierright as identifier1right))) ! _ ! ( _, ( values::QQ_EXPR expr, (exprleft as expr1left), _)) ! rest671)) => { my result =
values::QQ_EXPR (mark_expression src_map (BINOP(DOT, expr, ID(identifier)), exprleft, identifierright));
( lr_table::NONTERM 6, ( result, expr1left, identifier1right), rest671);
}
; ( 80, ( ( _, ( values::IDENTIFIER identifier, _, (identifierright as identifier1right))) ! _ ! ( _, ( values::QQ_EXPR expr, (exprleft as expr1left), _)) ! rest671)) => { my result =
values::QQ_EXPR (mark_expression src_map (BINOP(ARROW, expr, ID(identifier)), exprleft, identifierright));
( lr_table::NONTERM 6, ( result, expr1left, identifier1right), rest671);
}
; ( 81, ( ( _, ( values::TYPE_NAME type_name, _, (type_nameright as type_name1right))) ! _ ! ( _, ( values::QQ_EXPR expr, (exprleft as expr1left), _)) ! rest671)) => { my result =
values::QQ_EXPR (mark_expression src_map (BINOP(DOT, expr, ID(type_name)), exprleft, type_nameright));
( lr_table::NONTERM 6, ( result, expr1left, type_name1right), rest671);
}
; ( 82, ( ( _, ( values::TYPE_NAME type_name, _, (type_nameright as type_name1right))) ! _ ! ( _, ( values::QQ_EXPR expr, (exprleft as expr1left), _)) ! rest671)) => { my result =
values::QQ_EXPR (mark_expression src_map (BINOP(ARROW, expr, ID(type_name)), exprleft, type_nameright));
( lr_table::NONTERM 6, ( result, expr1left, type_name1right), rest671);
}
; ( 83, ( ( _, ( _, _, (rparenright as rparen1right))) ! ( _, ( values::QQ_EXPRWCOMMA exprwcomma, _, _)) ! ( _, ( _, (lparenleft as lparen1left), _)) ! rest671)) => { my result =
values::QQ_EXPR (mark_expression src_map (exprwcomma, lparenleft, rparenright));
( lr_table::NONTERM 6, ( result, lparen1left, rparen1right), rest671);
}
; ( 84, ( ( _, ( values::DECNUM decnum, (decnumleft as decnum1left), (decnumright as decnum1right))) ! rest671)) => { my result = values::QQ_EXPR (
mark_expression src_map (INT_CONST decnum, decnumleft, decnumright));
( lr_table::NONTERM 6, ( result, decnum1left, decnum1right), rest671);
}
; ( 85, ( ( _, ( values::REALNUM realnum, (realnumleft as realnum1left), (realnumright as realnum1right))) ! rest671)) => { my result = values::QQ_EXPR (
mark_expression src_map (REAL_CONST realnum, realnumleft, realnumright));
( lr_table::NONTERM 6, ( result, realnum1left, realnum1right), rest671);
}
; ( 86, ( ( _, ( values::CCONST cconst, (cconstleft as cconst1left), (cconstright as cconst1right))) ! rest671)) => { my result = values::QQ_EXPR (
mark_expression src_map (INT_CONST cconst, cconstleft, cconstright));
( lr_table::NONTERM 6, ( result, cconst1left, cconst1right), rest671);
}
; ( 87, ( ( _, ( values::IDENTIFIER identifier, (identifierleft as identifier1left), (identifierright as identifier1right))) ! rest671)) => { my result = values::QQ_EXPR (
mark_expression src_map (ID(identifier), identifierleft, identifierright));
( lr_table::NONTERM 6, ( result, identifier1left, identifier1right), rest671);
}
; ( 88, ( ( _, ( values::QQ_STRINGS strings, (stringsleft as strings1left), (stringsright as strings1right))) ! rest671)) => { my result = values::QQ_EXPR (
mark_expression src_map (STRING(strings), stringsleft, stringsright));
( lr_table::NONTERM 6, ( result, strings1left, strings1right), rest671);
}
; ( 89, ( ( _, ( values::STRING_CONSTANT string_constant, string_constant1left, string_constant1right)) ! rest671)) => { my result = values::QQ_STRINGS (string_constant);
( lr_table::NONTERM
63, ( result, string_constant1left, string_constant1right), rest671);
}
; ( 90, ( ( _, ( values::QQ_STRINGS strings, _, strings1right)) ! ( _, ( values::STRING_CONSTANT string_constant, string_constant1left, _)) ! rest671)) => { my result = values::QQ_STRINGS
(string_constant + strings);
( lr_table::NONTERM 63, ( result, string_constant1left, strings1right), rest671);
}
; ( 91, ( ( _, ( values::QQ_EXPR expr, expr1left, expr1right)) ! rest671)) => { my result = values::QQ_EXPRWCOMMA (expr);
( lr_table::NONTERM 8, ( result, expr1left, expr1right), rest671)
;
}
; ( 92, ( ( _, ( values::QQ_EXPR expr, _, (exprright as expr1right))) ! _ ! ( _, ( values::QQ_EXPRWCOMMA exprwcomma, (exprwcommaleft as exprwcomma1left), _)) ! rest671)) => { my result =
values::QQ_EXPRWCOMMA (mark_expression src_map (BINOP(COMMA, exprwcomma, expr), exprwcommaleft, exprright));
( lr_table::NONTERM 8, ( result, exprwcomma1left, expr1right), rest671);
}
; ( 93, ( rest671)) => { my result = values::QQ_OPEXPR (EMPTY_EXPR);
( lr_table::NONTERM 7, ( result, default_position, default_position), rest671);
}
; ( 94, ( ( _, ( values::QQ_EXPRWCOMMA exprwcomma, exprwcomma1left, exprwcomma1right)) ! rest671)) => { my result = values::QQ_OPEXPR (exprwcomma);
( lr_table::NONTERM 7, ( result,
exprwcomma1left, exprwcomma1right), rest671);
}
; ( 95, ( ( _, ( values::QQ_EXPR expr, expr1left, expr1right)) ! rest671)) => { my result = values::QQ_ARGUMENTEXPRLIST (singleton_seq expr);
( lr_table::NONTERM 10, ( result, expr1left,
expr1right), rest671);
}
; ( 96, ( ( _, ( values::QQ_EXPR expr, _, expr1right)) ! _ ! ( _, ( values::QQ_ARGUMENTEXPRLIST argumentexprlist, argumentexprlist1left, _)) ! rest671)) => { my result =
values::QQ_ARGUMENTEXPRLIST (add_to_seq(expr, argumentexprlist));
( lr_table::NONTERM 10, ( result, argumentexprlist1left, expr1right), rest671);
}
; ( 97, ( ( _, ( values::QQ_SPECIFIERQUALIFIERLIST specifierqualifierlist, specifierqualifierlist1left, specifierqualifierlist1right)) ! rest671)) => { my result = values::QQ_TYPENAME (
specifierqualifierlist);
( lr_table::NONTERM 36, ( result, specifierqualifierlist1left, specifierqualifierlist1right), rest671);
}
; ( 98, ( ( _, ( values::QQ_ABSTRACTDECLARATOR abstractdeclarator, _, abstractdeclarator1right)) ! ( _, ( values::QQ_SPECIFIERQUALIFIERLIST specifierqualifierlist, specifierqualifierlist1left
, _)) ! rest671)) => { my result = values::QQ_TYPENAME (#1 (ctype_decr_to_type_name (specifierqualifierlist, abstractdeclarator)));
( lr_table::NONTERM 36, ( result, specifierqualifierlist1left
, abstractdeclarator1right), rest671);
}
; ( 99, ( ( _, ( values::QQ_RESERVEDECLARATIONSPECIFIER reservedeclarationspecifier, _, reservedeclarationspecifier1right)) ! ( _, ( values::QQ_TYPESPECIFIER typespecifier, typespecifier1left
, _)) ! rest671)) => { my result = values::QQ_DECLARATIONSPECIFIERS (add_specifier (typespecifier,
reservedeclarationspecifier));
( lr_table::NONTERM 28, ( result,
typespecifier1left, reservedeclarationspecifier1right), rest671);
}
; ( 100, ( ( _, ( values::QQ_RESERVEDECLARATIONSPECIFIER reservedeclarationspecifier, _, reservedeclarationspecifier1right)) ! ( _, ( values::QQ_TYPESPECIFIER typespecifier, _, _)) ! ( _, (
values::QQ_DECLARATIONMODIFIERS declarationmodifiers, declarationmodifiers1left, _)) ! rest671)) => { my result = values::QQ_DECLARATIONSPECIFIERS (
add_all (declarationmodifiers,
add_specifier (typespecifier,
reservedeclarationspecifier)));
( lr_table::NONTERM 28, ( result,
declarationmodifiers1left, reservedeclarationspecifier1right), rest671);
}
; ( 101, ( rest671)) => { my result = values::QQ_RESERVEDECLARATIONSPECIFIER (unknown);
( lr_table::NONTERM 30, ( result, default_position, default_position), rest671);
}
; ( 102, ( ( _, ( values::QQ_SPECIFIERQUALIFIERRESERVED specifierqualifierreserved, _, specifierqualifierreserved1right)) ! ( _, ( values::QQ_RESERVEDECLARATIONSPECIFIER
reservedeclarationspecifier, reservedeclarationspecifier1left, _)) ! rest671)) => { my result = values::QQ_RESERVEDECLARATIONSPECIFIER (
{ my { qualifiers, specifiers } = specifierqualifierreserved;
decltype = { qualifiers, specifiers, storage => [] };
add_all (decltype, reservedeclarationspecifier);
}
);
( lr_table::NONTERM 30, ( result, reservedeclarationspecifier1left, specifierqualifierreserved1right), rest671);
}
; ( 103, ( ( _, ( values::QQ_STORAGEILKSPECIFIER storageilkspecifier, _, storageilkspecifier1right)) ! ( _, ( values::QQ_RESERVEDECLARATIONSPECIFIER reservedeclarationspecifier,
reservedeclarationspecifier1left, _)) ! rest671)) => { my result = values::QQ_RESERVEDECLARATIONSPECIFIER (
add_storage (storageilkspecifier,
reservedeclarationspecifier));
( lr_table::NONTERM 30, ( result, reservedeclarationspecifier1left,
storageilkspecifier1right), rest671);
}
; ( 104, ( ( _, ( values::QQ_TYPESPECIFIERRESERVED typespecifierreserved, typespecifierreserved1left, typespecifierreserved1right)) ! rest671)) => { my result =
values::QQ_SPECIFIERQUALIFIERRESERVED ({ qualifiers => [], specifiers => [typespecifierreserved] });
( lr_table::NONTERM 31, ( result, typespecifierreserved1left, typespecifierreserved1right),
rest671);
}
; ( 105, ( ( _, ( values::QQ_TYPEQUALIFIER typequalifier, typequalifier1left, typequalifier1right)) ! rest671)) => { my result = values::QQ_SPECIFIERQUALIFIERRESERVED (
{ qualifiers => [typequalifier], specifiers => [] });
( lr_table::NONTERM 31, ( result, typequalifier1left, typequalifier1right), rest671);
}
; ( 106, ( ( _, ( values::QQ_STRUCTORUNIONSPECIFIER structorunionspecifier, structorunionspecifier1left, structorunionspecifier1right)) ! rest671)) => { my result =
values::QQ_SPECIFIERQUALIFIERRESERVED ({ qualifiers => [], specifiers => [structorunionspecifier] });
( lr_table::NONTERM 31, ( result, structorunionspecifier1left, structorunionspecifier1right),
rest671);
}
; ( 107, ( ( _, ( values::QQ_ENUMSPECIFIER enumspecifier, enumspecifier1left, enumspecifier1right)) ! rest671)) => { my result = values::QQ_SPECIFIERQUALIFIERRESERVED (
{ qualifiers => [], specifiers => [enumspecifier] });
( lr_table::NONTERM 31, ( result, enumspecifier1left, enumspecifier1right), rest671);
}
; ( 108, ( ( _, ( values::QQ_STORAGEILKSPECIFIER storageilkspecifier, storageilkspecifier1left, storageilkspecifier1right)) ! rest671)) => { my result = values::QQ_DECLARATIONMODIFIERS (
{ storage => [storageilkspecifier],
qualifiers => [],
specifiers => [] });
( lr_table::NONTERM 29, ( result, storageilkspecifier1left, storageilkspecifier1right), rest671)
;
}
; ( 109, ( ( _, ( values::QQ_STORAGEILKSPECIFIER storageilkspecifier, _, storageilkspecifier1right)) ! ( _, ( values::QQ_DECLARATIONMODIFIERS declarationmodifiers, declarationmodifiers1left,
_)) ! rest671)) => { my result = values::QQ_DECLARATIONMODIFIERS (add_storage(storageilkspecifier, declarationmodifiers));
( lr_table::NONTERM 29, ( result, declarationmodifiers1left,
storageilkspecifier1right), rest671);
}
; ( 110, ( ( _, ( values::QQ_TYPEQUALIFIER typequalifier, typequalifier1left, typequalifier1right)) ! rest671)) => { my result = values::QQ_DECLARATIONMODIFIERS (
{ specifiers => [],
storage => [],
qualifiers => [typequalifier] });
( lr_table::NONTERM 29, ( result, typequalifier1left, typequalifier1right), rest671);
}
; ( 111, ( ( _, ( values::QQ_TYPEQUALIFIER typequalifier, _, typequalifier1right)) ! ( _, ( values::QQ_DECLARATIONMODIFIERS declarationmodifiers, declarationmodifiers1left, _)) ! rest671))
=> { my result = values::QQ_DECLARATIONMODIFIERS (add_qualifier(typequalifier, declarationmodifiers));
( lr_table::NONTERM 29, ( result, declarationmodifiers1left, typequalifier1right),
rest671);
}
; ( 112, ( ( _, ( values::QQ_RESERVEDSPECIFIERQUALIFIERS reservedspecifierqualifiers, _, reservedspecifierqualifiers1right)) ! ( _, ( values::QQ_TYPESPECIFIER typespecifier, typespecifier1left
, _)) ! rest671)) => { my result = values::QQ_SPECIFIERQUALIFIERLIST (
{ my { specifiers, qualifiers } = reservedspecifierqualifiers;
{ specifiers => typespecifier ! specifiers, qualifiers };
}
);
( lr_table::NONTERM 41, ( result, typespecifier1left, reservedspecifierqualifiers1right), rest671);
}
; ( 113, ( ( _, ( values::QQ_RESERVEDSPECIFIERQUALIFIERS reservedspecifierqualifiers, _, reservedspecifierqualifiers1right)) ! ( _, ( values::QQ_TYPESPECIFIER typespecifier, _, _)) ! ( _, (
values::QQ_TYPEQUALIFIERLIST typequalifierlist, typequalifierlist1left, _)) ! rest671)) => { my result = values::QQ_SPECIFIERQUALIFIERLIST (
{ my { specifiers, qualifiers } = reservedspecifierqualifiers;
{ specifiers => typespecifier ! specifiers
, qualifiers => typequalifierlist@qualifiers
};
}
);
( lr_table::NONTERM 41, ( result, typequalifierlist1left, reservedspecifierqualifiers1right), rest671);
}
; ( 114, ( rest671)) => { my result = values::QQ_RESERVEDSPECIFIERQUALIFIERS ({ qualifiers => [], specifiers => [] });
( lr_table::NONTERM 32, ( result, default_position, default_position),
rest671);
}
; ( 115, ( ( _, ( values::QQ_SPECIFIERQUALIFIERRESERVED specifierqualifierreserved, _, specifierqualifierreserved1right)) ! ( _, ( values::QQ_RESERVEDSPECIFIERQUALIFIERS
reservedspecifierqualifiers, reservedspecifierqualifiers1left, _)) ! rest671)) => { my result = values::QQ_RESERVEDSPECIFIERQUALIFIERS (
{ my { specifiers => s1, qualifiers => q1 } = reservedspecifierqualifiers;
my { specifiers => s2, qualifiers => q2 } = specifierqualifierreserved;
{ specifiers => s1@s2, qualifiers => q1@q2 };
}
);
( lr_table::NONTERM 32, ( result, reservedspecifierqualifiers1left, specifierqualifierreserved1right), rest671);
}
; ( 116, ( ( _, ( values::QQ_TYPEQUALIFIER typequalifier, typequalifier1left, typequalifier1right)) ! rest671)) => { my result = values::QQ_TYPEQUALIFIERLIST ([typequalifier]);
(
lr_table::NONTERM 40, ( result, typequalifier1left, typequalifier1right), rest671);
}
; ( 117, ( ( _, ( values::QQ_TYPEQUALIFIERLIST typequalifierlist, _, typequalifierlist1right)) ! ( _, ( values::QQ_TYPEQUALIFIER typequalifier, typequalifier1left, _)) ! rest671)) => { my
result = values::QQ_TYPEQUALIFIERLIST (typequalifier ! typequalifierlist);
( lr_table::NONTERM 40, ( result, typequalifier1left, typequalifierlist1right), rest671);
}
; ( 118, ( ( _, ( values::QQ_TYPESPECIFIERRESERVED typespecifierreserved, typespecifierreserved1left, typespecifierreserved1right)) ! rest671)) => { my result = values::QQ_TYPESPECIFIER (
typespecifierreserved);
( lr_table::NONTERM 37, ( result, typespecifierreserved1left, typespecifierreserved1right), rest671);
}
; ( 119, ( ( _, ( values::QQ_STRUCTORUNIONSPECIFIER structorunionspecifier, structorunionspecifier1left, structorunionspecifier1right)) ! rest671)) => { my result = values::QQ_TYPESPECIFIER (
structorunionspecifier);
( lr_table::NONTERM 37, ( result, structorunionspecifier1left, structorunionspecifier1right), rest671);
}
; ( 120, ( ( _, ( values::QQ_ENUMSPECIFIER enumspecifier, enumspecifier1left, enumspecifier1right)) ! rest671)) => { my result = values::QQ_TYPESPECIFIER (enumspecifier);
( lr_table::NONTERM
37, ( result, enumspecifier1left, enumspecifier1right), rest671);
}
; ( 121, ( ( _, ( values::TYPE_NAME type_name, type_name1left, type_name1right)) ! rest671)) => { my result = values::QQ_TYPESPECIFIER (TYPEDEF_NAME type_name);
( lr_table::NONTERM 37, (
result, type_name1left, type_name1right), rest671);
}
; ( 122, ( ( _, ( _, void1left, void1right)) ! rest671)) => { my result = values::QQ_TYPESPECIFIERRESERVED (VOID);
( lr_table::NONTERM 38, ( result, void1left, void1right), rest671);
}
; ( 123, ( ( _, ( _, char1left, char1right)) ! rest671)) => { my result = values::QQ_TYPESPECIFIERRESERVED (CHAR);
( lr_table::NONTERM 38, ( result, char1left, char1right), rest671);
}
; ( 124, ( ( _, ( _, short1left, short1right)) ! rest671)) => { my result = values::QQ_TYPESPECIFIERRESERVED (SHORT);
( lr_table::NONTERM 38, ( result, short1left, short1right), rest671)
;
}
; ( 125, ( ( _, ( _, int1left, int1right)) ! rest671)) => { my result = values::QQ_TYPESPECIFIERRESERVED (INT);
( lr_table::NONTERM 38, ( result, int1left, int1right), rest671);
}
; ( 126, ( ( _, ( _, long1left, long1right)) ! rest671)) => { my result = values::QQ_TYPESPECIFIERRESERVED (LONG);
( lr_table::NONTERM 38, ( result, long1left, long1right), rest671);
}
; ( 127, ( ( _, ( _, float1left, float1right)) ! rest671)) => { my result = values::QQ_TYPESPECIFIERRESERVED (FLOAT);
( lr_table::NONTERM 38, ( result, float1left, float1right), rest671)
;
}
; ( 128, ( ( _, ( _, double1left, double1right)) ! rest671)) => { my result = values::QQ_TYPESPECIFIERRESERVED (DOUBLE);
( lr_table::NONTERM 38, ( result, double1left, double1right),
rest671);
}
; ( 129, ( ( _, ( _, signed1left, signed1right)) ! rest671)) => { my result = values::QQ_TYPESPECIFIERRESERVED (SIGNED);
( lr_table::NONTERM 38, ( result, signed1left, signed1right),
rest671);
}
; ( 130, ( ( _, ( _, unsigned1left, unsigned1right)) ! rest671)) => { my result = values::QQ_TYPESPECIFIERRESERVED (UNSIGNED);
( lr_table::NONTERM 38, ( result, unsigned1left,
unsigned1right), rest671);
}
; ( 131, ( ( _, ( _, _, rcurly1right)) ! ( _, ( values::QQ_STRUCTDECLARATIONLIST structdeclarationlist, _, _)) ! _ ! ( _, ( values::QQ_STRUCTORUNION structorunion, structorunion1left, _)
) ! rest671)) => { my result = values::QQ_STRUCTORUNIONSPECIFIER (STRUCT { is_struct => structorunion, tag_opt => NULL, members => seq_to_list structdeclarationlist } );
( lr_table::NONTERM 43, (
result, structorunion1left, rcurly1right), rest671);
}
; ( 132, ( ( _, ( _, _, rcurly1right)) ! ( _, ( values::QQ_STRUCTDECLARATIONLIST structdeclarationlist, _, _)) ! _ ! ( _, ( values::IDENTIFIER identifier, _, _)) ! ( _, (
values::QQ_STRUCTORUNION structorunion, structorunion1left, _)) ! rest671)) => { my result = values::QQ_STRUCTORUNIONSPECIFIER (
STRUCT{ is_struct => structorunion, tag_opt => THE identifier, members => seq_to_list structdeclarationlist } );
( lr_table::NONTERM 43, ( result, structorunion1left, rcurly1right), rest671);
}
; ( 133, ( ( _, ( _, _, rcurly1right)) ! ( _, ( values::QQ_STRUCTDECLARATIONLIST structdeclarationlist, _, _)) ! _ ! ( _, ( values::TYPE_NAME type_name, _, _)) ! ( _, (
values::QQ_STRUCTORUNION structorunion, structorunion1left, _)) ! rest671)) => { my result = values::QQ_STRUCTORUNIONSPECIFIER (
STRUCT{ is_struct => structorunion, tag_opt => THE type_name, members => seq_to_list structdeclarationlist } );
( lr_table::NONTERM 43, ( result, structorunion1left, rcurly1right), rest671);
}
; ( 134, ( ( _, ( values::IDENTIFIER identifier, _, identifier1right)) ! ( _, ( values::QQ_STRUCTORUNION structorunion, structorunion1left, _)) ! rest671)) => { my result =
values::QQ_STRUCTORUNIONSPECIFIER (STRUCT_TAG { is_struct => structorunion, name => identifier } );
( lr_table::NONTERM 43, ( result, structorunion1left, identifier1right), rest671);
}
; ( 135, ( ( _, ( values::TYPE_NAME type_name, _, type_name1right)) ! ( _, ( values::QQ_STRUCTORUNION structorunion, structorunion1left, _)) ! rest671)) => { my result =
values::QQ_STRUCTORUNIONSPECIFIER (STRUCT_TAG { is_struct => structorunion, name => type_name } );
( lr_table::NONTERM 43, ( result, structorunion1left, type_name1right), rest671);
}
; ( 136, ( ( _, ( _, struct1left, struct1right)) ! rest671)) => { my result = values::QQ_STRUCTORUNION (TRUE);
( lr_table::NONTERM 54, ( result, struct1left, struct1right), rest671);
}
; ( 137, ( ( _, ( _, union1left, union1right)) ! rest671)) => { my result = values::QQ_STRUCTORUNION (FALSE);
( lr_table::NONTERM 54, ( result, union1left, union1right), rest671);
}
; ( 138, ( ( _, ( values::QQ_STRUCTDECLARATION structdeclaration, structdeclaration1left, structdeclaration1right)) ! rest671)) => { my result = values::QQ_STRUCTDECLARATIONLIST (
singleton_seq structdeclaration);
( lr_table::NONTERM 59, ( result, structdeclaration1left, structdeclaration1right), rest671);
}
; ( 139, ( ( _, ( values::QQ_STRUCTDECLARATION structdeclaration, _, structdeclaration1right)) ! ( _, ( values::QQ_STRUCTDECLARATIONLIST structdeclarationlist, structdeclarationlist1left, _))
! rest671)) => { my result = values::QQ_STRUCTDECLARATIONLIST (add_to_seq(structdeclaration, structdeclarationlist));
( lr_table::NONTERM 59, ( result, structdeclarationlist1left,
structdeclaration1right), rest671);
}
; ( 140, ( ( _, ( _, _, semicolon1right)) ! ( _, ( values::QQ_STRUCTDECLARATORLIST structdeclaratorlist, _, _)) ! ( _, ( values::QQ_SPECIFIERQUALIFIERLIST specifierqualifierlist,
specifierqualifierlist1left, _)) ! rest671)) => { my result = values::QQ_STRUCTDECLARATION ((specifierqualifierlist, seq_to_list structdeclaratorlist));
( lr_table::NONTERM 60, ( result,
specifierqualifierlist1left, semicolon1right), rest671);
}
; ( 141, ( ( _, ( _, _, semicolon1right)) ! ( _, ( values::QQ_NOTYPESTRUCTDECLARATORLIST notypestructdeclaratorlist, _, _)) ! ( _, ( values::QQ_TYPEQUALIFIERLIST typequalifierlist,
typequalifierlist1left, _)) ! rest671)) => { my result = values::QQ_STRUCTDECLARATION (
{ ct = { qualifiers => typequalifierlist, specifiers => [] };
(ct, seq_to_list notypestructdeclaratorlist);
}
);
(
lr_table::NONTERM 60, ( result, typequalifierlist1left, semicolon1right), rest671);
}
; ( 142, ( ( _, ( values::QQ_STRUCTDECLARATOR structdeclarator, structdeclarator1left, structdeclarator1right)) ! rest671)) => { my result = values::QQ_STRUCTDECLARATORLIST (
singleton_seq structdeclarator);
( lr_table::NONTERM 57, ( result, structdeclarator1left, structdeclarator1right), rest671);
}
; ( 143, ( ( _, ( values::QQ_STRUCTDECLARATOR structdeclarator, _, structdeclarator1right)) ! _ ! ( _, ( values::QQ_STRUCTDECLARATORLIST structdeclaratorlist, structdeclaratorlist1left, _))
! rest671)) => { my result = values::QQ_STRUCTDECLARATORLIST (add_to_seq(structdeclarator, structdeclaratorlist));
( lr_table::NONTERM 57, ( result, structdeclaratorlist1left,
structdeclarator1right), rest671);
}
; ( 144, ( ( _, ( values::QQ_NOTYPESTRUCTDECLARATOR notypestructdeclarator, notypestructdeclarator1left, notypestructdeclarator1right)) ! rest671)) => { my result =
values::QQ_NOTYPESTRUCTDECLARATORLIST (singleton_seq notypestructdeclarator);
( lr_table::NONTERM 58, ( result, notypestructdeclarator1left, notypestructdeclarator1right), rest671);
}
; ( 145, ( ( _, ( values::QQ_STRUCTDECLARATOR structdeclarator, _, structdeclarator1right)) ! _ ! ( _, ( values::QQ_NOTYPESTRUCTDECLARATORLIST notypestructdeclaratorlist,
notypestructdeclaratorlist1left, _)) ! rest671)) => { my result = values::QQ_NOTYPESTRUCTDECLARATORLIST (add_to_seq(structdeclarator, notypestructdeclaratorlist));
( lr_table::NONTERM 58, (
result, notypestructdeclaratorlist1left, structdeclarator1right), rest671);
}
; ( 146, ( ( _, ( values::QQ_DECLARATOR declarator, declarator1left, declarator1right)) ! rest671)) => { my result = values::QQ_STRUCTDECLARATOR (declarator, EMPTY_EXPR);
( lr_table::NONTERM
55, ( result, declarator1left, declarator1right), rest671);
}
; ( 147, ( ( _, ( values::QQ_EXPR expr, _, expr1right)) ! ( _, ( _, colon1left, _)) ! rest671)) => { my result = values::QQ_STRUCTDECLARATOR (EMPTY_DECR, expr);
( lr_table::NONTERM 55, (
result, colon1left, expr1right), rest671);
}
; ( 148, ( ( _, ( values::QQ_EXPR expr, _, expr1right)) ! _ ! ( _, ( values::QQ_DECLARATOR declarator, declarator1left, _)) ! rest671)) => { my result = values::QQ_STRUCTDECLARATOR (
declarator, expr);
( lr_table::NONTERM 55, ( result, declarator1left, expr1right), rest671);
}
; ( 149, ( ( _, ( values::QQ_NOTYPEDECLARATOR notypedeclarator, notypedeclarator1left, notypedeclarator1right)) ! rest671)) => { my result = values::QQ_NOTYPESTRUCTDECLARATOR (
notypedeclarator, EMPTY_EXPR);
( lr_table::NONTERM 56, ( result, notypedeclarator1left, notypedeclarator1right), rest671);
}
; ( 150, ( ( _, ( values::QQ_EXPR expr, _, expr1right)) ! ( _, ( _, colon1left, _)) ! rest671)) => { my result = values::QQ_NOTYPESTRUCTDECLARATOR (EMPTY_DECR, expr);
( lr_table::NONTERM
56, ( result, colon1left, expr1right), rest671);
}
; ( 151, ( ( _, ( values::QQ_EXPR expr, _, expr1right)) ! _ ! ( _, ( values::QQ_NOTYPEDECLARATOR notypedeclarator, notypedeclarator1left, _)) ! rest671)) => { my result =
values::QQ_NOTYPESTRUCTDECLARATOR (notypedeclarator, expr);
( lr_table::NONTERM 56, ( result, notypedeclarator1left, expr1right), rest671);
}
; ( 152, ( ( _, ( _, const1left, const1right)) ! rest671)) => { my result = values::QQ_TYPEQUALIFIER (CONST);
( lr_table::NONTERM 39, ( result, const1left, const1right), rest671);
}
; ( 153, ( ( _, ( _, volatile1left, volatile1right)) ! rest671)) => { my result = values::QQ_TYPEQUALIFIER (VOLATILE);
( lr_table::NONTERM 39, ( result, volatile1left, volatile1right),
rest671);
}
; ( 154, ( ( _, ( _, _, rcurly1right)) ! ( _, ( values::QQ_TRAILINGCOMMA trailingcomma, _, _)) ! ( _, ( values::QQ_ENUMERATORLIST enumeratorlist, _, _)) ! _ ! ( _, ( _, enum_t1left,
_)) ! rest671)) => { my result = values::QQ_ENUMSPECIFIER (ENUM{ tag_opt => NULL, enumerators => seq_to_list enumeratorlist, trailing_comma => trailingcomma } );
( lr_table::NONTERM 42, ( result
, enum_t1left, rcurly1right), rest671);
}
; ( 155, ( ( _, ( _, _, rcurly1right)) ! ( _, ( values::QQ_TRAILINGCOMMA trailingcomma, _, _)) ! ( _, ( values::QQ_ENUMERATORLIST enumeratorlist, _, _)) ! _ ! ( _, ( values::IDENTIFIER
identifier, _, _)) ! ( _, ( _, enum_t1left, _)) ! rest671)) => { my result = values::QQ_ENUMSPECIFIER (
ENUM{ tag_opt => THE(identifier), enumerators => seq_to_list enumeratorlist, trailing_comma => trailingcomma } );
( lr_table::NONTERM 42, ( result, enum_t1left, rcurly1right), rest671);
}
; ( 156, ( ( _, ( _, _, rcurly1right)) ! ( _, ( values::QQ_TRAILINGCOMMA trailingcomma, _, _)) ! ( _, ( values::QQ_ENUMERATORLIST enumeratorlist, _, _)) ! _ ! ( _, ( values::TYPE_NAME
type_name, _, _)) ! ( _, ( _, enum_t1left, _)) ! rest671)) => { my result = values::QQ_ENUMSPECIFIER (
ENUM{ tag_opt => THE(type_name), enumerators => seq_to_list enumeratorlist, trailing_comma => trailingcomma } );
( lr_table::NONTERM 42, ( result, enum_t1left, rcurly1right), rest671);
}
; ( 157, ( ( _, ( values::IDENTIFIER identifier, _, identifier1right)) ! ( _, ( _, enum_t1left, _)) ! rest671)) => { my result = values::QQ_ENUMSPECIFIER (ENUM_TAG(identifier));
(
lr_table::NONTERM 42, ( result, enum_t1left, identifier1right), rest671);
}
; ( 158, ( ( _, ( values::TYPE_NAME type_name, _, type_name1right)) ! ( _, ( _, enum_t1left, _)) ! rest671)) => { my result = values::QQ_ENUMSPECIFIER (ENUM_TAG(type_name));
(
lr_table::NONTERM 42, ( result, enum_t1left, type_name1right), rest671);
}
; ( 159, ( ( _, ( values::QQ_ENUMERATOR enumerator, _, enumerator1right)) ! _ ! ( _, ( values::QQ_ENUMERATORLIST enumeratorlist, enumeratorlist1left, _)) ! rest671)) => { my result =
values::QQ_ENUMERATORLIST (add_to_seq(enumerator, enumeratorlist));
( lr_table::NONTERM 12, ( result, enumeratorlist1left, enumerator1right), rest671);
}
; ( 160, ( ( _, ( values::QQ_ENUMERATOR enumerator, enumerator1left, enumerator1right)) ! rest671)) => { my result = values::QQ_ENUMERATORLIST (
{ (type_defs::add_no_tdef (#1 (enumerator)));
singleton_seq enumerator;
}
);
( lr_table::NONTERM
12, ( result, enumerator1left, enumerator1right), rest671);
}
; ( 161, ( ( _, ( values::IDENTIFIER identifier, identifier1left, identifier1right)) ! rest671)) => { my result = values::QQ_ENUMERATOR ((identifier, parse_tree::EMPTY_EXPR));
(
lr_table::NONTERM 13, ( result, identifier1left, identifier1right), rest671);
}
; ( 162, ( ( _, ( values::QQ_EXPR expr, _, expr1right)) ! _ ! ( _, ( values::IDENTIFIER identifier, identifier1left, _)) ! rest671)) => { my result = values::QQ_ENUMERATOR (
identifier, expr);
( lr_table::NONTERM 13, ( result, identifier1left, expr1right), rest671);
}
; ( 163, ( ( _, ( _, extern1left, extern1right)) ! rest671)) => { my result = values::QQ_STORAGEILKSPECIFIER (EXTERN);
( lr_table::NONTERM 35, ( result, extern1left, extern1right),
rest671);
}
; ( 164, ( ( _, ( _, static1left, static1right)) ! rest671)) => { my result = values::QQ_STORAGEILKSPECIFIER (STATIC);
( lr_table::NONTERM 35, ( result, static1left, static1right),
rest671);
}
; ( 165, ( ( _, ( _, auto1left, auto1right)) ! rest671)) => { my result = values::QQ_STORAGEILKSPECIFIER (AUTO);
( lr_table::NONTERM 35, ( result, auto1left, auto1right), rest671);
}
; ( 166, ( ( _, ( _, register1left, register1right)) ! rest671)) => { my result = values::QQ_STORAGEILKSPECIFIER (REGISTER);
( lr_table::NONTERM 35, ( result, register1left, register1right
), rest671);
}
; ( 167, ( ( _, ( _, typedef1left, typedef1right)) ! rest671)) => { my result = values::QQ_STORAGEILKSPECIFIER (TYPEDEF);
( lr_table::NONTERM 35, ( result, typedef1left, typedef1right),
rest671);
}
; ( 168, ( rest671)) => { my result = values::QQ_TRAILINGCOMMA (FALSE);
( lr_table::NONTERM 11, ( result, default_position, default_position), rest671);
}
; ( 169, ( ( _, ( _, comma1left, comma1right)) ! rest671)) => { my result = values::QQ_TRAILINGCOMMA (TRUE);
( lr_table::NONTERM 11, ( result, comma1left, comma1right), rest671);
}
; ( 170, ( ( _, ( values::QQ_INITDECLARATOR initdeclarator, initdeclarator1left, initdeclarator1right)) ! rest671)) => { my result = values::QQ_INITDECLARATORLIST (singleton_seq initdeclarator
);
( lr_table::NONTERM 18, ( result, initdeclarator1left, initdeclarator1right), rest671);
}
; ( 171, ( ( _, ( values::QQ_INITDECLARATOR initdeclarator, _, initdeclarator1right)) ! _ ! ( _, ( values::QQ_INITDECLARATORLIST initdeclaratorlist, initdeclaratorlist1left, _)) ! rest671))
=> { my result = values::QQ_INITDECLARATORLIST (add_to_seq(initdeclarator, initdeclaratorlist));
( lr_table::NONTERM 18, ( result, initdeclaratorlist1left, initdeclarator1right), rest671);
}
; ( 172, ( ( _, ( values::QQ_DECLARATOR declarator, declarator1left, declarator1right)) ! rest671)) => { my result = values::QQ_INITDECLARATOR ((declarator, EMPTY_EXPR));
( lr_table::NONTERM
16, ( result, declarator1left, declarator1right), rest671);
}
; ( 173, ( ( _, ( values::QQ_INITIALIZER initializer, _, initializer1right)) ! _ ! ( _, ( values::QQ_DECLARATOR declarator, declarator1left, _)) ! rest671)) => { my result =
values::QQ_INITDECLARATOR (declarator, initializer);
( lr_table::NONTERM 16, ( result, declarator1left, initializer1right), rest671);
}
; ( 174, ( ( _, ( values::QQ_NOTYPEINITDECLARATOR notypeinitdeclarator, notypeinitdeclarator1left, notypeinitdeclarator1right)) ! rest671)) => { my result = values::QQ_NOTYPEINITDECLARATORLIST
(singleton_seq notypeinitdeclarator);
( lr_table::NONTERM 19, ( result, notypeinitdeclarator1left, notypeinitdeclarator1right), rest671);
}
; ( 175, ( ( _, ( values::QQ_INITDECLARATOR initdeclarator, _, initdeclarator1right)) ! _ ! ( _, ( values::QQ_NOTYPEINITDECLARATORLIST notypeinitdeclaratorlist, notypeinitdeclaratorlist1left
, _)) ! rest671)) => { my result = values::QQ_NOTYPEINITDECLARATORLIST (add_to_seq(initdeclarator, notypeinitdeclaratorlist));
( lr_table::NONTERM 19, ( result, notypeinitdeclaratorlist1left,
initdeclarator1right), rest671);
}
; ( 176, ( ( _, ( values::QQ_NOTYPEDECLARATOR notypedeclarator, notypedeclarator1left, notypedeclarator1right)) ! rest671)) => { my result = values::QQ_NOTYPEINITDECLARATOR (
(notypedeclarator, EMPTY_EXPR));
( lr_table::NONTERM 17, ( result, notypedeclarator1left, notypedeclarator1right), rest671);
}
; ( 177, ( ( _, ( values::QQ_INITIALIZER initializer, _, initializer1right)) ! _ ! ( _, ( values::QQ_NOTYPEDECLARATOR notypedeclarator, notypedeclarator1left, _)) ! rest671)) => { my
result = values::QQ_NOTYPEINITDECLARATOR (notypedeclarator, initializer);
( lr_table::NONTERM 17, ( result, notypedeclarator1left, initializer1right), rest671);
}
; ( 178, ( ( _, ( values::QQ_AFTERTYPEDECLARATOR aftertypedeclarator, aftertypedeclarator1left, aftertypedeclarator1right)) ! rest671)) => { my result = values::QQ_DECLARATOR (
aftertypedeclarator);
( lr_table::NONTERM 21, ( result, aftertypedeclarator1left, aftertypedeclarator1right), rest671);
}
; ( 179, ( ( _, ( values::QQ_NOTYPEDECLARATOR notypedeclarator, notypedeclarator1left, notypedeclarator1right)) ! rest671)) => { my result = values::QQ_DECLARATOR (notypedeclarator);
(
lr_table::NONTERM 21, ( result, notypedeclarator1left, notypedeclarator1right), rest671);
}
; ( 180, ( ( _, ( values::QQ_AFTERTYPEDIRECTDECLARATOR aftertypedirectdeclarator, aftertypedirectdeclarator1left, aftertypedirectdeclarator1right)) ! rest671)) => { my result =
values::QQ_AFTERTYPEDECLARATOR (aftertypedirectdeclarator);
( lr_table::NONTERM 22, ( result, aftertypedirectdeclarator1left, aftertypedirectdeclarator1right), rest671);
}
; ( 181, ( ( _, ( values::QQ_AFTERTYPEDIRECTDECLARATOR aftertypedirectdeclarator, _, aftertypedirectdeclarator1right)) ! ( _, ( values::QQ_POINTER pointer, pointer1left, _)) ! rest671)) =>
{ my result = values::QQ_AFTERTYPEDECLARATOR (apply_pointer(pointer, aftertypedirectdeclarator));
( lr_table::NONTERM 22, ( result, pointer1left, aftertypedirectdeclarator1right), rest671)
;
}
; ( 182, ( ( _, ( values::QQ_NOTYPEDIRECTDECLARATOR notypedirectdeclarator, notypedirectdeclarator1left, notypedirectdeclarator1right)) ! rest671)) => { my result = values::QQ_NOTYPEDECLARATOR
(notypedirectdeclarator);
( lr_table::NONTERM 23, ( result, notypedirectdeclarator1left, notypedirectdeclarator1right), rest671);
}
; ( 183, ( ( _, ( values::QQ_NOTYPEDIRECTDECLARATOR notypedirectdeclarator, _, notypedirectdeclarator1right)) ! ( _, ( values::QQ_POINTER pointer, pointer1left, _)) ! rest671)) => { my
result = values::QQ_NOTYPEDECLARATOR (apply_pointer(pointer, notypedirectdeclarator));
( lr_table::NONTERM 23, ( result, pointer1left, notypedirectdeclarator1right), rest671);
}
; ( 184, ( ( _, ( values::QQ_PARMDIRECTDECLARATOR parmdirectdeclarator, parmdirectdeclarator1left, parmdirectdeclarator1right)) ! rest671)) => { my result = values::QQ_PARMDECLARATOR (
parmdirectdeclarator);
( lr_table::NONTERM 24, ( result, parmdirectdeclarator1left, parmdirectdeclarator1right), rest671);
}
; ( 185, ( ( _, ( values::QQ_PARMDIRECTDECLARATOR parmdirectdeclarator, _, parmdirectdeclarator1right)) ! ( _, ( values::QQ_POINTER pointer, pointer1left, _)) ! rest671)) => { my result =
values::QQ_PARMDECLARATOR (apply_pointer(pointer, parmdirectdeclarator));
( lr_table::NONTERM 24, ( result, pointer1left, parmdirectdeclarator1right), rest671);
}
; ( 186, ( ( _, ( _, times1left, times1right)) ! rest671)) => { my result = values::QQ_POINTER (POINTER_DECR(EMPTY_DECR));
( lr_table::NONTERM 20, ( result, times1left, times1right),
rest671);
}
; ( 187, ( ( _, ( values::QQ_TYPEQUALIFIERLIST typequalifierlist, _, typequalifierlist1right)) ! ( _, ( _, times1left, _)) ! rest671)) => { my result = values::QQ_POINTER (
POINTER_DECR(loop_qd(typequalifierlist, EMPTY_DECR)));
( lr_table::NONTERM 20, ( result, times1left, typequalifierlist1right), rest671);
}
; ( 188, ( ( _, ( values::QQ_POINTER pointer, _, pointer1right)) ! ( _, ( _, times1left, _)) ! rest671)) => { my result = values::QQ_POINTER (POINTER_DECR(pointer));
( lr_table::NONTERM
20, ( result, times1left, pointer1right), rest671);
}
; ( 189, ( ( _, ( values::QQ_POINTER pointer, _, pointer1right)) ! ( _, ( values::QQ_TYPEQUALIFIERLIST typequalifierlist, _, _)) ! ( _, ( _, times1left, _)) ! rest671)) => { my result
= values::QQ_POINTER (POINTER_DECR(loop_qd(typequalifierlist, pointer)));
( lr_table::NONTERM 20, ( result, times1left, pointer1right), rest671);
}
; ( 190, ( ( _, ( values::TYPE_NAME type_name, (type_nameleft as type_name1left), (type_nameright as type_name1right))) ! rest671)) => { my result = values::QQ_AFTERTYPEDIRECTDECLARATOR (
mark_declarator src_map (VAR_DECR type_name, type_nameleft, type_nameright));
( lr_table::NONTERM 25, ( result, type_name1left, type_name1right), rest671);
}
; ( 191, ( ( _, ( _, _, rparen1right)) ! ( _, ( values::QQ_AFTERTYPEDECLARATOR aftertypedeclarator, _, _)) ! ( _, ( _, lparen1left, _)) ! rest671)) => { my result =
values::QQ_AFTERTYPEDIRECTDECLARATOR (aftertypedeclarator);
( lr_table::NONTERM 25, ( result, lparen1left, rparen1right), rest671);
}
; ( 192, ( ( _, ( _, _, rbrace1right)) ! _ ! ( _, ( values::QQ_AFTERTYPEDIRECTDECLARATOR aftertypedirectdeclarator, aftertypedirectdeclarator1left, _)) ! rest671)) => { my result =
values::QQ_AFTERTYPEDIRECTDECLARATOR (ARRAY_DECR (aftertypedirectdeclarator, EMPTY_EXPR));
( lr_table::NONTERM 25, ( result, aftertypedirectdeclarator1left, rbrace1right), rest671);
}
; ( 193, ( ( _, ( _, _, rbrace1right)) ! ( _, ( values::QQ_EXPR expr, _, _)) ! _ ! ( _, ( values::QQ_AFTERTYPEDIRECTDECLARATOR aftertypedirectdeclarator, aftertypedirectdeclarator1left,
_)) ! rest671)) => { my result = values::QQ_AFTERTYPEDIRECTDECLARATOR (ARRAY_DECR (aftertypedirectdeclarator, expr));
( lr_table::NONTERM 25, ( result, aftertypedirectdeclarator1left,
rbrace1right), rest671);
}
; ( 194, ( ( _, ( _, _, rparen1right)) ! _ ! ( _, ( values::QQ_AFTERTYPEDIRECTDECLARATOR aftertypedirectdeclarator, aftertypedirectdeclarator1left, _)) ! rest671)) => { my result =
values::QQ_AFTERTYPEDIRECTDECLARATOR (FUNC_DECR (aftertypedirectdeclarator, NIL));
( lr_table::NONTERM 25, ( result, aftertypedirectdeclarator1left, rparen1right), rest671);
}
; ( 195, ( ( _, ( _, _, rparen1right)) ! ( _, ( values::QQ_PARAMETERTYPELIST parametertypelist, _, _)) ! _ ! ( _, ( values::QQ_AFTERTYPEDIRECTDECLARATOR aftertypedirectdeclarator,
aftertypedirectdeclarator1left, _)) ! rest671)) => { my result = values::QQ_AFTERTYPEDIRECTDECLARATOR (FUNC_DECR (aftertypedirectdeclarator, parametertypelist));
( lr_table::NONTERM 25, ( result
, aftertypedirectdeclarator1left, rparen1right), rest671);
}
; ( 196, ( ( _, ( _, _, rparen1right)) ! ( _, ( values::QQ_IDENTLIST identlist, _, _)) ! _ ! ( _, ( values::QQ_AFTERTYPEDIRECTDECLARATOR aftertypedirectdeclarator,
aftertypedirectdeclarator1left, _)) ! rest671)) => { my result = values::QQ_AFTERTYPEDIRECTDECLARATOR (
FUNC_DECR (aftertypedirectdeclarator,
map (fn (x, y, z) = (unknown, mark_declarator src_map (VAR_DECR x, y, z))) (seq_to_list identlist)));
( lr_table::NONTERM 25, ( result,
aftertypedirectdeclarator1left, rparen1right), rest671);
}
; ( 197, ( ( _, ( values::IDENTIFIER identifier, (identifierleft as identifier1left), (identifierright as identifier1right))) ! rest671)) => { my result = values::QQ_NOTYPEDIRECTDECLARATOR (
mark_declarator src_map (VAR_DECR identifier, identifierleft, identifierright));
( lr_table::NONTERM 26, ( result, identifier1left, identifier1right), rest671);
}
; ( 198, ( ( _, ( _, _, rparen1right)) ! ( _, ( values::QQ_NOTYPEDECLARATOR notypedeclarator, _, _)) ! ( _, ( _, lparen1left, _)) ! rest671)) => { my result =
values::QQ_NOTYPEDIRECTDECLARATOR (notypedeclarator);
( lr_table::NONTERM 26, ( result, lparen1left, rparen1right), rest671);
}
; ( 199, ( ( _, ( _, _, rbrace1right)) ! _ ! ( _, ( values::QQ_NOTYPEDIRECTDECLARATOR notypedirectdeclarator, notypedirectdeclarator1left, _)) ! rest671)) => { my result =
values::QQ_NOTYPEDIRECTDECLARATOR (ARRAY_DECR (notypedirectdeclarator, EMPTY_EXPR));
( lr_table::NONTERM 26, ( result, notypedirectdeclarator1left, rbrace1right), rest671);
}
; ( 200, ( ( _, ( _, _, rbrace1right)) ! ( _, ( values::QQ_EXPR expr, _, _)) ! _ ! ( _, ( values::QQ_NOTYPEDIRECTDECLARATOR notypedirectdeclarator, notypedirectdeclarator1left, _)) !
rest671)) => { my result = values::QQ_NOTYPEDIRECTDECLARATOR (ARRAY_DECR (notypedirectdeclarator, expr));
( lr_table::NONTERM 26, ( result, notypedirectdeclarator1left, rbrace1right), rest671)
;
}
; ( 201, ( ( _, ( _, _, rparen1right)) ! _ ! ( _, ( values::QQ_NOTYPEDIRECTDECLARATOR notypedirectdeclarator, notypedirectdeclarator1left, _)) ! rest671)) => { my result =
values::QQ_NOTYPEDIRECTDECLARATOR (FUNC_DECR (notypedirectdeclarator, NIL));
( lr_table::NONTERM 26, ( result, notypedirectdeclarator1left, rparen1right), rest671);
}
; ( 202, ( ( _, ( _, _, rparen1right)) ! ( _, ( values::QQ_PARAMETERTYPELIST parametertypelist, _, _)) ! _ ! ( _, ( values::QQ_NOTYPEDIRECTDECLARATOR notypedirectdeclarator,
notypedirectdeclarator1left, _)) ! rest671)) => { my result = values::QQ_NOTYPEDIRECTDECLARATOR (FUNC_DECR (notypedirectdeclarator, parametertypelist));
( lr_table::NONTERM 26, ( result,
notypedirectdeclarator1left, rparen1right), rest671);
}
; ( 203, ( ( _, ( _, _, rparen1right)) ! ( _, ( values::QQ_IDENTLIST identlist, _, _)) ! _ ! ( _, ( values::QQ_NOTYPEDIRECTDECLARATOR notypedirectdeclarator, notypedirectdeclarator1left,
_)) ! rest671)) => { my result = values::QQ_NOTYPEDIRECTDECLARATOR (
FUNC_DECR (notypedirectdeclarator,
map (fn (x, y, z) = (unknown, mark_declarator src_map (VAR_DECR x, y, z))) (seq_to_list identlist)));
( lr_table::NONTERM 26, ( result,
notypedirectdeclarator1left, rparen1right), rest671);
}
; ( 204, ( ( _, ( values::TYPE_NAME type_name, (type_nameleft as type_name1left), (type_nameright as type_name1right))) ! rest671)) => { my result = values::QQ_PARMDIRECTDECLARATOR (
mark_declarator src_map (VAR_DECR type_name, type_nameleft, type_nameright));
( lr_table::NONTERM 27, ( result, type_name1left, type_name1right), rest671);
}
; ( 205, ( ( _, ( _, _, rbrace1right)) ! _ ! ( _, ( values::QQ_PARMDIRECTDECLARATOR parmdirectdeclarator, parmdirectdeclarator1left, _)) ! rest671)) => { my result =
values::QQ_PARMDIRECTDECLARATOR (ARRAY_DECR (parmdirectdeclarator, EMPTY_EXPR));
( lr_table::NONTERM 27, ( result, parmdirectdeclarator1left, rbrace1right), rest671);
}
; ( 206, ( ( _, ( _, _, rbrace1right)) ! ( _, ( values::QQ_EXPR expr, _, _)) ! _ ! ( _, ( values::QQ_PARMDIRECTDECLARATOR parmdirectdeclarator, parmdirectdeclarator1left, _)) ! rest671)
) => { my result = values::QQ_PARMDIRECTDECLARATOR (ARRAY_DECR (parmdirectdeclarator, expr));
( lr_table::NONTERM 27, ( result, parmdirectdeclarator1left, rbrace1right), rest671);
}
; ( 207, ( ( _, ( _, _, rparen1right)) ! _ ! ( _, ( values::QQ_PARMDIRECTDECLARATOR parmdirectdeclarator, parmdirectdeclarator1left, _)) ! rest671)) => { my result =
values::QQ_PARMDIRECTDECLARATOR (FUNC_DECR (parmdirectdeclarator, NIL));
( lr_table::NONTERM 27, ( result, parmdirectdeclarator1left, rparen1right), rest671);
}
; ( 208, ( ( _, ( _, _, rparen1right)) ! ( _, ( values::QQ_PARAMETERTYPELIST parametertypelist, _, _)) ! _ ! ( _, ( values::QQ_PARMDIRECTDECLARATOR parmdirectdeclarator,
parmdirectdeclarator1left, _)) ! rest671)) => { my result = values::QQ_PARMDIRECTDECLARATOR (FUNC_DECR (parmdirectdeclarator, parametertypelist));
( lr_table::NONTERM 27, ( result,
parmdirectdeclarator1left, rparen1right), rest671);
}
; ( 209, ( ( _, ( _, _, rparen1right)) ! ( _, ( values::QQ_IDENTLIST identlist, _, _)) ! _ ! ( _, ( values::QQ_PARMDIRECTDECLARATOR parmdirectdeclarator, parmdirectdeclarator1left, _))
! rest671)) => { my result = values::QQ_PARMDIRECTDECLARATOR (
FUNC_DECR (parmdirectdeclarator,
map (fn (x, y, z) = (unknown, mark_declarator src_map (VAR_DECR x, y, z))) (seq_to_list identlist)));
( lr_table::NONTERM 27, ( result,
parmdirectdeclarator1left, rparen1right), rest671);
}
; ( 210, ( ( _, ( values::QQ_EXPR expr, expr1left, expr1right)) ! rest671)) => { my result = values::QQ_INITIALIZER (expr);
( lr_table::NONTERM 33, ( result, expr1left, expr1right),
rest671);
}
; ( 211, ( ( _, ( _, _, (rcurlyright as rcurly1right))) ! _ ! ( _, ( values::QQ_INITIALIZERLIST initializerlist, _, _)) ! ( _, ( _, (lcurlyleft as lcurly1left), _)) ! rest671)) => {
my result = values::QQ_INITIALIZER (mark_expression src_map (INIT_LIST(seq_to_list initializerlist), lcurlyleft, rcurlyright));
( lr_table::NONTERM 33, ( result, lcurly1left, rcurly1right),
rest671);
}
; ( 212, ( ( _, ( values::QQ_INITIALIZER initializer, initializer1left, initializer1right)) ! rest671)) => { my result = values::QQ_INITIALIZERLIST (singleton_seq initializer);
(
lr_table::NONTERM 34, ( result, initializer1left, initializer1right), rest671);
}
; ( 213, ( ( _, ( values::QQ_INITIALIZER initializer, _, initializer1right)) ! _ ! ( _, ( values::QQ_INITIALIZERLIST initializerlist, initializerlist1left, _)) ! rest671)) => { my result
= values::QQ_INITIALIZERLIST (add_to_seq(initializer, initializerlist));
( lr_table::NONTERM 34, ( result, initializerlist1left, initializer1right), rest671);
}
; ( 214, ( ( _, ( values::QQ_DECLARATION declaration, (declarationleft as declaration1left), (declarationright as declaration1right))) ! rest671)) => { my result = values::QQ_DECLARATIONLIST (
singleton_seq(mark_declaration src_map (declaration,
declarationleft,
declarationright)));
( lr_table::NONTERM 45, ( result, declaration1left,
declaration1right), rest671);
}
; ( 215, ( ( _, ( values::QQ_DECLARATION declaration, declarationleft, (declarationright as declaration1right))) ! ( _, ( values::QQ_DECLARATIONLIST declarationlist, declarationlist1left, _))
! rest671)) => { my result = values::QQ_DECLARATIONLIST (
add_to_seq(mark_declaration src_map (declaration,
declarationleft,
declarationright),
declarationlist));
( lr_table::NONTERM 45, ( result,
declarationlist1left, declaration1right), rest671);
}
; ( 216, ( ( _, ( values::IDENTIFIER identifier, (identifierleft as identifier1left), (identifierright as identifier1right))) ! rest671)) => { my result = values::QQ_IDENTLIST (
singleton_seq (identifier, identifierleft, identifierright));
( lr_table::NONTERM 46, ( result, identifier1left, identifier1right), rest671);
}
; ( 217, ( ( _, ( values::IDENTIFIER identifier, identifierleft, (identifierright as identifier1right))) ! _ ! ( _, ( values::QQ_IDENTLIST identlist, identlist1left, _)) ! rest671)) => {
my result = values::QQ_IDENTLIST (add_to_seq((identifier, identifierleft, identifierright), identlist));
( lr_table::NONTERM 46, ( result, identlist1left, identifier1right), rest671);
}
; ( 218, ( ( _, ( values::QQ_NOTYPEDECLARATOR notypedeclarator, notypedeclarator1left, notypedeclarator1right)) ! rest671)) => { my result = values::QQ_FDEFDECLARATION (
{ insert_func_name(notypedeclarator);
type_defs::push_scope();
insert_func_params(notypedeclarator);
(unknown, notypedeclarator);
}
);
( lr_table::NONTERM 44, ( result, notypedeclarator1left, notypedeclarator1right), rest671);
}
; ( 219, ( ( _, ( values::QQ_DECLARATOR declarator, _, declarator1right)) ! ( _, ( values::QQ_DECLARATIONSPECIFIERS declarationspecifiers, declarationspecifiers1left, _)) ! rest671)) => {
my result = values::QQ_FDEFDECLARATION (
{ insert_func_name(declarator);
type_defs::push_scope();
insert_func_params(declarator);
(declarationspecifiers, declarator);
}
);
( lr_table::NONTERM 44, ( result, declarationspecifiers1left, declarator1right), rest671);
}
; ( 220, ( ( _, ( values::QQ_NOTYPEDECLARATOR notypedeclarator, _, notypedeclarator1right)) ! ( _, ( values::QQ_DECLARATIONMODIFIERS declarationmodifiers, declarationmodifiers1left, _)) !
rest671)) => { my result = values::QQ_FDEFDECLARATION (
{ insert_func_name(notypedeclarator);
type_defs::push_scope();
insert_func_params(notypedeclarator);
(declarationmodifiers, notypedeclarator);
}
);
( lr_table::NONTERM 44, ( result, declarationmodifiers1left, notypedeclarator1right), rest671);
}
; ( 221, ( ( _, ( values::QQ_COMPOUNDSTATEMENT compoundstatement, _, compoundstatement1right)) ! ( _, ( values::QQ_FDEFDECLARATION fdefdeclaration, fdefdeclaration1left, _)) ! rest671)) =>
{ my result = values::QQ_FUNCTIONDEFINITION (
{ type_defs::pop_scope();
FUN
{ ret_type => #1 fdefdeclaration,
fun_decr => #2 fdefdeclaration,
kr_params => [],
body => compoundstatement};
}
);
( lr_table::NONTERM 47, ( result, fdefdeclaration1left, compoundstatement1right), rest671);
}
; ( 222, ( ( _, ( values::QQ_COMPOUNDSTATEMENT compoundstatement, _, compoundstatement1right)) ! ( _, ( values::QQ_DECLARATIONLIST declarationlist, _, _)) ! ( _, (
values::QQ_FDEFDECLARATION fdefdeclaration, fdefdeclaration1left, _)) ! rest671)) => { my result = values::QQ_FUNCTIONDEFINITION (
{ type_defs::pop_scope();
FUN
{ ret_type => #1 fdefdeclaration,
fun_decr => #2 fdefdeclaration,
kr_params => seq_to_list declarationlist,
body => compoundstatement};
}
);
( lr_table::NONTERM 47, ( result, fdefdeclaration1left, compoundstatement1right), rest671);
}
; ( 223, ( ( _, ( values::QQ_POINTER pointer, pointer1left, pointer1right)) ! rest671)) => { my result = values::QQ_ABSTRACTDECLARATOR (apply_pointer (pointer, EMPTY_DECR));
(
lr_table::NONTERM 14, ( result, pointer1left, pointer1right), rest671);
}
; ( 224, ( ( _, ( values::QQ_DIRECTABSTRACTDECLARATOR directabstractdeclarator, directabstractdeclarator1left, directabstractdeclarator1right)) ! rest671)) => { my result =
values::QQ_ABSTRACTDECLARATOR (directabstractdeclarator);
( lr_table::NONTERM 14, ( result, directabstractdeclarator1left, directabstractdeclarator1right), rest671);
}
; ( 225, ( ( _, ( values::QQ_DIRECTABSTRACTDECLARATOR directabstractdeclarator, _, directabstractdeclarator1right)) ! ( _, ( values::QQ_POINTER pointer, pointer1left, _)) ! rest671)) => {
my result = values::QQ_ABSTRACTDECLARATOR (apply_pointer(pointer, directabstractdeclarator));
( lr_table::NONTERM 14, ( result, pointer1left, directabstractdeclarator1right), rest671);
}
; ( 226, ( ( _, ( _, _, rparen1right)) ! ( _, ( values::QQ_ABSTRACTDECLARATOR abstractdeclarator, _, _)) ! ( _, ( _, lparen1left, _)) ! rest671)) => { my result =
values::QQ_DIRECTABSTRACTDECLARATOR (abstractdeclarator);
( lr_table::NONTERM 15, ( result, lparen1left, rparen1right), rest671);
}
; ( 227, ( ( _, ( _, _, rbrace1right)) ! ( _, ( _, lbrace1left, _)) ! rest671)) => { my result = values::QQ_DIRECTABSTRACTDECLARATOR (ARRAY_DECR(EMPTY_DECR, EMPTY_EXPR));
(
lr_table::NONTERM 15, ( result, lbrace1left, rbrace1right), rest671);
}
; ( 228, ( ( _, ( _, _, rbrace1right)) ! ( _, ( values::QQ_EXPR expr, _, _)) ! ( _, ( _, lbrace1left, _)) ! rest671)) => { my result = values::QQ_DIRECTABSTRACTDECLARATOR (
ARRAY_DECR(EMPTY_DECR, expr));
( lr_table::NONTERM 15, ( result, lbrace1left, rbrace1right), rest671);
}
; ( 229, ( ( _, ( _, _, rbrace1right)) ! _ ! ( _, ( values::QQ_DIRECTABSTRACTDECLARATOR directabstractdeclarator, directabstractdeclarator1left, _)) ! rest671)) => { my result =
values::QQ_DIRECTABSTRACTDECLARATOR (ARRAY_DECR (directabstractdeclarator, EMPTY_EXPR));
( lr_table::NONTERM 15, ( result, directabstractdeclarator1left, rbrace1right), rest671);
}
; ( 230, ( ( _, ( _, _, rbrace1right)) ! ( _, ( values::QQ_EXPR expr, _, _)) ! _ ! ( _, ( values::QQ_DIRECTABSTRACTDECLARATOR directabstractdeclarator, directabstractdeclarator1left, _))
! rest671)) => { my result = values::QQ_DIRECTABSTRACTDECLARATOR (ARRAY_DECR (directabstractdeclarator, expr));
( lr_table::NONTERM 15, ( result, directabstractdeclarator1left, rbrace1right),
rest671);
}
; ( 231, ( ( _, ( _, _, rparen1right)) ! ( _, ( _, lparen1left, _)) ! rest671)) => { my result = values::QQ_DIRECTABSTRACTDECLARATOR (FUNC_DECR (EMPTY_DECR, NIL));
( lr_table::NONTERM 15
, ( result, lparen1left, rparen1right), rest671);
}
; ( 232, ( ( _, ( _, _, rparen1right)) ! ( _, ( values::QQ_PARAMETERTYPELIST parametertypelist, _, _)) ! ( _, ( _, lparen1left, _)) ! rest671)) => { my result =
values::QQ_DIRECTABSTRACTDECLARATOR (FUNC_DECR (EMPTY_DECR, parametertypelist));
( lr_table::NONTERM 15, ( result, lparen1left, rparen1right), rest671);
}
; ( 233, ( ( _, ( _, _, rparen1right)) ! _ ! ( _, ( values::QQ_DIRECTABSTRACTDECLARATOR directabstractdeclarator, directabstractdeclarator1left, _)) ! rest671)) => { my result =
values::QQ_DIRECTABSTRACTDECLARATOR (FUNC_DECR (directabstractdeclarator, NIL));
( lr_table::NONTERM 15, ( result, directabstractdeclarator1left, rparen1right), rest671);
}
; ( 234, ( ( _, ( _, _, rparen1right)) ! ( _, ( values::QQ_PARAMETERTYPELIST parametertypelist, _, _)) ! _ ! ( _, ( values::QQ_DIRECTABSTRACTDECLARATOR directabstractdeclarator,
directabstractdeclarator1left, _)) ! rest671)) => { my result = values::QQ_DIRECTABSTRACTDECLARATOR (FUNC_DECR (directabstractdeclarator, parametertypelist));
( lr_table::NONTERM 15, ( result,
directabstractdeclarator1left, rparen1right), rest671);
}
; ( 235, ( ( _, ( values::QQ_PARAMETERLIST parameterlist, parameterlist1left, parameterlist1right)) ! rest671)) => { my result = values::QQ_PARAMETERTYPELIST (seq_to_list parameterlist);
(
lr_table::NONTERM 52, ( result, parameterlist1left, parameterlist1right), rest671);
}
; ( 236, ( ( _, ( _, _, elipsis1right)) ! _ ! ( _, ( values::QQ_PARAMETERLIST parameterlist, parameterlist1left, _)) ! rest671)) => { my result = values::QQ_PARAMETERTYPELIST (
{ decltype = { specifiers => [ELLIPSES],
qualifiers => [],
storage => []
};
(seq_to_list parameterlist) @ [(decltype, ELLIPSES_DECR)];
}
);
( lr_table::NONTERM 52, ( result, parameterlist1left, elipsis1right), rest671);
}
; ( 237, ( ( _, ( values::QQ_PARAMETERDECLARATION parameterdeclaration, (parameterdeclarationleft as parameterdeclaration1left), (parameterdeclarationright as parameterdeclaration1right))) !
rest671)) => { my result = values::QQ_PARAMETERLIST (
singleton_seq(#1 parameterdeclaration,
mark_declarator src_map (#2 parameterdeclaration,
parameterdeclarationleft,
parameterdeclarationright))
);
( lr_table::NONTERM 51, ( result, parameterdeclaration1left, parameterdeclaration1right), rest671);
}
; ( 238, ( ( _, ( values::QQ_PARAMETERDECLARATION parameterdeclaration, parameterdeclarationleft, (parameterdeclarationright as parameterdeclaration1right))) ! _ ! ( _, (
values::QQ_PARAMETERLIST parameterlist, parameterlist1left, _)) ! rest671)) => { my result = values::QQ_PARAMETERLIST (
add_to_seq((#1 parameterdeclaration,
mark_declarator
src_map
(#2 parameterdeclaration,
parameterdeclarationleft,
parameterdeclarationright)),
parameterlist)
);
( lr_table::NONTERM 51, ( result, parameterlist1left, parameterdeclaration1right), rest671);
}
; ( 239, ( ( _, ( values::QQ_NOTYPEDECLARATOR notypedeclarator, _, notypedeclarator1right)) ! ( _, ( values::QQ_DECLARATIONSPECIFIERS declarationspecifiers, declarationspecifiers1left, _)) !
rest671)) => { my result = values::QQ_PARAMETERDECLARATION ((declarationspecifiers, notypedeclarator));
( lr_table::NONTERM 53, ( result, declarationspecifiers1left, notypedeclarator1right),
rest671);
}
; ( 240, ( ( _, ( values::QQ_PARMDECLARATOR parmdeclarator, _, parmdeclarator1right)) ! ( _, ( values::QQ_DECLARATIONSPECIFIERS declarationspecifiers, declarationspecifiers1left, _)) !
rest671)) => { my result = values::QQ_PARAMETERDECLARATION ((declarationspecifiers, parmdeclarator));
( lr_table::NONTERM 53, ( result, declarationspecifiers1left, parmdeclarator1right),
rest671);
}
; ( 241, ( ( _, ( values::QQ_DECLARATIONSPECIFIERS declarationspecifiers, declarationspecifiers1left, declarationspecifiers1right)) ! rest671)) => { my result = values::QQ_PARAMETERDECLARATION
((declarationspecifiers, EMPTY_DECR));
( lr_table::NONTERM 53, ( result, declarationspecifiers1left, declarationspecifiers1right), rest671);
}
; ( 242, ( ( _, ( values::QQ_ABSTRACTDECLARATOR abstractdeclarator, _, abstractdeclarator1right)) ! ( _, ( values::QQ_DECLARATIONSPECIFIERS declarationspecifiers, declarationspecifiers1left,
_)) ! rest671)) => { my result = values::QQ_PARAMETERDECLARATION ((declarationspecifiers, abstractdeclarator));
( lr_table::NONTERM 53, ( result, declarationspecifiers1left,
abstractdeclarator1right), rest671);
}
; ( 243, ( ( _, ( values::QQ_NOTYPEDECLARATOR notypedeclarator, _, notypedeclarator1right)) ! ( _, ( values::QQ_DECLARATIONMODIFIERS declarationmodifiers, declarationmodifiers1left, _)) !
rest671)) => { my result = values::QQ_PARAMETERDECLARATION ((declarationmodifiers, notypedeclarator));
( lr_table::NONTERM 53, ( result, declarationmodifiers1left, notypedeclarator1right),
rest671);
}
; ( 244, ( ( _, ( values::QQ_ABSTRACTDECLARATOR abstractdeclarator, _, abstractdeclarator1right)) ! ( _, ( values::QQ_DECLARATIONMODIFIERS declarationmodifiers, declarationmodifiers1left, _))
! rest671)) => { my result = values::QQ_PARAMETERDECLARATION ((declarationmodifiers, abstractdeclarator));
( lr_table::NONTERM 53, ( result, declarationmodifiers1left, abstractdeclarator1right
), rest671);
}
; ( 245, ( rest671)) => { my result = values::QQ_PUSHSCOPE (type_defs::push_scope());
( lr_table::NONTERM 61, ( result, default_position, default_position), rest671);
}
; ( 246, ( rest671)) => { my result = values::QQ_POPSCOPE (type_defs::pop_scope());
( lr_table::NONTERM 62, ( result, default_position, default_position), rest671);
}
; _ => raise exception (MLY_ACTION i392);
esac;
end;
void = values::TM_VOID;
extract = fn a = (fn values::QQ_TRANSLATIONUNIT x => x;
_ => { exception PARSE_INTERNAL;
raise exception PARSE_INTERNAL; }; end ) a ;
};
};
package tokens : (weak) Ckit_Tokens {
Semantic_Value = parser_data::Semantic_Value;
Token (X,Y) = token::Token(X,Y);
fun eof (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 0, (parser_data::values::TM_VOID, p1, p2));
fun colon (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 1, (parser_data::values::TM_VOID, p1, p2));
fun semicolon (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 2, (parser_data::values::TM_VOID, p1, p2));
fun lparen (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 3, (parser_data::values::TM_VOID, p1, p2));
fun rparen (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 4, (parser_data::values::TM_VOID, p1, p2));
fun lcurly (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 5, (parser_data::values::TM_VOID, p1, p2));
fun rcurly (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 6, (parser_data::values::TM_VOID, p1, p2));
fun lbrace (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 7, (parser_data::values::TM_VOID, p1, p2));
fun rbrace (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 8, (parser_data::values::TM_VOID, p1, p2));
fun dot (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 9, (parser_data::values::TM_VOID, p1, p2));
fun comma (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 10, (parser_data::values::TM_VOID, p1, p2));
fun question (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 11, (parser_data::values::TM_VOID, p1, p2));
fun percent (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 12, (parser_data::values::TM_VOID, p1, p2));
fun amp (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 13, (parser_data::values::TM_VOID, p1, p2));
fun bar (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 14, (parser_data::values::TM_VOID, p1, p2));
fun tilde (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 15, (parser_data::values::TM_VOID, p1, p2));
fun divide (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 16, (parser_data::values::TM_VOID, p1, p2));
fun plus (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 17, (parser_data::values::TM_VOID, p1, p2));
fun minus (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 18, (parser_data::values::TM_VOID, p1, p2));
fun hat (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 19, (parser_data::values::TM_VOID, p1, p2));
fun bang (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 20, (parser_data::values::TM_VOID, p1, p2));
fun times (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 21, (parser_data::values::TM_VOID, p1, p2));
fun inc (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 22, (parser_data::values::TM_VOID, p1, p2));
fun dec (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 23, (parser_data::values::TM_VOID, p1, p2));
fun arrow (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 24, (parser_data::values::TM_VOID, p1, p2));
fun identifier (i, p1, p2) = token::TOKEN (parser_data::lr_table::TERM 25, (parser_data::values::IDENTIFIER i, p1, p2));
fun equals (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 26, (parser_data::values::TM_VOID, p1, p2));
fun plusequals (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 27, (parser_data::values::TM_VOID, p1, p2));
fun minusequals (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 28, (parser_data::values::TM_VOID, p1, p2));
fun xorequals (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 29, (parser_data::values::TM_VOID, p1, p2));
fun modequals (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 30, (parser_data::values::TM_VOID, p1, p2));
fun timesequals (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 31, (parser_data::values::TM_VOID, p1, p2));
fun divequals (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 32, (parser_data::values::TM_VOID, p1, p2));
fun orequals (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 33, (parser_data::values::TM_VOID, p1, p2));
fun andequals (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 34, (parser_data::values::TM_VOID, p1, p2));
fun lshiftequals (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 35, (parser_data::values::TM_VOID, p1, p2));
fun rshiftequals (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 36, (parser_data::values::TM_VOID, p1, p2));
fun lte (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 37, (parser_data::values::TM_VOID, p1, p2));
fun gte (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 38, (parser_data::values::TM_VOID, p1, p2));
fun lt (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 39, (parser_data::values::TM_VOID, p1, p2));
fun gt (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 40, (parser_data::values::TM_VOID, p1, p2));
fun eq (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 41, (parser_data::values::TM_VOID, p1, p2));
fun neq (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 42, (parser_data::values::TM_VOID, p1, p2));
fun or_t (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 43, (parser_data::values::TM_VOID, p1, p2));
fun and_t (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 44, (parser_data::values::TM_VOID, p1, p2));
fun lshift (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 45, (parser_data::values::TM_VOID, p1, p2));
fun rshift (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 46, (parser_data::values::TM_VOID, p1, p2));
fun decnum (i, p1, p2) = token::TOKEN (parser_data::lr_table::TERM 47, (parser_data::values::DECNUM i, p1, p2));
fun realnum (i, p1, p2) = token::TOKEN (parser_data::lr_table::TERM 48, (parser_data::values::REALNUM i, p1, p2));
fun string_constant (i, p1, p2) = token::TOKEN (parser_data::lr_table::TERM 49, (parser_data::values::STRING_CONSTANT i, p1, p2));
fun cconst (i, p1, p2) = token::TOKEN (parser_data::lr_table::TERM 50, (parser_data::values::CCONST i, p1, p2));
fun extern (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 51, (parser_data::values::TM_VOID, p1, p2));
fun auto (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 52, (parser_data::values::TM_VOID, p1, p2));
fun static (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 53, (parser_data::values::TM_VOID, p1, p2));
fun register (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 54, (parser_data::values::TM_VOID, p1, p2));
fun const (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 55, (parser_data::values::TM_VOID, p1, p2));
fun volatile (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 56, (parser_data::values::TM_VOID, p1, p2));
fun if_t (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 57, (parser_data::values::TM_VOID, p1, p2));
fun then_t (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 58, (parser_data::values::TM_VOID, p1, p2));
fun else_t (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 59, (parser_data::values::TM_VOID, p1, p2));
fun for_t (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 60, (parser_data::values::TM_VOID, p1, p2));
fun do_t (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 61, (parser_data::values::TM_VOID, p1, p2));
fun switch (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 62, (parser_data::values::TM_VOID, p1, p2));
fun case_t (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 63, (parser_data::values::TM_VOID, p1, p2));
fun default (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 64, (parser_data::values::TM_VOID, p1, p2));
fun while_t (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 65, (parser_data::values::TM_VOID, p1, p2));
fun return (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 66, (parser_data::values::TM_VOID, p1, p2));
fun break (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 67, (parser_data::values::TM_VOID, p1, p2));
fun continue (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 68, (parser_data::values::TM_VOID, p1, p2));
fun goto (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 69, (parser_data::values::TM_VOID, p1, p2));
fun char (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 70, (parser_data::values::TM_VOID, p1, p2));
fun double (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 71, (parser_data::values::TM_VOID, p1, p2));
fun enum_t (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 72, (parser_data::values::TM_VOID, p1, p2));
fun float (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 73, (parser_data::values::TM_VOID, p1, p2));
fun int (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 74, (parser_data::values::TM_VOID, p1, p2));
fun long (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 75, (parser_data::values::TM_VOID, p1, p2));
fun short (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 76, (parser_data::values::TM_VOID, p1, p2));
fun fractional (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 77, (parser_data::values::TM_VOID, p1, p2));
fun saturate (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 78, (parser_data::values::TM_VOID, p1, p2));
fun struct (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 79, (parser_data::values::TM_VOID, p1, p2));
fun union (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 80, (parser_data::values::TM_VOID, p1, p2));
fun unsigned (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 81, (parser_data::values::TM_VOID, p1, p2));
fun signed (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 82, (parser_data::values::TM_VOID, p1, p2));
fun void (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 83, (parser_data::values::TM_VOID, p1, p2));
fun sizeof (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 84, (parser_data::values::TM_VOID, p1, p2));
fun typedef (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 85, (parser_data::values::TM_VOID, p1, p2));
fun unary (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 86, (parser_data::values::TM_VOID, p1, p2));
fun elipsis (p1, p2) = token::TOKEN (parser_data::lr_table::TERM 87, (parser_data::values::TM_VOID, p1, p2));
fun type_name (i, p1, p2) = token::TOKEN (parser_data::lr_table::TERM 88, (parser_data::values::TYPE_NAME i, p1, p2));
};
};


