Remove the first attempt to integrate Marc's flex/lemon (like in trunk)
authorMarcin Juszkiewicz <marcin@juszkiewicz.com.pl>
Tue, 23 Jan 2007 20:35:07 +0000 (20:35 +0000)
committerMarcin Juszkiewicz <marcin@juszkiewicz.com.pl>
Tue, 23 Jan 2007 20:35:07 +0000 (20:35 +0000)
Remove the first C implementation. I'm too lazy to create proper license
headers for what will be replaced with the bitbake-parser code soon(tm).

14 files changed:
lib/bb/parse/parse_c/BBHandler.py [deleted file]
lib/bb/parse/parse_c/Makefile [deleted file]
lib/bb/parse/parse_c/README.build [deleted file]
lib/bb/parse/parse_c/__init__.py [deleted file]
lib/bb/parse/parse_c/bitbakec.pyx [deleted file]
lib/bb/parse/parse_c/bitbakeparser.cc [deleted file]
lib/bb/parse/parse_c/bitbakeparser.h [deleted file]
lib/bb/parse/parse_c/bitbakeparser.y [deleted file]
lib/bb/parse/parse_c/bitbakescanner.cc [deleted file]
lib/bb/parse/parse_c/bitbakescanner.l [deleted file]
lib/bb/parse/parse_c/lexer.h [deleted file]
lib/bb/parse/parse_c/lexerc.h [deleted file]
lib/bb/parse/parse_c/python_output.h [deleted file]
lib/bb/parse/parse_c/token.h [deleted file]

diff --git a/lib/bb/parse/parse_c/BBHandler.py b/lib/bb/parse/parse_c/BBHandler.py
deleted file mode 100644 (file)
index b430e1f..0000000
+++ /dev/null
@@ -1,188 +0,0 @@
-# ex:ts=4:sw=4:sts=4:et
-# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
-"""class for handling .bb files (using a C++ parser)
-
-    Reads a .bb file and obtains its metadata (using a C++ parser)
-
-    Copyright (C) 2006 Tim Robert Ansell
-    Copyright (C) 2006 Holger Hans Peter Freyther
-
-    This program is free software; you can redistribute it and/or modify it under
-    the terms of the GNU General Public License as published by the Free Software
-    Foundation; either version 2 of the License, or (at your option) any later
-    version.
-
-    Permission is hereby granted, free of charge, to any person obtaining a copy
-    of this software and associated documentation files (the "Software"), to deal
-    in the Software without restriction, including without limitation the rights
-    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-    copies of the Software, and to permit persons to whom the Software is
-    furnished to do so, subject to the following conditions:
-
-    The above copyright notice and this permission notice shall be included in all
-    copies or substantial portions of the Software.
-
-    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
-    SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-    DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-    OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
-    THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-"""
-
-import os, sys
-
-# The Module we will use here
-import bb
-
-from bitbakec import parsefile
-
-#
-# This is the Python Part of the Native Parser Implementation.
-# We will only parse .bbclass, .inc and .bb files but no
-# configuration files.
-# supports, init and handle are the public methods used by
-# parser module
-#
-# The rest of the methods are internal implementation details.
-
-def _init(fn, d):
-    """
-    Initialize the data implementation with values of
-    the environment and data from the file.
-    """
-    pass
-
-#
-# public
-#
-def supports(fn, data):
-    return fn[-3:] == ".bb" or fn[-8:] == ".bbclass" or fn[-4:] == ".inc" or fn[-5:] == ".conf"
-
-def init(fn, data):
-    if not bb.data.getVar('TOPDIR', data):
-        bb.data.setVar('TOPDIR', os.getcwd(), data)
-    if not bb.data.getVar('BBPATH', data):
-        bb.data.setVar('BBPATH', os.path.join(sys.prefix, 'share', 'bitbake'), data)
-
-def handle_inherit(d):
-    """
-    Handle inheriting of classes. This will load all default classes.
-    It could be faster, it could detect infinite loops but this is todo
-    Also this delayed loading of bb.parse could impose a penalty
-    """
-    from bb.parse import handle
-
-    files = (data.getVar('INHERIT', d, True) or "").split()
-    if not "base" in i:
-        files[0:0] = ["base"]
-
-    __inherit_cache = data.getVar('__inherit_cache', d) or []
-    for f in files:
-        file = data.expand(f, d)
-        if file[0] != "/" and file[-8:] != ".bbclass":
-            file = os.path.join('classes', '%s.bbclass' % file)
-
-        if not file in __inherit_cache:
-            debug(2, "BB %s:%d: inheriting %s" % (fn, lineno, file))
-            __inherit_cache.append( file )
-
-            try:
-                handle(file, d, True)
-            except IOError:
-                print "Failed to inherit %s" % file
-    data.setVar('__inherit_cache', __inherit_cache, d)
-
-
-def handle(fn, d, include):
-    from bb import data, parse
-
-    (root, ext) = os.path.splitext(os.path.basename(fn))
-    base_name = "%s%s" % (root,ext)
-
-    # initialize with some data
-    init(fn,d)
-
-    # check if we include or are the beginning
-    oldfile = None
-    if include:
-        oldfile = d.getVar('FILE', False)
-        is_conf = False
-    elif ext == ".conf":
-        is_conf = True
-        data.inheritFromOS(d)
-
-    # find the file
-    if not os.path.isabs(fn):
-        abs_fn = bb.which(d.getVar('BBPATH', True), fn)
-    else:
-        abs_fn = fn
-
-    # check if the file exists
-    if not os.path.exists(abs_fn):
-        raise IOError("file '%(fn)s' not found" % locals() )
-
-    # now we know the file is around mark it as dep
-    if include:
-        parse.mark_dependency(d, abs_fn)
-
-    # manipulate the bbpath
-    if ext != ".bbclass" and ext != ".conf":
-        old_bb_path = data.getVar('BBPATH', d)
-        data.setVar('BBPATH', os.path.dirname(abs_fn) + (":%s" %old_bb_path) , d)
-
-    # handle INHERITS and base inherit
-    if ext != ".bbclass" and ext != ".conf":
-        data.setVar('FILE', fn, d)
-        handle_interit(d)
-
-    # now parse this file - by defering it to C++
-    parsefile(abs_fn, d, is_conf)
-
-    # Finish it up
-    if include == 0:
-        data.expandKeys(d)
-        data.update_data(d)
-        #### !!! XXX Finish it up by executing the anonfunc
-
-
-    # restore the original FILE
-    if oldfile:
-        d.setVar('FILE', oldfile)
-
-    # restore bbpath
-    if ext != ".bbclass" and ext != ".conf":
-        data.setVar('BBPATH', old_bb_path, d )
-
-
-    return d
-
-
-# Needed for BitBake files...
-__pkgsplit_cache__={}
-def vars_from_file(mypkg, d):
-    if not mypkg:
-        return (None, None, None)
-    if mypkg in __pkgsplit_cache__:
-        return __pkgsplit_cache__[mypkg]
-
-    myfile = os.path.splitext(os.path.basename(mypkg))
-    parts = myfile[0].split('_')
-    __pkgsplit_cache__[mypkg] = parts
-    exp = 3 - len(parts)
-    tmplist = []
-    while exp != 0:
-        exp -= 1
-        tmplist.append(None)
-    parts.extend(tmplist)
-    return parts
-
-
-
-
-# Inform bitbake that we are a parser
-# We need to define all three
-from bb.parse import handlers
-handlers.append( {'supports' : supports, 'handle': handle, 'init' : init})
-del handlers
diff --git a/lib/bb/parse/parse_c/Makefile b/lib/bb/parse/parse_c/Makefile
deleted file mode 100644 (file)
index 77daccb..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-
-buil: bitbakec.so
-       echo "Done"
-
-bitbakescanner.cc: bitbakescanner.l
-       flex -t bitbakescanner.l > bitbakescanner.cc
-
-bitbakeparser.cc: bitbakeparser.y python_output.h 
-       lemon bitbakeparser.y
-       mv bitbakeparser.c bitbakeparser.cc
-
-bitbakec.c: bitbakec.pyx
-       pyrexc bitbakec.pyx
-
-bitbakec-processed.c: bitbakec.c
-       cat bitbakec.c | sed -e"s/__pyx_f_8bitbakec_//" > bitbakec-processed.c
-
-bitbakec.o: bitbakec-processed.c
-       gcc -c bitbakec-processed.c -o bitbakec.o -fPIC -I/usr/include/python2.4
-
-bitbakeparser.o: bitbakeparser.cc 
-       g++ -c bitbakeparser.cc -fPIC -I/usr/include/python2.4
-
-bitbakescanner.o: bitbakescanner.cc
-       g++ -c bitbakescanner.cc -fPIC -I/usr/include/python2.4
-
-bitbakec.so: bitbakec.o bitbakeparser.o bitbakescanner.o
-       g++ -shared -fPIC bitbakeparser.o bitbakescanner.o bitbakec.o -o bitbakec.so
-
-clean:
-       rm -f *.out
-       rm -f *.cc
-       rm -f bitbakec.c
-       rm -f bitbakec-processed.c
-       rm -f *.o
-       rm -f *.so
diff --git a/lib/bb/parse/parse_c/README.build b/lib/bb/parse/parse_c/README.build
deleted file mode 100644 (file)
index eb6ad8c..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-To ease portability (lemon, flex, etc) we keep the
-result of flex and lemon in the source code. We agree
-to not manually change the scanner and parser.
-
-
-
-How we create the files:
-   flex -t bitbakescanner.l > bitbakescanner.cc
-   lemon bitbakeparser.y
-   mv bitbakeparser.c bitbakeparser.cc
-
-Now manually create two files
diff --git a/lib/bb/parse/parse_c/__init__.py b/lib/bb/parse/parse_c/__init__.py
deleted file mode 100644 (file)
index bbb318e..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-# ex:ts=4:sw=4:sts=4:et
-# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
-#
-# Copyright (C) 2006 Holger Hans Peter Freyther
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in all
-# copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
-# SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-# DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-# OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
-# THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__version__ = '0.1'
-__all__     = [ 'BBHandler' ]
-
-import BBHandler
diff --git a/lib/bb/parse/parse_c/bitbakec.pyx b/lib/bb/parse/parse_c/bitbakec.pyx
deleted file mode 100644 (file)
index c666e9b..0000000
+++ /dev/null
@@ -1,253 +0,0 @@
-# ex:ts=4:sw=4:sts=4:et
-# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
-
-cdef extern from "stdio.h":
-    ctypedef int FILE
-    FILE *fopen(char*, char*)
-    int fclose(FILE *fp)
-
-cdef extern from "string.h":
-    int strlen(char*)
-
-cdef extern from "lexerc.h":
-    ctypedef struct lex_t:
-        void* parser
-        void* scanner
-        char* name
-        FILE* file
-        int config
-        void* data
-
-    int lineError
-    int errorParse
-
-    cdef extern int parse(FILE*, char*, object, int)
-
-def parsefile(object file, object data, object config):
-    #print "parsefile: 1", file, data
-
-    # Open the file
-    cdef FILE* f
-
-    f = fopen(file, "r")
-    #print "parsefile: 2 opening file"
-    if (f == NULL):
-        raise IOError("No such file %s." % file)
-
-    #print "parsefile: 3 parse"
-    parse(f, file, data, config)
-
-    # Close the file
-    fclose(f)
-
-
-cdef public void e_assign(lex_t* container, char* key, char* what):
-    #print "e_assign", key, what
-    if what == NULL:
-        print "FUTURE Warning empty string: use \"\""
-        what = ""
-
-    d = <object>container.data
-    d.setVar(key, what)
-
-cdef public void e_export(lex_t* c, char* what):
-    #print "e_export", what
-    #exp:
-    # bb.data.setVarFlag(key, "export", 1, data)
-    d = <object>c.data
-    d.setVarFlag(what, "export", 1)
-
-cdef public void e_immediate(lex_t* c, char* key, char* what):
-    #print "e_immediate", key, what
-    #colon:
-    # val = bb.data.expand(groupd["value"], data)
-    d = <object>c.data
-    d.setVar(key, d.expand(what,d))
-
-cdef public void e_cond(lex_t* c, char* key, char* what):
-    #print "e_cond", key, what
-    #ques:
-    # val = bb.data.getVar(key, data)
-    # if val == None:    
-    #    val = groupd["value"]
-    if what == NULL:
-        print "FUTURE warning: Use \"\" for", key
-        what = ""
-
-    d = <object>c.data
-    d.setVar(key, (d.getVar(key,False) or what))
-
-cdef public void e_prepend(lex_t* c, char* key, char* what):
-    #print "e_prepend", key, what
-    #prepend:
-    # val = "%s %s" % (groupd["value"], (bb.data.getVar(key, data) or ""))
-    d = <object>c.data
-    d.setVar(key, what + " " + (d.getVar(key,0) or ""))
-
-cdef public void e_append(lex_t* c, char* key, char* what):
-    #print "e_append", key, what
-    #append:
-    # val = "%s %s" % ((bb.data.getVar(key, data) or ""), groupd["value"])
-    d = <object>c.data
-    d.setVar(key, (d.getVar(key,0) or "") + " " + what)
-
-cdef public void e_precat(lex_t* c, char* key, char* what):
-    #print "e_precat", key, what
-    #predot:
-    # val = "%s%s" % (groupd["value"], (bb.data.getVar(key, data) or ""))
-    d = <object>c.data
-    d.setVar(key, what + (d.getVar(key,0) or ""))
-
-cdef public void e_postcat(lex_t* c, char* key, char* what):
-    #print "e_postcat", key, what
-    #postdot:
-    # val = "%s%s" % ((bb.data.getVar(key, data) or ""), groupd["value"])
-    d = <object>c.data
-    d.setVar(key, (d.getVar(key,0) or "") + what)
-
-cdef public int e_addtask(lex_t* c, char* name, char* before, char* after) except -1:
-    #print "e_addtask", name
-    # func = m.group("func")
-    # before = m.group("before")
-    # after = m.group("after")
-    # if func is None:
-    #     return
-    # var = "do_" + func
-    #
-    # data.setVarFlag(var, "task", 1, d)
-    #
-    # if after is not None:
-    # #  set up deps for function
-    #     data.setVarFlag(var, "deps", after.split(), d)
-    # if before is not None:
-    # #   set up things that depend on this func
-    #     data.setVarFlag(var, "postdeps", before.split(), d)
-    # return
-
-    if c.config == 1:
-        from bb.parse import ParseError
-        raise ParseError("No tasks allowed in config files")
-        return -1
-
-    d = <object>c.data
-    do = "do_%s" % name
-    d.setVarFlag(do, "task", 1)
-
-    if before != NULL and strlen(before) > 0:
-        #print "Before", before
-        d.setVarFlag(do, "postdeps", ("%s" % before).split())
-    if after  != NULL and strlen(after) > 0:
-        #print "After", after
-        d.setVarFlag(do, "deps", ("%s" % after).split())
-
-    return 0
-
-cdef public int e_addhandler(lex_t* c, char* h) except -1:
-    #print "e_addhandler", h
-    # data.setVarFlag(h, "handler", 1, d)
-    if c.config == 1:
-        from bb.parse import ParseError
-        raise ParseError("No handlers allowed in config files")
-        return -1
-
-    d = <object>c.data
-    d.setVarFlag(h, "handler", 1)
-    return 0
-
-cdef public int e_export_func(lex_t* c, char* function) except -1:
-    #print "e_export_func", function
-    if c.config == 1:
-        from bb.parse import ParseError
-        raise ParseError("No functions allowed in config files")
-        return -1
-
-    return 0
-
-cdef public int e_inherit(lex_t* c, char* file) except -1:
-    #print "e_inherit", file
-
-    if c.config == 1:
-        from bb.parse import ParseError
-        raise ParseError("No inherits allowed in config files")
-        return -1
-
-    return 0
-
-cdef public void e_include(lex_t* c, char* file):
-    from bb.parse import handle
-    d = <object>c.data
-
-    try:
-        handle(d.expand(file,d), d, True)
-    except IOError:
-        print "Could not include file", file
-
-
-cdef public int e_require(lex_t* c, char* file) except -1:
-    #print "e_require", file
-    from bb.parse import handle
-    d = <object>c.data
-
-    try:
-        handle(d.expand(file,d), d, True)
-    except IOError:
-        print "ParseError", file
-        from bb.parse import ParseError
-        raise ParseError("Could not include required file %s" % file)
-        return -1
-
-    return 0
-
-cdef public int e_proc(lex_t* c, char* key, char* what) except -1:
-    #print "e_proc", key, what
-    if c.config == 1:
-        from bb.parse import ParseError
-        raise ParseError("No inherits allowed in config files")
-        return -1
-
-    return 0
-
-cdef public int e_proc_python(lex_t* c, char* key, char* what) except -1:
-    #print "e_proc_python"
-    if c.config == 1:
-        from bb.parse import ParseError
-        raise ParseError("No pythin allowed in config files")
-        return -1
-
-    if key != NULL:
-        pass
-        #print "Key", key
-    if what != NULL:
-        pass
-        #print "What", what
-
-    return 0
-
-cdef public int e_proc_fakeroot(lex_t* c, char* key, char* what) except -1:
-    #print "e_fakeroot", key, what
-
-    if c.config == 1:
-        from bb.parse import ParseError
-        raise ParseError("No fakeroot allowed in config files")
-        return -1
-
-    return 0
-
-cdef public int e_def(lex_t* c, char* a, char* b, char* d) except -1:
-    #print "e_def", a, b, d
-
-    if c.config == 1:
-        from bb.parse import ParseError
-        raise ParseError("No defs allowed in config files")
-        return -1
-
-    return 0
-
-cdef public int e_parse_error(lex_t* c) except -1:
-    print "e_parse_error", c.name, "line:", lineError, "parse:", errorParse
-
-
-    from bb.parse import ParseError
-    raise ParseError("There was an parse error, sorry unable to give more information at the current time. File: %s Line: %d" % (c.name,lineError) )
-    return -1
-
diff --git a/lib/bb/parse/parse_c/bitbakeparser.cc b/lib/bb/parse/parse_c/bitbakeparser.cc
deleted file mode 100644 (file)
index 9d9793f..0000000
+++ /dev/null
@@ -1,1157 +0,0 @@
-/* Driver template for the LEMON parser generator.
-** The author disclaims copyright to this source code.
-*/
-/* First off, code is include which follows the "include" declaration
-** in the input file. */
-#include <stdio.h>
-#line 43 "bitbakeparser.y"
-
-#include "token.h"
-#include "lexer.h"
-#include "python_output.h"
-#line 14 "bitbakeparser.c"
-/* Next is all token values, in a form suitable for use by makeheaders.
-** This section will be null unless lemon is run with the -m switch.
-*/
-/* 
-** These constants (all generated automatically by the parser generator)
-** specify the various kinds of tokens (terminals) that the parser
-** understands. 
-**
-** Each symbol here is a terminal symbol in the grammar.
-*/
-/* Make sure the INTERFACE macro is defined.
-*/
-#ifndef INTERFACE
-# define INTERFACE 1
-#endif
-/* The next thing included is series of defines which control
-** various aspects of the generated parser.
-**    YYCODETYPE         is the data type used for storing terminal
-**                       and nonterminal numbers.  "unsigned char" is
-**                       used if there are fewer than 250 terminals
-**                       and nonterminals.  "int" is used otherwise.
-**    YYNOCODE           is a number of type YYCODETYPE which corresponds
-**                       to no legal terminal or nonterminal number.  This
-**                       number is used to fill in empty slots of the hash 
-**                       table.
-**    YYFALLBACK         If defined, this indicates that one or more tokens
-**                       have fall-back values which should be used if the
-**                       original value of the token will not parse.
-**    YYACTIONTYPE       is the data type used for storing terminal
-**                       and nonterminal numbers.  "unsigned char" is
-**                       used if there are fewer than 250 rules and
-**                       states combined.  "int" is used otherwise.
-**    bbparseTOKENTYPE     is the data type used for minor tokens given 
-**                       directly to the parser from the tokenizer.
-**    YYMINORTYPE        is the data type used for all minor tokens.
-**                       This is typically a union of many types, one of
-**                       which is bbparseTOKENTYPE.  The entry in the union
-**                       for base tokens is called "yy0".
-**    YYSTACKDEPTH       is the maximum depth of the parser's stack.
-**    bbparseARG_SDECL     A static variable declaration for the %extra_argument
-**    bbparseARG_PDECL     A parameter declaration for the %extra_argument
-**    bbparseARG_STORE     Code to store %extra_argument into yypParser
-**    bbparseARG_FETCH     Code to extract %extra_argument from yypParser
-**    YYNSTATE           the combined number of states.
-**    YYNRULE            the number of rules in the grammar
-**    YYERRORSYMBOL      is the code number of the error symbol.  If not
-**                       defined, then do no error processing.
-*/
-#define YYCODETYPE unsigned char
-#define YYNOCODE 44
-#define YYACTIONTYPE unsigned char
-#define bbparseTOKENTYPE token_t
-typedef union {
-  bbparseTOKENTYPE yy0;
-  int yy87;
-} YYMINORTYPE;
-#define YYSTACKDEPTH 100
-#define bbparseARG_SDECL lex_t* lex;
-#define bbparseARG_PDECL ,lex_t* lex
-#define bbparseARG_FETCH lex_t* lex = yypParser->lex
-#define bbparseARG_STORE yypParser->lex = lex
-#define YYNSTATE 82
-#define YYNRULE 45
-#define YYERRORSYMBOL 30
-#define YYERRSYMDT yy87
-#define YY_NO_ACTION      (YYNSTATE+YYNRULE+2)
-#define YY_ACCEPT_ACTION  (YYNSTATE+YYNRULE+1)
-#define YY_ERROR_ACTION   (YYNSTATE+YYNRULE)
-
-/* Next are that tables used to determine what action to take based on the
-** current state and lookahead token.  These tables are used to implement
-** functions that take a state number and lookahead value and return an
-** action integer.  
-**
-** Suppose the action integer is N.  Then the action is determined as
-** follows
-**
-**   0 <= N < YYNSTATE                  Shift N.  That is, push the lookahead
-**                                      token onto the stack and goto state N.
-**
-**   YYNSTATE <= N < YYNSTATE+YYNRULE   Reduce by rule N-YYNSTATE.
-**
-**   N == YYNSTATE+YYNRULE              A syntax error has occurred.
-**
-**   N == YYNSTATE+YYNRULE+1            The parser accepts its input.
-**
-**   N == YYNSTATE+YYNRULE+2            No such action.  Denotes unused
-**                                      slots in the yy_action[] table.
-**
-** The action table is constructed as a single large table named yy_action[].
-** Given state S and lookahead X, the action is computed as
-**
-**      yy_action[ yy_shift_ofst[S] + X ]
-**
-** If the index value yy_shift_ofst[S]+X is out of range or if the value
-** yy_lookahead[yy_shift_ofst[S]+X] is not equal to X or if yy_shift_ofst[S]
-** is equal to YY_SHIFT_USE_DFLT, it means that the action is not in the table
-** and that yy_default[S] should be used instead.  
-**
-** The formula above is for computing the action when the lookahead is
-** a terminal symbol.  If the lookahead is a non-terminal (as occurs after
-** a reduce action) then the yy_reduce_ofst[] array is used in place of
-** the yy_shift_ofst[] array and YY_REDUCE_USE_DFLT is used in place of
-** YY_SHIFT_USE_DFLT.
-**
-** The following are the tables generated in this section:
-**
-**  yy_action[]        A single table containing all actions.
-**  yy_lookahead[]     A table containing the lookahead for each entry in
-**                     yy_action.  Used to detect hash collisions.
-**  yy_shift_ofst[]    For each state, the offset into yy_action for
-**                     shifting terminals.
-**  yy_reduce_ofst[]   For each state, the offset into yy_action for
-**                     shifting non-terminals after a reduce.
-**  yy_default[]       Default action for each state.
-*/
-static const YYACTIONTYPE yy_action[] = {
- /*     0 */    82,    3,    7,    8,   38,   22,   39,   24,   26,   32,
- /*    10 */    34,   28,   30,    2,   21,   40,   53,   70,   55,   44,
- /*    20 */    60,   65,   67,  128,    1,   36,   69,   77,   42,   46,
- /*    30 */    11,   66,   13,   15,   17,   19,   64,   62,    9,    7,
- /*    40 */    74,   38,   45,   81,   59,   57,   38,   38,   73,   76,
- /*    50 */     5,   68,   52,   50,   14,   31,   47,   71,   48,   10,
- /*    60 */    72,   33,   23,   49,    6,   41,   51,   78,   75,   16,
- /*    70 */     4,   54,   35,   25,   18,   80,   79,   56,   27,   37,
- /*    80 */    58,   12,   61,   29,   43,   63,   20,
-};
-static const YYCODETYPE yy_lookahead[] = {
- /*     0 */     0,    1,    2,    3,   23,    4,   25,    6,    7,    8,
- /*    10 */     9,   10,   11,   33,   34,   15,   16,    1,   18,   14,
- /*    20 */    20,   21,   22,   31,   32,   24,   26,   27,   13,   14,
- /*    30 */     4,   19,    6,    7,    8,    9,   39,   40,    1,    2,
- /*    40 */    24,   23,   12,   25,   37,   38,   23,   23,   25,   25,
- /*    50 */    42,   19,   35,   36,    5,    5,   12,   24,   13,   34,
- /*    60 */    41,    5,    5,   12,   28,   12,   35,    1,   41,    5,
- /*    70 */    29,    1,    5,    5,    5,   41,   24,   17,    5,   41,
- /*    80 */    37,    5,   19,    5,   12,   39,    5,
-};
-#define YY_SHIFT_USE_DFLT (-20)
-static const signed char yy_shift_ofst[] = {
- /*     0 */   -20,    0,  -20,   41,  -20,   36,  -20,  -20,   37,  -20,
- /*    10 */    26,   76,  -20,   49,  -20,   64,  -20,   69,  -20,   81,
- /*    20 */   -20,    1,   57,  -20,   68,  -20,   73,  -20,   78,  -20,
- /*    30 */    50,  -20,   56,  -20,   67,  -20,  -20,  -19,  -20,  -20,
- /*    40 */    53,   15,   72,    5,   30,  -20,   44,   45,   51,  -20,
- /*    50 */    53,  -20,  -20,   70,  -20,   60,  -20,   60,  -20,  -20,
- /*    60 */    63,  -20,   63,  -20,  -20,   12,  -20,   32,  -20,   16,
- /*    70 */    33,  -20,   23,  -20,  -20,   24,  -20,   66,   52,  -20,
- /*    80 */    18,  -20,
-};
-#define YY_REDUCE_USE_DFLT (-21)
-static const signed char yy_reduce_ofst[] = {
- /*     0 */    -8,  -20,  -21,  -21,    8,  -21,  -21,  -21,   25,  -21,
- /*    10 */   -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
- /*    20 */   -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
- /*    30 */   -21,  -21,  -21,  -21,  -21,  -21,   38,  -21,  -21,  -21,
- /*    40 */    17,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
- /*    50 */    31,  -21,  -21,  -21,  -21,    7,  -21,   43,  -21,  -21,
- /*    60 */    -3,  -21,   46,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
- /*    70 */   -21,   19,  -21,  -21,   27,  -21,  -21,  -21,  -21,   34,
- /*    80 */   -21,  -21,
-};
-static const YYACTIONTYPE yy_default[] = {
- /*     0 */    84,  127,   83,   85,  125,  126,  124,   86,  127,   85,
- /*    10 */   127,  127,   87,  127,   88,  127,   89,  127,   90,  127,
- /*    20 */    91,  127,  127,   92,  127,   93,  127,   94,  127,   95,
- /*    30 */   127,   96,  127,   97,  127,   98,  119,  127,  118,  120,
- /*    40 */   127,  101,  127,  102,  127,   99,  127,  103,  127,  100,
- /*    50 */   106,  104,  105,  127,  107,  127,  108,  111,  109,  110,
- /*    60 */   127,  112,  115,  113,  114,  127,  116,  127,  117,  127,
- /*    70 */   127,  119,  127,  121,  119,  127,  122,  127,  127,  119,
- /*    80 */   127,  123,
-};
-#define YY_SZ_ACTTAB (sizeof(yy_action)/sizeof(yy_action[0]))
-
-/* The next table maps tokens into fallback tokens.  If a construct
-** like the following:
-** 
-**      %fallback ID X Y Z.
-**
-** appears in the grammer, then ID becomes a fallback token for X, Y,
-** and Z.  Whenever one of the tokens X, Y, or Z is input to the parser
-** but it does not parse, the type of the token is changed to ID and
-** the parse is retried before an error is thrown.
-*/
-#ifdef YYFALLBACK
-static const YYCODETYPE yyFallback[] = {
-};
-#endif /* YYFALLBACK */
-
-/* The following structure represents a single element of the
-** parser's stack.  Information stored includes:
-**
-**   +  The state number for the parser at this level of the stack.
-**
-**   +  The value of the token stored at this level of the stack.
-**      (In other words, the "major" token.)
-**
-**   +  The semantic value stored at this level of the stack.  This is
-**      the information used by the action routines in the grammar.
-**      It is sometimes called the "minor" token.
-*/
-struct yyStackEntry {
-  int stateno;       /* The state-number */
-  int major;         /* The major token value.  This is the code
-                     ** number for the token at this stack level */
-  YYMINORTYPE minor; /* The user-supplied minor token value.  This
-                     ** is the value of the token  */
-};
-typedef struct yyStackEntry yyStackEntry;
-
-/* The state of the parser is completely contained in an instance of
-** the following structure */
-struct yyParser {
-  int yyidx;                    /* Index of top element in stack */
-  int yyerrcnt;                 /* Shifts left before out of the error */
-  bbparseARG_SDECL                /* A place to hold %extra_argument */
-  yyStackEntry yystack[YYSTACKDEPTH];  /* The parser's stack */
-};
-typedef struct yyParser yyParser;
-
-#ifndef NDEBUG
-#include <stdio.h>
-static FILE *yyTraceFILE = 0;
-static char *yyTracePrompt = 0;
-#endif /* NDEBUG */
-
-#ifndef NDEBUG
-/* 
-** Turn parser tracing on by giving a stream to which to write the trace
-** and a prompt to preface each trace message.  Tracing is turned off
-** by making either argument NULL 
-**
-** Inputs:
-** <ul>
-** <li> A FILE* to which trace output should be written.
-**      If NULL, then tracing is turned off.
-** <li> A prefix string written at the beginning of every
-**      line of trace output.  If NULL, then tracing is
-**      turned off.
-** </ul>
-**
-** Outputs:
-** None.
-*/
-void bbparseTrace(FILE *TraceFILE, char *zTracePrompt){
-  yyTraceFILE = TraceFILE;
-  yyTracePrompt = zTracePrompt;
-  if( yyTraceFILE==0 ) yyTracePrompt = 0;
-  else if( yyTracePrompt==0 ) yyTraceFILE = 0;
-}
-#endif /* NDEBUG */
-
-#ifndef NDEBUG
-/* For tracing shifts, the names of all terminals and nonterminals
-** are required.  The following table supplies these names */
-static const char *const yyTokenName[] = { 
-  "$",             "SYMBOL",        "VARIABLE",      "EXPORT",      
-  "OP_ASSIGN",     "STRING",        "OP_PREDOT",     "OP_POSTDOT",  
-  "OP_IMMEDIATE",  "OP_COND",       "OP_PREPEND",    "OP_APPEND",   
-  "TSYMBOL",       "BEFORE",        "AFTER",         "ADDTASK",     
-  "ADDHANDLER",    "FSYMBOL",       "EXPORT_FUNC",   "ISYMBOL",     
-  "INHERIT",       "INCLUDE",       "REQUIRE",       "PROC_BODY",   
-  "PROC_OPEN",     "PROC_CLOSE",    "PYTHON",        "FAKEROOT",    
-  "DEF_BODY",      "DEF_ARGS",      "error",         "program",     
-  "statements",    "statement",     "variable",      "task",        
-  "tasks",         "func",          "funcs",         "inherit",     
-  "inherits",      "proc_body",     "def_body",    
-};
-#endif /* NDEBUG */
-
-#ifndef NDEBUG
-/* For tracing reduce actions, the names of all rules are required.
-*/
-static const char *const yyRuleName[] = {
- /*   0 */ "program ::= statements",
- /*   1 */ "statements ::= statements statement",
- /*   2 */ "statements ::=",
- /*   3 */ "variable ::= SYMBOL",
- /*   4 */ "variable ::= VARIABLE",
- /*   5 */ "statement ::= EXPORT variable OP_ASSIGN STRING",
- /*   6 */ "statement ::= EXPORT variable OP_PREDOT STRING",
- /*   7 */ "statement ::= EXPORT variable OP_POSTDOT STRING",
- /*   8 */ "statement ::= EXPORT variable OP_IMMEDIATE STRING",
- /*   9 */ "statement ::= EXPORT variable OP_COND STRING",
- /*  10 */ "statement ::= variable OP_ASSIGN STRING",
- /*  11 */ "statement ::= variable OP_PREDOT STRING",
- /*  12 */ "statement ::= variable OP_POSTDOT STRING",
- /*  13 */ "statement ::= variable OP_PREPEND STRING",
- /*  14 */ "statement ::= variable OP_APPEND STRING",
- /*  15 */ "statement ::= variable OP_IMMEDIATE STRING",
- /*  16 */ "statement ::= variable OP_COND STRING",
- /*  17 */ "task ::= TSYMBOL BEFORE TSYMBOL AFTER TSYMBOL",
- /*  18 */ "task ::= TSYMBOL AFTER TSYMBOL BEFORE TSYMBOL",
- /*  19 */ "task ::= TSYMBOL",
- /*  20 */ "task ::= TSYMBOL BEFORE TSYMBOL",
- /*  21 */ "task ::= TSYMBOL AFTER TSYMBOL",
- /*  22 */ "tasks ::= tasks task",
- /*  23 */ "tasks ::= task",
- /*  24 */ "statement ::= ADDTASK tasks",
- /*  25 */ "statement ::= ADDHANDLER SYMBOL",
- /*  26 */ "func ::= FSYMBOL",
- /*  27 */ "funcs ::= funcs func",
- /*  28 */ "funcs ::= func",
- /*  29 */ "statement ::= EXPORT_FUNC funcs",
- /*  30 */ "inherit ::= ISYMBOL",
- /*  31 */ "inherits ::= inherits inherit",
- /*  32 */ "inherits ::= inherit",
- /*  33 */ "statement ::= INHERIT inherits",
- /*  34 */ "statement ::= INCLUDE ISYMBOL",
- /*  35 */ "statement ::= REQUIRE ISYMBOL",
- /*  36 */ "proc_body ::= proc_body PROC_BODY",
- /*  37 */ "proc_body ::=",
- /*  38 */ "statement ::= variable PROC_OPEN proc_body PROC_CLOSE",
- /*  39 */ "statement ::= PYTHON SYMBOL PROC_OPEN proc_body PROC_CLOSE",
- /*  40 */ "statement ::= PYTHON PROC_OPEN proc_body PROC_CLOSE",
- /*  41 */ "statement ::= FAKEROOT SYMBOL PROC_OPEN proc_body PROC_CLOSE",
- /*  42 */ "def_body ::= def_body DEF_BODY",
- /*  43 */ "def_body ::=",
- /*  44 */ "statement ::= SYMBOL DEF_ARGS def_body",
-};
-#endif /* NDEBUG */
-
-/*
-** This function returns the symbolic name associated with a token
-** value.
-*/
-const char *bbparseTokenName(int tokenType){
-#ifndef NDEBUG
-  if( tokenType>0 && tokenType<(sizeof(yyTokenName)/sizeof(yyTokenName[0])) ){
-    return yyTokenName[tokenType];
-  }else{
-    return "Unknown";
-  }
-#else
-  return "";
-#endif
-}
-
-/* 
-** This function allocates a new parser.
-** The only argument is a pointer to a function which works like
-** malloc.
-**
-** Inputs:
-** A pointer to the function used to allocate memory.
-**
-** Outputs:
-** A pointer to a parser.  This pointer is used in subsequent calls
-** to bbparse and bbparseFree.
-*/
-void *bbparseAlloc(void *(*mallocProc)(size_t)){
-  yyParser *pParser;
-  pParser = (yyParser*)(*mallocProc)( (size_t)sizeof(yyParser) );
-  if( pParser ){
-    pParser->yyidx = -1;
-  }
-  return pParser;
-}
-
-/* The following function deletes the value associated with a
-** symbol.  The symbol can be either a terminal or nonterminal.
-** "yymajor" is the symbol code, and "yypminor" is a pointer to
-** the value.
-*/
-static void yy_destructor(YYCODETYPE yymajor, YYMINORTYPE *yypminor){
-  switch( yymajor ){
-    /* Here is inserted the actions which take place when a
-    ** terminal or non-terminal is destroyed.  This can happen
-    ** when the symbol is popped from the stack during a
-    ** reduce or during error processing or when a parser is 
-    ** being destroyed before it is finished parsing.
-    **
-    ** Note: during a reduce, the only symbols destroyed are those
-    ** which appear on the RHS of the rule, but which are not used
-    ** inside the C code.
-    */
-    case 1:
-    case 2:
-    case 3:
-    case 4:
-    case 5:
-    case 6:
-    case 7:
-    case 8:
-    case 9:
-    case 10:
-    case 11:
-    case 12:
-    case 13:
-    case 14:
-    case 15:
-    case 16:
-    case 17:
-    case 18:
-    case 19:
-    case 20:
-    case 21:
-    case 22:
-    case 23:
-    case 24:
-    case 25:
-    case 26:
-    case 27:
-    case 28:
-    case 29:
-#line 50 "bitbakeparser.y"
-{ (yypminor->yy0).release_this (); }
-#line 423 "bitbakeparser.c"
-      break;
-    default:  break;   /* If no destructor action specified: do nothing */
-  }
-}
-
-/*
-** Pop the parser's stack once.
-**
-** If there is a destructor routine associated with the token which
-** is popped from the stack, then call it.
-**
-** Return the major token number for the symbol popped.
-*/
-static int yy_pop_parser_stack(yyParser *pParser){
-  YYCODETYPE yymajor;
-  yyStackEntry *yytos = &pParser->yystack[pParser->yyidx];
-
-  if( pParser->yyidx<0 ) return 0;
-#ifndef NDEBUG
-  if( yyTraceFILE && pParser->yyidx>=0 ){
-    fprintf(yyTraceFILE,"%sPopping %s\n",
-      yyTracePrompt,
-      yyTokenName[yytos->major]);
-  }
-#endif
-  yymajor = yytos->major;
-  yy_destructor( yymajor, &yytos->minor);
-  pParser->yyidx--;
-  return yymajor;
-}
-
-/* 
-** Deallocate and destroy a parser.  Destructors are all called for
-** all stack elements before shutting the parser down.
-**
-** Inputs:
-** <ul>
-** <li>  A pointer to the parser.  This should be a pointer
-**       obtained from bbparseAlloc.
-** <li>  A pointer to a function used to reclaim memory obtained
-**       from malloc.
-** </ul>
-*/
-void bbparseFree(
-  void *p,                    /* The parser to be deleted */
-  void (*freeProc)(void*)     /* Function used to reclaim memory */
-){
-  yyParser *pParser = (yyParser*)p;
-  if( pParser==0 ) return;
-  while( pParser->yyidx>=0 ) yy_pop_parser_stack(pParser);
-  (*freeProc)((void*)pParser);
-}
-
-/*
-** Find the appropriate action for a parser given the terminal
-** look-ahead token iLookAhead.
-**
-** If the look-ahead token is YYNOCODE, then check to see if the action is
-** independent of the look-ahead.  If it is, return the action, otherwise
-** return YY_NO_ACTION.
-*/
-static int yy_find_shift_action(
-  yyParser *pParser,        /* The parser */
-  int iLookAhead            /* The look-ahead token */
-){
-  int i;
-  int stateno = pParser->yystack[pParser->yyidx].stateno;
-  /* if( pParser->yyidx<0 ) return YY_NO_ACTION;  */
-  i = yy_shift_ofst[stateno];
-  if( i==YY_SHIFT_USE_DFLT ){
-    return yy_default[stateno];
-  }
-  if( iLookAhead==YYNOCODE ){
-    return YY_NO_ACTION;
-  }
-  i += iLookAhead;
-  if( i<0 || i>=YY_SZ_ACTTAB || yy_lookahead[i]!=iLookAhead ){
-#ifdef YYFALLBACK
-    int iFallback;            /* Fallback token */
-    if( iLookAhead<sizeof(yyFallback)/sizeof(yyFallback[0])
-           && (iFallback = yyFallback[iLookAhead])!=0 ){
-#ifndef NDEBUG
-      if( yyTraceFILE ){
-        fprintf(yyTraceFILE, "%sFALLBACK %s => %s\n",
-           yyTracePrompt, yyTokenName[iLookAhead], yyTokenName[iFallback]);
-      }
-#endif
-      return yy_find_shift_action(pParser, iFallback);
-    }
-#endif
-    return yy_default[stateno];
-  }else{
-    return yy_action[i];
-  }
-}
-
-/*
-** Find the appropriate action for a parser given the non-terminal
-** look-ahead token iLookAhead.
-**
-** If the look-ahead token is YYNOCODE, then check to see if the action is
-** independent of the look-ahead.  If it is, return the action, otherwise
-** return YY_NO_ACTION.
-*/
-static int yy_find_reduce_action(
-  int stateno,              /* Current state number */
-  int iLookAhead            /* The look-ahead token */
-){
-  int i;
-  /* int stateno = pParser->yystack[pParser->yyidx].stateno; */
-  i = yy_reduce_ofst[stateno];
-  if( i==YY_REDUCE_USE_DFLT ){
-    return yy_default[stateno];
-  }
-  if( iLookAhead==YYNOCODE ){
-    return YY_NO_ACTION;
-  }
-  i += iLookAhead;
-  if( i<0 || i>=YY_SZ_ACTTAB || yy_lookahead[i]!=iLookAhead ){
-    return yy_default[stateno];
-  }else{
-    return yy_action[i];
-  }
-}
-
-/*
-** Perform a shift action.
-*/
-static void yy_shift(
-  yyParser *yypParser,          /* The parser to be shifted */
-  int yyNewState,               /* The new state to shift in */
-  int yyMajor,                  /* The major token to shift in */
-  YYMINORTYPE *yypMinor         /* Pointer ot the minor token to shift in */
-){
-  yyStackEntry *yytos;
-  yypParser->yyidx++;
-  if( yypParser->yyidx>=YYSTACKDEPTH ){
-     bbparseARG_FETCH;
-     yypParser->yyidx--;
-#ifndef NDEBUG
-     if( yyTraceFILE ){
-       fprintf(yyTraceFILE,"%sStack Overflow!\n",yyTracePrompt);
-     }
-#endif
-     while( yypParser->yyidx>=0 ) yy_pop_parser_stack(yypParser);
-     /* Here code is inserted which will execute if the parser
-     ** stack every overflows */
-     bbparseARG_STORE; /* Suppress warning about unused %extra_argument var */
-     return;
-  }
-  yytos = &yypParser->yystack[yypParser->yyidx];
-  yytos->stateno = yyNewState;
-  yytos->major = yyMajor;
-  yytos->minor = *yypMinor;
-#ifndef NDEBUG
-  if( yyTraceFILE && yypParser->yyidx>0 ){
-    int i;
-    fprintf(yyTraceFILE,"%sShift %d\n",yyTracePrompt,yyNewState);
-    fprintf(yyTraceFILE,"%sStack:",yyTracePrompt);
-    for(i=1; i<=yypParser->yyidx; i++)
-      fprintf(yyTraceFILE," %s",yyTokenName[yypParser->yystack[i].major]);
-    fprintf(yyTraceFILE,"\n");
-  }
-#endif
-}
-
-/* The following table contains information about every rule that
-** is used during the reduce.
-*/
-static const struct {
-  YYCODETYPE lhs;         /* Symbol on the left-hand side of the rule */
-  unsigned char nrhs;     /* Number of right-hand side symbols in the rule */
-} yyRuleInfo[] = {
-  { 31, 1 },
-  { 32, 2 },
-  { 32, 0 },
-  { 34, 1 },
-  { 34, 1 },
-  { 33, 4 },
-  { 33, 4 },
-  { 33, 4 },
-  { 33, 4 },
-  { 33, 4 },
-  { 33, 3 },
-  { 33, 3 },
-  { 33, 3 },
-  { 33, 3 },
-  { 33, 3 },
-  { 33, 3 },
-  { 33, 3 },
-  { 35, 5 },
-  { 35, 5 },
-  { 35, 1 },
-  { 35, 3 },
-  { 35, 3 },
-  { 36, 2 },
-  { 36, 1 },
-  { 33, 2 },
-  { 33, 2 },
-  { 37, 1 },
-  { 38, 2 },
-  { 38, 1 },
-  { 33, 2 },
-  { 39, 1 },
-  { 40, 2 },
-  { 40, 1 },
-  { 33, 2 },
-  { 33, 2 },
-  { 33, 2 },
-  { 41, 2 },
-  { 41, 0 },
-  { 33, 4 },
-  { 33, 5 },
-  { 33, 4 },
-  { 33, 5 },
-  { 42, 2 },
-  { 42, 0 },
-  { 33, 3 },
-};
-
-static void yy_accept(yyParser*);  /* Forward Declaration */
-
-/*
-** Perform a reduce action and the shift that must immediately
-** follow the reduce.
-*/
-static void yy_reduce(
-  yyParser *yypParser,         /* The parser */
-  int yyruleno                 /* Number of the rule by which to reduce */
-){
-  int yygoto;                     /* The next state */
-  int yyact;                      /* The next action */
-  YYMINORTYPE yygotominor;        /* The LHS of the rule reduced */
-  yyStackEntry *yymsp;            /* The top of the parser's stack */
-  int yysize;                     /* Amount to pop the stack */
-  bbparseARG_FETCH;
-  yymsp = &yypParser->yystack[yypParser->yyidx];
-#ifndef NDEBUG
-  if( yyTraceFILE && yyruleno>=0 
-        && yyruleno<sizeof(yyRuleName)/sizeof(yyRuleName[0]) ){
-    fprintf(yyTraceFILE, "%sReduce [%s].\n", yyTracePrompt,
-      yyRuleName[yyruleno]);
-  }
-#endif /* NDEBUG */
-
-#ifndef NDEBUG
-  /* Silence complaints from purify about yygotominor being uninitialized
-  ** in some cases when it is copied into the stack after the following
-  ** switch.  yygotominor is uninitialized when a rule reduces that does
-  ** not set the value of its left-hand side nonterminal.  Leaving the
-  ** value of the nonterminal uninitialized is utterly harmless as long
-  ** as the value is never used.  So really the only thing this code
-  ** accomplishes is to quieten purify.  
-  */
-  memset(&yygotominor, 0, sizeof(yygotominor));
-#endif
-
-  switch( yyruleno ){
-  /* Beginning here are the reduction cases.  A typical example
-  ** follows:
-  **   case 0:
-  **  #line <lineno> <grammarfile>
-  **     { ... }           // User supplied code
-  **  #line <lineno> <thisfile>
-  **     break;
-  */
-      case 3:
-#line 60 "bitbakeparser.y"
-{ yygotominor.yy0.assignString( (char*)yymsp[0].minor.yy0.string() );
-          yymsp[0].minor.yy0.assignString( 0 );
-          yymsp[0].minor.yy0.release_this(); }
-#line 697 "bitbakeparser.c"
-        break;
-      case 4:
-#line 64 "bitbakeparser.y"
-{
-          yygotominor.yy0.assignString( (char*)yymsp[0].minor.yy0.string() );
-          yymsp[0].minor.yy0.assignString( 0 );
-          yymsp[0].minor.yy0.release_this(); }
-#line 705 "bitbakeparser.c"
-        break;
-      case 5:
-#line 70 "bitbakeparser.y"
-{ e_assign( lex, yymsp[-2].minor.yy0.string(), yymsp[0].minor.yy0.string() );
-          e_export( lex, yymsp[-2].minor.yy0.string() );
-          yymsp[-2].minor.yy0.release_this(); yymsp[0].minor.yy0.release_this();   yy_destructor(3,&yymsp[-3].minor);
-  yy_destructor(4,&yymsp[-1].minor);
-}
-#line 714 "bitbakeparser.c"
-        break;
-      case 6:
-#line 74 "bitbakeparser.y"
-{ e_precat( lex, yymsp[-2].minor.yy0.string(), yymsp[0].minor.yy0.string() );
-          e_export( lex, yymsp[-2].minor.yy0.string() );
-          yymsp[-2].minor.yy0.release_this(); yymsp[0].minor.yy0.release_this();   yy_destructor(3,&yymsp[-3].minor);
-  yy_destructor(6,&yymsp[-1].minor);
-}
-#line 723 "bitbakeparser.c"
-        break;
-      case 7:
-#line 78 "bitbakeparser.y"
-{ e_postcat( lex, yymsp[-2].minor.yy0.string(), yymsp[0].minor.yy0.string() );
-          e_export( lex, yymsp[-2].minor.yy0.string() );
-          yymsp[-2].minor.yy0.release_this(); yymsp[0].minor.yy0.release_this();   yy_destructor(3,&yymsp[-3].minor);
-  yy_destructor(7,&yymsp[-1].minor);
-}
-#line 732 "bitbakeparser.c"
-        break;
-      case 8:
-#line 82 "bitbakeparser.y"
-{ e_immediate ( lex, yymsp[-2].minor.yy0.string(), yymsp[0].minor.yy0.string() );
-          e_export( lex, yymsp[-2].minor.yy0.string() );
-          yymsp[-2].minor.yy0.release_this(); yymsp[0].minor.yy0.release_this();   yy_destructor(3,&yymsp[-3].minor);
-  yy_destructor(8,&yymsp[-1].minor);
-}
-#line 741 "bitbakeparser.c"
-        break;
-      case 9:
-#line 86 "bitbakeparser.y"
-{ e_cond( lex, yymsp[-2].minor.yy0.string(), yymsp[0].minor.yy0.string() );
-          yymsp[-2].minor.yy0.release_this(); yymsp[0].minor.yy0.release_this();   yy_destructor(3,&yymsp[-3].minor);
-  yy_destructor(9,&yymsp[-1].minor);
-}
-#line 749 "bitbakeparser.c"
-        break;
-      case 10:
-#line 90 "bitbakeparser.y"
-{ e_assign( lex, yymsp[-2].minor.yy0.string(), yymsp[0].minor.yy0.string() );
-          yymsp[-2].minor.yy0.release_this(); yymsp[0].minor.yy0.release_this();   yy_destructor(4,&yymsp[-1].minor);
-}
-#line 756 "bitbakeparser.c"
-        break;
-      case 11:
-#line 93 "bitbakeparser.y"
-{ e_precat( lex, yymsp[-2].minor.yy0.string(), yymsp[0].minor.yy0.string() );
-          yymsp[-2].minor.yy0.release_this(); yymsp[0].minor.yy0.release_this();   yy_destructor(6,&yymsp[-1].minor);
-}
-#line 763 "bitbakeparser.c"
-        break;
-      case 12:
-#line 96 "bitbakeparser.y"
-{ e_postcat( lex, yymsp[-2].minor.yy0.string(), yymsp[0].minor.yy0.string() );
-          yymsp[-2].minor.yy0.release_this(); yymsp[0].minor.yy0.release_this();   yy_destructor(7,&yymsp[-1].minor);
-}
-#line 770 "bitbakeparser.c"
-        break;
-      case 13:
-#line 99 "bitbakeparser.y"
-{ e_prepend( lex, yymsp[-2].minor.yy0.string(), yymsp[0].minor.yy0.string() );
-          yymsp[-2].minor.yy0.release_this(); yymsp[0].minor.yy0.release_this();   yy_destructor(10,&yymsp[-1].minor);
-}
-#line 777 "bitbakeparser.c"
-        break;
-      case 14:
-#line 102 "bitbakeparser.y"
-{ e_append( lex, yymsp[-2].minor.yy0.string() , yymsp[0].minor.yy0.string() );
-          yymsp[-2].minor.yy0.release_this(); yymsp[0].minor.yy0.release_this();   yy_destructor(11,&yymsp[-1].minor);
-}
-#line 784 "bitbakeparser.c"
-        break;
-      case 15:
-#line 105 "bitbakeparser.y"
-{ e_immediate( lex, yymsp[-2].minor.yy0.string(), yymsp[0].minor.yy0.string() );
-          yymsp[-2].minor.yy0.release_this(); yymsp[0].minor.yy0.release_this();   yy_destructor(8,&yymsp[-1].minor);
-}
-#line 791 "bitbakeparser.c"
-        break;
-      case 16:
-#line 108 "bitbakeparser.y"
-{ e_cond( lex, yymsp[-2].minor.yy0.string(), yymsp[0].minor.yy0.string() );
-          yymsp[-2].minor.yy0.release_this(); yymsp[0].minor.yy0.release_this();   yy_destructor(9,&yymsp[-1].minor);
-}
-#line 798 "bitbakeparser.c"
-        break;
-      case 17:
-#line 112 "bitbakeparser.y"
-{ e_addtask( lex, yymsp[-4].minor.yy0.string(), yymsp[-2].minor.yy0.string(), yymsp[0].minor.yy0.string() );
-          yymsp[-4].minor.yy0.release_this(); yymsp[-2].minor.yy0.release_this(); yymsp[0].minor.yy0.release_this();   yy_destructor(13,&yymsp[-3].minor);
-  yy_destructor(14,&yymsp[-1].minor);
-}
-#line 806 "bitbakeparser.c"
-        break;
-      case 18:
-#line 115 "bitbakeparser.y"
-{ e_addtask( lex, yymsp[-4].minor.yy0.string(), yymsp[0].minor.yy0.string(), yymsp[-2].minor.yy0.string());
-          yymsp[-4].minor.yy0.release_this(); yymsp[-2].minor.yy0.release_this(); yymsp[0].minor.yy0.release_this();   yy_destructor(14,&yymsp[-3].minor);
-  yy_destructor(13,&yymsp[-1].minor);
-}
-#line 814 "bitbakeparser.c"
-        break;
-      case 19:
-#line 118 "bitbakeparser.y"
-{ e_addtask( lex, yymsp[0].minor.yy0.string(), NULL, NULL);
-          yymsp[0].minor.yy0.release_this();}
-#line 820 "bitbakeparser.c"
-        break;
-      case 20:
-#line 121 "bitbakeparser.y"
-{ e_addtask( lex, yymsp[-2].minor.yy0.string(), yymsp[0].minor.yy0.string(), NULL);
-          yymsp[-2].minor.yy0.release_this(); yymsp[0].minor.yy0.release_this();   yy_destructor(13,&yymsp[-1].minor);
-}
-#line 827 "bitbakeparser.c"
-        break;
-      case 21:
-#line 124 "bitbakeparser.y"
-{ e_addtask( lex, yymsp[-2].minor.yy0.string(), NULL, yymsp[0].minor.yy0.string());
-          yymsp[-2].minor.yy0.release_this(); yymsp[0].minor.yy0.release_this();   yy_destructor(14,&yymsp[-1].minor);
-}
-#line 834 "bitbakeparser.c"
-        break;
-      case 25:
-#line 131 "bitbakeparser.y"
-{ e_addhandler( lex, yymsp[0].minor.yy0.string()); yymsp[0].minor.yy0.release_this ();   yy_destructor(16,&yymsp[-1].minor);
-}
-#line 840 "bitbakeparser.c"
-        break;
-      case 26:
-#line 133 "bitbakeparser.y"
-{ e_export_func( lex, yymsp[0].minor.yy0.string()); yymsp[0].minor.yy0.release_this(); }
-#line 845 "bitbakeparser.c"
-        break;
-      case 30:
-#line 138 "bitbakeparser.y"
-{ e_inherit( lex, yymsp[0].minor.yy0.string() ); yymsp[0].minor.yy0.release_this (); }
-#line 850 "bitbakeparser.c"
-        break;
-      case 34:
-#line 144 "bitbakeparser.y"
-{ e_include( lex, yymsp[0].minor.yy0.string() ); yymsp[0].minor.yy0.release_this();   yy_destructor(21,&yymsp[-1].minor);
-}
-#line 856 "bitbakeparser.c"
-        break;
-      case 35:
-#line 147 "bitbakeparser.y"
-{ e_require( lex, yymsp[0].minor.yy0.string() ); yymsp[0].minor.yy0.release_this();   yy_destructor(22,&yymsp[-1].minor);
-}
-#line 862 "bitbakeparser.c"
-        break;
-      case 36:
-#line 150 "bitbakeparser.y"
-{ /* concatenate body lines */
-          yygotominor.yy0.assignString( token_t::concatString(yymsp[-1].minor.yy0.string(), yymsp[0].minor.yy0.string()) );
-          yymsp[-1].minor.yy0.release_this ();
-          yymsp[0].minor.yy0.release_this ();
-        }
-#line 871 "bitbakeparser.c"
-        break;
-      case 37:
-#line 155 "bitbakeparser.y"
-{ yygotominor.yy0.assignString(0); }
-#line 876 "bitbakeparser.c"
-        break;
-      case 38:
-#line 157 "bitbakeparser.y"
-{ e_proc( lex, yymsp[-3].minor.yy0.string(), yymsp[-1].minor.yy0.string() );
-          yymsp[-3].minor.yy0.release_this(); yymsp[-1].minor.yy0.release_this();   yy_destructor(24,&yymsp[-2].minor);
-  yy_destructor(25,&yymsp[0].minor);
-}
-#line 884 "bitbakeparser.c"
-        break;
-      case 39:
-#line 160 "bitbakeparser.y"
-{ e_proc_python ( lex, yymsp[-3].minor.yy0.string(), yymsp[-1].minor.yy0.string() );
-          yymsp[-3].minor.yy0.release_this(); yymsp[-1].minor.yy0.release_this();   yy_destructor(26,&yymsp[-4].minor);
-  yy_destructor(24,&yymsp[-2].minor);
-  yy_destructor(25,&yymsp[0].minor);
-}
-#line 893 "bitbakeparser.c"
-        break;
-      case 40:
-#line 163 "bitbakeparser.y"
-{ e_proc_python( lex, NULL, yymsp[-1].minor.yy0.string());
-          yymsp[-1].minor.yy0.release_this ();   yy_destructor(26,&yymsp[-3].minor);
-  yy_destructor(24,&yymsp[-2].minor);
-  yy_destructor(25,&yymsp[0].minor);
-}
-#line 902 "bitbakeparser.c"
-        break;
-      case 41:
-#line 167 "bitbakeparser.y"
-{ e_proc_fakeroot( lex, yymsp[-3].minor.yy0.string(), yymsp[-1].minor.yy0.string() );
-          yymsp[-3].minor.yy0.release_this (); yymsp[-1].minor.yy0.release_this ();   yy_destructor(27,&yymsp[-4].minor);
-  yy_destructor(24,&yymsp[-2].minor);
-  yy_destructor(25,&yymsp[0].minor);
-}
-#line 911 "bitbakeparser.c"
-        break;
-      case 42:
-#line 171 "bitbakeparser.y"
-{ /* concatenate body lines */
-          yygotominor.yy0.assignString( token_t::concatString(yymsp[-1].minor.yy0.string(), yymsp[0].minor.yy0.string()) );
-          yymsp[-1].minor.yy0.release_this (); yymsp[0].minor.yy0.release_this ();
-        }
-#line 919 "bitbakeparser.c"
-        break;
-      case 43:
-#line 175 "bitbakeparser.y"
-{ yygotominor.yy0.assignString( 0 ); }
-#line 924 "bitbakeparser.c"
-        break;
-      case 44:
-#line 177 "bitbakeparser.y"
-{ e_def( lex, yymsp[-2].minor.yy0.string(), yymsp[-1].minor.yy0.string(), yymsp[0].minor.yy0.string());
-          yymsp[-2].minor.yy0.release_this(); yymsp[-1].minor.yy0.release_this(); yymsp[0].minor.yy0.release_this(); }
-#line 930 "bitbakeparser.c"
-        break;
-  };
-  yygoto = yyRuleInfo[yyruleno].lhs;
-  yysize = yyRuleInfo[yyruleno].nrhs;
-  yypParser->yyidx -= yysize;
-  yyact = yy_find_reduce_action(yymsp[-yysize].stateno,yygoto);
-  if( yyact < YYNSTATE ){
-#ifdef NDEBUG
-    /* If we are not debugging and the reduce action popped at least
-    ** one element off the stack, then we can push the new element back
-    ** onto the stack here, and skip the stack overflow test in yy_shift().
-    ** That gives a significant speed improvement. */
-    if( yysize ){
-      yypParser->yyidx++;
-      yymsp -= yysize-1;
-      yymsp->stateno = yyact;
-      yymsp->major = yygoto;
-      yymsp->minor = yygotominor;
-    }else
-#endif
-    {
-      yy_shift(yypParser,yyact,yygoto,&yygotominor);
-    }
-  }else if( yyact == YYNSTATE + YYNRULE + 1 ){
-    yy_accept(yypParser);
-  }
-}
-
-/*
-** The following code executes when the parse fails
-*/
-static void yy_parse_failed(
-  yyParser *yypParser           /* The parser */
-){
-  bbparseARG_FETCH;
-#ifndef NDEBUG
-  if( yyTraceFILE ){
-    fprintf(yyTraceFILE,"%sFail!\n",yyTracePrompt);
-  }
-#endif
-  while( yypParser->yyidx>=0 ) yy_pop_parser_stack(yypParser);
-  /* Here code is inserted which will be executed whenever the
-  ** parser fails */
-  bbparseARG_STORE; /* Suppress warning about unused %extra_argument variable */
-}
-
-/*
-** The following code executes when a syntax error first occurs.
-*/
-static void yy_syntax_error(
-  yyParser *yypParser,           /* The parser */
-  int yymajor,                   /* The major type of the error token */
-  YYMINORTYPE yyminor            /* The minor type of the error token */
-){
-  bbparseARG_FETCH;
-#define TOKEN (yyminor.yy0)
-#line 52 "bitbakeparser.y"
- e_parse_error( lex ); 
-#line 990 "bitbakeparser.c"
-  bbparseARG_STORE; /* Suppress warning about unused %extra_argument variable */
-}
-
-/*
-** The following is executed when the parser accepts
-*/
-static void yy_accept(
-  yyParser *yypParser           /* The parser */
-){
-  bbparseARG_FETCH;
-#ifndef NDEBUG
-  if( yyTraceFILE ){
-    fprintf(yyTraceFILE,"%sAccept!\n",yyTracePrompt);
-  }
-#endif
-  while( yypParser->yyidx>=0 ) yy_pop_parser_stack(yypParser);
-  /* Here code is inserted which will be executed whenever the
-  ** parser accepts */
-  bbparseARG_STORE; /* Suppress warning about unused %extra_argument variable */
-}
-
-/* The main parser program.
-** The first argument is a pointer to a structure obtained from
-** "bbparseAlloc" which describes the current state of the parser.
-** The second argument is the major token number.  The third is
-** the minor token.  The fourth optional argument is whatever the
-** user wants (and specified in the grammar) and is available for
-** use by the action routines.
-**
-** Inputs:
-** <ul>
-** <li> A pointer to the parser (an opaque structure.)
-** <li> The major token number.
-** <li> The minor token number.
-** <li> An option argument of a grammar-specified type.
-** </ul>
-**
-** Outputs:
-** None.
-*/
-void bbparse(
-  void *yyp,                   /* The parser */
-  int yymajor,                 /* The major token code number */
-  bbparseTOKENTYPE yyminor       /* The value for the token */
-  bbparseARG_PDECL               /* Optional %extra_argument parameter */
-){
-  YYMINORTYPE yyminorunion;
-  int yyact;            /* The parser action. */
-  int yyendofinput;     /* True if we are at the end of input */
-  int yyerrorhit = 0;   /* True if yymajor has invoked an error */
-  yyParser *yypParser;  /* The parser */
-
-  /* (re)initialize the parser, if necessary */
-  yypParser = (yyParser*)yyp;
-  if( yypParser->yyidx<0 ){
-    if( yymajor==0 ) return;
-    yypParser->yyidx = 0;
-    yypParser->yyerrcnt = -1;
-    yypParser->yystack[0].stateno = 0;
-    yypParser->yystack[0].major = 0;
-  }
-  yyminorunion.yy0 = yyminor;
-  yyendofinput = (yymajor==0);
-  bbparseARG_STORE;
-
-#ifndef NDEBUG
-  if( yyTraceFILE ){
-    fprintf(yyTraceFILE,"%sInput %s\n",yyTracePrompt,yyTokenName[yymajor]);
-  }
-#endif
-
-  do{
-    yyact = yy_find_shift_action(yypParser,yymajor);
-    if( yyact<YYNSTATE ){
-      yy_shift(yypParser,yyact,yymajor,&yyminorunion);
-      yypParser->yyerrcnt--;
-      if( yyendofinput && yypParser->yyidx>=0 ){
-        yymajor = 0;
-      }else{
-        yymajor = YYNOCODE;
-      }
-    }else if( yyact < YYNSTATE + YYNRULE ){
-      yy_reduce(yypParser,yyact-YYNSTATE);
-    }else if( yyact == YY_ERROR_ACTION ){
-      int yymx;
-#ifndef NDEBUG
-      if( yyTraceFILE ){
-        fprintf(yyTraceFILE,"%sSyntax Error!\n",yyTracePrompt);
-      }
-#endif
-#ifdef YYERRORSYMBOL
-      /* A syntax error has occurred.
-      ** The response to an error depends upon whether or not the
-      ** grammar defines an error token "ERROR".  
-      **
-      ** This is what we do if the grammar does define ERROR:
-      **
-      **  * Call the %syntax_error function.
-      **
-      **  * Begin popping the stack until we enter a state where
-      **    it is legal to shift the error symbol, then shift
-      **    the error symbol.
-      **
-      **  * Set the error count to three.
-      **
-      **  * Begin accepting and shifting new tokens.  No new error
-      **    processing will occur until three tokens have been
-      **    shifted successfully.
-      **
-      */
-      if( yypParser->yyerrcnt<0 ){
-        yy_syntax_error(yypParser,yymajor,yyminorunion);
-      }
-      yymx = yypParser->yystack[yypParser->yyidx].major;
-      if( yymx==YYERRORSYMBOL || yyerrorhit ){
-#ifndef NDEBUG
-        if( yyTraceFILE ){
-          fprintf(yyTraceFILE,"%sDiscard input token %s\n",
-             yyTracePrompt,yyTokenName[yymajor]);
-        }
-#endif
-        yy_destructor(yymajor,&yyminorunion);
-        yymajor = YYNOCODE;
-      }else{
-         while(
-          yypParser->yyidx >= 0 &&
-          yymx != YYERRORSYMBOL &&
-          (yyact = yy_find_shift_action(yypParser,YYERRORSYMBOL)) >= YYNSTATE
-        ){
-          yy_pop_parser_stack(yypParser);
-        }
-        if( yypParser->yyidx < 0 || yymajor==0 ){
-          yy_destructor(yymajor,&yyminorunion);
-          yy_parse_failed(yypParser);
-          yymajor = YYNOCODE;
-        }else if( yymx!=YYERRORSYMBOL ){
-          YYMINORTYPE u2;
-          u2.YYERRSYMDT = 0;
-          yy_shift(yypParser,yyact,YYERRORSYMBOL,&u2);
-        }
-      }
-      yypParser->yyerrcnt = 3;
-      yyerrorhit = 1;
-#else  /* YYERRORSYMBOL is not defined */
-      /* This is what we do if the grammar does not define ERROR:
-      **
-      **  * Report an error message, and throw away the input token.
-      **
-      **  * If the input token is $, then fail the parse.
-      **
-      ** As before, subsequent error messages are suppressed until
-      ** three input tokens have been successfully shifted.
-      */
-      if( yypParser->yyerrcnt<=0 ){
-        yy_syntax_error(yypParser,yymajor,yyminorunion);
-      }
-      yypParser->yyerrcnt = 3;
-      yy_destructor(yymajor,&yyminorunion);
-      if( yyendofinput ){
-        yy_parse_failed(yypParser);
-      }
-      yymajor = YYNOCODE;
-#endif
-    }else{
-      yy_accept(yypParser);
-      yymajor = YYNOCODE;
-    }
-  }while( yymajor!=YYNOCODE && yypParser->yyidx>=0 );
-  return;
-}
diff --git a/lib/bb/parse/parse_c/bitbakeparser.h b/lib/bb/parse/parse_c/bitbakeparser.h
deleted file mode 100644 (file)
index a2c9aa3..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-#define T_SYMBOL                          1
-#define T_VARIABLE                        2
-#define T_EXPORT                          3
-#define T_OP_ASSIGN                       4
-#define T_STRING                          5
-#define T_OP_PREDOT                       6
-#define T_OP_POSTDOT                      7
-#define T_OP_IMMEDIATE                    8
-#define T_OP_COND                         9
-#define T_OP_PREPEND                     10
-#define T_OP_APPEND                      11
-#define T_TSYMBOL                        12
-#define T_BEFORE                         13
-#define T_AFTER                          14
-#define T_ADDTASK                        15
-#define T_ADDHANDLER                     16
-#define T_FSYMBOL                        17
-#define T_EXPORT_FUNC                    18
-#define T_ISYMBOL                        19
-#define T_INHERIT                        20
-#define T_INCLUDE                        21
-#define T_REQUIRE                        22
-#define T_PROC_BODY                      23
-#define T_PROC_OPEN                      24
-#define T_PROC_CLOSE                     25
-#define T_PYTHON                         26
-#define T_FAKEROOT                       27
-#define T_DEF_BODY                       28
-#define T_DEF_ARGS                       29
diff --git a/lib/bb/parse/parse_c/bitbakeparser.y b/lib/bb/parse/parse_c/bitbakeparser.y
deleted file mode 100644 (file)
index c18e535..0000000
+++ /dev/null
@@ -1,179 +0,0 @@
-/* bbp.lemon 
-
-   written by Marc Singer
-   6 January 2005
-
-   This program is free software; you can redistribute it and/or
-   modify it under the terms of the GNU General Public License as
-   published by the Free Software Foundation; either version 2 of the
-   License, or (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful, but
-   WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
-   USA.
-
-   DESCRIPTION
-   -----------
-
-   lemon parser specification file for a BitBake input file parser.
-
-   Most of the interesting shenanigans are done in the lexer.  The
-   BitBake grammar is not regular.  In order to emit tokens that
-   the parser can properly interpret in LALR fashion, the lexer
-   manages the interpretation state.  This is why there are ISYMBOLs,
-   SYMBOLS, and TSYMBOLS.
-
-   This parser was developed by reading the limited available
-   documentation for BitBake and by analyzing the available BB files.
-   There is no assertion of correctness to be made about this parser.
-
-*/
-
-%token_type {token_t}
-%name bbparse
-%token_prefix   T_
-%extra_argument  {lex_t* lex}
-
-%include {
-#include "token.h"
-#include "lexer.h"
-#include "python_output.h"
-}
-
-
-%token_destructor { $$.release_this (); }
-
-%syntax_error     { e_parse_error( lex ); }
-
-program ::= statements.
-
-statements ::= statements statement.
-statements ::= .
-
-variable(r) ::= SYMBOL(s).
-        { r.assignString( (char*)s.string() );
-          s.assignString( 0 );
-          s.release_this(); }
-variable(r) ::= VARIABLE(v).
-        {
-          r.assignString( (char*)v.string() );
-          v.assignString( 0 );
-          v.release_this(); }
-
-statement ::= EXPORT variable(s) OP_ASSIGN STRING(v).
-        { e_assign( lex, s.string(), v.string() );
-          e_export( lex, s.string() );
-          s.release_this(); v.release_this(); }
-statement ::= EXPORT variable(s) OP_PREDOT STRING(v).
-        { e_precat( lex, s.string(), v.string() );
-          e_export( lex, s.string() );
-          s.release_this(); v.release_this(); }
-statement ::= EXPORT variable(s) OP_POSTDOT STRING(v).
-        { e_postcat( lex, s.string(), v.string() );
-          e_export( lex, s.string() );
-          s.release_this(); v.release_this(); }
-statement ::= EXPORT variable(s) OP_IMMEDIATE STRING(v).
-        { e_immediate ( lex, s.string(), v.string() );
-          e_export( lex, s.string() );
-          s.release_this(); v.release_this(); }
-statement ::= EXPORT variable(s) OP_COND STRING(v).
-        { e_cond( lex, s.string(), v.string() );
-          s.release_this(); v.release_this(); }
-
-statement ::= variable(s) OP_ASSIGN STRING(v).
-        { e_assign( lex, s.string(), v.string() );
-          s.release_this(); v.release_this(); }
-statement ::= variable(s) OP_PREDOT STRING(v).
-        { e_precat( lex, s.string(), v.string() );
-          s.release_this(); v.release_this(); }
-statement ::= variable(s) OP_POSTDOT STRING(v).
-        { e_postcat( lex, s.string(), v.string() );
-          s.release_this(); v.release_this(); }
-statement ::= variable(s) OP_PREPEND STRING(v).
-        { e_prepend( lex, s.string(), v.string() );
-          s.release_this(); v.release_this(); }
-statement ::= variable(s) OP_APPEND STRING(v).
-        { e_append( lex, s.string() , v.string() );
-          s.release_this(); v.release_this(); }
-statement ::= variable(s) OP_IMMEDIATE STRING(v).
-        { e_immediate( lex, s.string(), v.string() );
-          s.release_this(); v.release_this(); }
-statement ::= variable(s) OP_COND STRING(v).
-        { e_cond( lex, s.string(), v.string() );
-          s.release_this(); v.release_this(); }
-
-task ::= TSYMBOL(t) BEFORE TSYMBOL(b) AFTER  TSYMBOL(a).
-        { e_addtask( lex, t.string(), b.string(), a.string() );
-          t.release_this(); b.release_this(); a.release_this(); }
-task ::= TSYMBOL(t) AFTER  TSYMBOL(a) BEFORE TSYMBOL(b).
-        { e_addtask( lex, t.string(), b.string(), a.string());
-          t.release_this(); a.release_this(); b.release_this(); }
-task ::= TSYMBOL(t).
-        { e_addtask( lex, t.string(), NULL, NULL);
-          t.release_this();}
-task ::= TSYMBOL(t) BEFORE TSYMBOL(b).
-        { e_addtask( lex, t.string(), b.string(), NULL);
-          t.release_this(); b.release_this(); }
-task ::= TSYMBOL(t) AFTER  TSYMBOL(a).
-        { e_addtask( lex, t.string(), NULL, a.string());
-          t.release_this(); a.release_this(); }
-tasks ::= tasks task.
-tasks ::= task.
-statement ::= ADDTASK tasks.
-
-statement ::= ADDHANDLER SYMBOL(s).
-        { e_addhandler( lex, s.string()); s.release_this (); }
-
-func ::= FSYMBOL(f). { e_export_func( lex, f.string()); f.release_this(); }
-funcs ::= funcs func.
-funcs ::= func.
-statement ::= EXPORT_FUNC funcs.
-
-inherit ::= ISYMBOL(i). { e_inherit( lex, i.string() ); i.release_this (); }
-inherits ::= inherits inherit.
-inherits ::= inherit.
-statement ::= INHERIT inherits.
-
-statement ::= INCLUDE ISYMBOL(i).
-        { e_include( lex, i.string() ); i.release_this(); }
-
-statement ::= REQUIRE ISYMBOL(i).
-        { e_require( lex, i.string() ); i.release_this(); }
-
-proc_body(r) ::= proc_body(l) PROC_BODY(b).
-        { /* concatenate body lines */
-          r.assignString( token_t::concatString(l.string(), b.string()) );
-          l.release_this ();
-          b.release_this ();
-        }
-proc_body(b) ::= . { b.assignString(0); }
-statement ::= variable(p) PROC_OPEN proc_body(b) PROC_CLOSE.
-        { e_proc( lex, p.string(), b.string() );
-          p.release_this(); b.release_this(); }
-statement ::= PYTHON SYMBOL(p) PROC_OPEN proc_body(b) PROC_CLOSE.
-        { e_proc_python ( lex, p.string(), b.string() );
-          p.release_this(); b.release_this(); }
-statement ::= PYTHON PROC_OPEN proc_body(b) PROC_CLOSE.
-        { e_proc_python( lex, NULL, b.string());
-          b.release_this (); }
-
-statement ::= FAKEROOT SYMBOL(p) PROC_OPEN proc_body(b) PROC_CLOSE.
-        { e_proc_fakeroot( lex, p.string(), b.string() );
-          p.release_this (); b.release_this (); }
-
-def_body(r) ::= def_body(l) DEF_BODY(b).
-        { /* concatenate body lines */
-          r.assignString( token_t::concatString(l.string(), b.string()) );
-          l.release_this (); b.release_this ();
-        }
-def_body(b) ::= . { b.assignString( 0 ); }
-statement ::= SYMBOL(p) DEF_ARGS(a) def_body(b).
-        { e_def( lex, p.string(), a.string(), b.string());
-          p.release_this(); a.release_this(); b.release_this(); }
-
diff --git a/lib/bb/parse/parse_c/bitbakescanner.cc b/lib/bb/parse/parse_c/bitbakescanner.cc
deleted file mode 100644 (file)
index acc13f7..0000000
+++ /dev/null
@@ -1,3209 +0,0 @@
-
-#line 3 "<stdout>"
-
-#define  YY_INT_ALIGNED short int
-
-/* A lexical scanner generated by flex */
-
-#define FLEX_SCANNER
-#define YY_FLEX_MAJOR_VERSION 2
-#define YY_FLEX_MINOR_VERSION 5
-#define YY_FLEX_SUBMINOR_VERSION 33
-#if YY_FLEX_SUBMINOR_VERSION > 0
-#define FLEX_BETA
-#endif
-
-/* First, we deal with  platform-specific or compiler-specific issues. */
-
-/* begin standard C headers. */
-#include <stdio.h>
-#include <string.h>
-#include <errno.h>
-#include <stdlib.h>
-
-/* end standard C headers. */
-
-/* flex integer type definitions */
-
-#ifndef FLEXINT_H
-#define FLEXINT_H
-
-/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
-
-#if __STDC_VERSION__ >= 199901L
-
-/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
- * if you want the limit (max/min) macros for int types. 
- */
-#ifndef __STDC_LIMIT_MACROS
-#define __STDC_LIMIT_MACROS 1
-#endif
-
-#include <inttypes.h>
-typedef int8_t flex_int8_t;
-typedef uint8_t flex_uint8_t;
-typedef int16_t flex_int16_t;
-typedef uint16_t flex_uint16_t;
-typedef int32_t flex_int32_t;
-typedef uint32_t flex_uint32_t;
-#else
-typedef signed char flex_int8_t;
-typedef short int flex_int16_t;
-typedef int flex_int32_t;
-typedef unsigned char flex_uint8_t; 
-typedef unsigned short int flex_uint16_t;
-typedef unsigned int flex_uint32_t;
-#endif /* ! C99 */
-
-/* Limits of integral types. */
-#ifndef INT8_MIN
-#define INT8_MIN               (-128)
-#endif
-#ifndef INT16_MIN
-#define INT16_MIN              (-32767-1)
-#endif
-#ifndef INT32_MIN
-#define INT32_MIN              (-2147483647-1)
-#endif
-#ifndef INT8_MAX
-#define INT8_MAX               (127)
-#endif
-#ifndef INT16_MAX
-#define INT16_MAX              (32767)
-#endif
-#ifndef INT32_MAX
-#define INT32_MAX              (2147483647)
-#endif
-#ifndef UINT8_MAX
-#define UINT8_MAX              (255U)
-#endif
-#ifndef UINT16_MAX
-#define UINT16_MAX             (65535U)
-#endif
-#ifndef UINT32_MAX
-#define UINT32_MAX             (4294967295U)
-#endif
-
-#endif /* ! FLEXINT_H */
-
-#ifdef __cplusplus
-
-/* The "const" storage-class-modifier is valid. */
-#define YY_USE_CONST
-
-#else  /* ! __cplusplus */
-
-#if __STDC__
-
-#define YY_USE_CONST
-
-#endif /* __STDC__ */
-#endif /* ! __cplusplus */
-
-#ifdef YY_USE_CONST
-#define yyconst const
-#else
-#define yyconst
-#endif
-
-/* Returned upon end-of-file. */
-#define YY_NULL 0
-
-/* Promotes a possibly negative, possibly signed char to an unsigned
- * integer for use as an array index.  If the signed char is negative,
- * we want to instead treat it as an 8-bit unsigned char, hence the
- * double cast.
- */
-#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
-
-/* An opaque pointer. */
-#ifndef YY_TYPEDEF_YY_SCANNER_T
-#define YY_TYPEDEF_YY_SCANNER_T
-typedef void* yyscan_t;
-#endif
-
-/* For convenience, these vars (plus the bison vars far below)
-   are macros in the reentrant scanner. */
-#define yyin yyg->yyin_r
-#define yyout yyg->yyout_r
-#define yyextra yyg->yyextra_r
-#define yyleng yyg->yyleng_r
-#define yytext yyg->yytext_r
-#define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno)
-#define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column)
-#define yy_flex_debug yyg->yy_flex_debug_r
-
-int yylex_init (yyscan_t* scanner);
-
-/* Enter a start condition.  This macro really ought to take a parameter,
- * but we do it the disgusting crufty way forced on us by the ()-less
- * definition of BEGIN.
- */
-#define BEGIN yyg->yy_start = 1 + 2 *
-
-/* Translate the current start state into a value that can be later handed
- * to BEGIN to return to the state.  The YYSTATE alias is for lex
- * compatibility.
- */
-#define YY_START ((yyg->yy_start - 1) / 2)
-#define YYSTATE YY_START
-
-/* Action number for EOF rule of a given start state. */
-#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
-
-/* Special action meaning "start processing a new file". */
-#define YY_NEW_FILE yyrestart(yyin ,yyscanner )
-
-#define YY_END_OF_BUFFER_CHAR 0
-
-/* Size of default input buffer. */
-#ifndef YY_BUF_SIZE
-#define YY_BUF_SIZE 16384
-#endif
-
-/* The state buf must be large enough to hold one state per character in the main buffer.
- */
-#define YY_STATE_BUF_SIZE   ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
-
-#ifndef YY_TYPEDEF_YY_BUFFER_STATE
-#define YY_TYPEDEF_YY_BUFFER_STATE
-typedef struct yy_buffer_state *YY_BUFFER_STATE;
-#endif
-
-#define EOB_ACT_CONTINUE_SCAN 0
-#define EOB_ACT_END_OF_FILE 1
-#define EOB_ACT_LAST_MATCH 2
-
-    /* Note: We specifically omit the test for yy_rule_can_match_eol because it requires
-     *       access to the local variable yy_act. Since yyless() is a macro, it would break
-     *       existing scanners that call yyless() from OUTSIDE yylex. 
-     *       One obvious solution it to make yy_act a global. I tried that, and saw
-     *       a 5% performance hit in a non-yylineno scanner, because yy_act is
-     *       normally declared as a register variable-- so it is not worth it.
-     */
-    #define  YY_LESS_LINENO(n) \
-            do { \
-                int yyl;\
-                for ( yyl = n; yyl < yyleng; ++yyl )\
-                    if ( yytext[yyl] == '\n' )\
-                        --yylineno;\
-            }while(0)
-    
-/* Return all but the first "n" matched characters back to the input stream. */
-#define yyless(n) \
-       do \
-               { \
-               /* Undo effects of setting up yytext. */ \
-        int yyless_macro_arg = (n); \
-        YY_LESS_LINENO(yyless_macro_arg);\
-               *yy_cp = yyg->yy_hold_char; \
-               YY_RESTORE_YY_MORE_OFFSET \
-               yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
-               YY_DO_BEFORE_ACTION; /* set up yytext again */ \
-               } \
-       while ( 0 )
-
-#define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner )
-
-/* The following is because we cannot portably get our hands on size_t
- * (without autoconf's help, which isn't available because we want
- * flex-generated scanners to compile on their own).
- */
-
-#ifndef YY_TYPEDEF_YY_SIZE_T
-#define YY_TYPEDEF_YY_SIZE_T
-typedef unsigned int yy_size_t;
-#endif
-
-#ifndef YY_STRUCT_YY_BUFFER_STATE
-#define YY_STRUCT_YY_BUFFER_STATE
-struct yy_buffer_state
-       {
-       FILE *yy_input_file;
-
-       char *yy_ch_buf;                /* input buffer */
-       char *yy_buf_pos;               /* current position in input buffer */
-
-       /* Size of input buffer in bytes, not including room for EOB
-        * characters.
-        */
-       yy_size_t yy_buf_size;
-
-       /* Number of characters read into yy_ch_buf, not including EOB
-        * characters.
-        */
-       int yy_n_chars;
-
-       /* Whether we "own" the buffer - i.e., we know we created it,
-        * and can realloc() it to grow it, and should free() it to
-        * delete it.
-        */
-       int yy_is_our_buffer;
-
-       /* Whether this is an "interactive" input source; if so, and
-        * if we're using stdio for input, then we want to use getc()
-        * instead of fread(), to make sure we stop fetching input after
-        * each newline.
-        */
-       int yy_is_interactive;
-
-       /* Whether we're considered to be at the beginning of a line.
-        * If so, '^' rules will be active on the next match, otherwise
-        * not.
-        */
-       int yy_at_bol;
-
-    int yy_bs_lineno; /**< The line count. */
-    int yy_bs_column; /**< The column count. */
-    
-       /* Whether to try to fill the input buffer when we reach the
-        * end of it.
-        */
-       int yy_fill_buffer;
-
-       int yy_buffer_status;
-
-#define YY_BUFFER_NEW 0
-#define YY_BUFFER_NORMAL 1
-       /* When an EOF's been seen but there's still some text to process
-        * then we mark the buffer as YY_EOF_PENDING, to indicate that we
-        * shouldn't try reading from the input source any more.  We might
-        * still have a bunch of tokens to match, though, because of
-        * possible backing-up.
-        *
-        * When we actually see the EOF, we change the status to "new"
-        * (via yyrestart()), so that the user can continue scanning by
-        * just pointing yyin at a new input file.
-        */
-#define YY_BUFFER_EOF_PENDING 2
-
-       };
-#endif /* !YY_STRUCT_YY_BUFFER_STATE */
-
-/* We provide macros for accessing buffer states in case in the
- * future we want to put the buffer states in a more general
- * "scanner state".
- *
- * Returns the top of the stack, or NULL.
- */
-#define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \
-                          ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \
-                          : NULL)
-
-/* Same as previous macro, but useful when we know that the buffer stack is not
- * NULL or when we need an lvalue. For internal use only.
- */
-#define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
-
-void yyrestart (FILE *input_file ,yyscan_t yyscanner );
-void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner );
-YY_BUFFER_STATE yy_create_buffer (FILE *file,int size ,yyscan_t yyscanner );
-void yy_delete_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner );
-void yy_flush_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner );
-void yypush_buffer_state (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner );
-void yypop_buffer_state (yyscan_t yyscanner );
-
-static void yyensure_buffer_stack (yyscan_t yyscanner );
-static void yy_load_buffer_state (yyscan_t yyscanner );
-static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file ,yyscan_t yyscanner );
-
-#define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER ,yyscanner)
-
-YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size ,yyscan_t yyscanner );
-YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str ,yyscan_t yyscanner );
-YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,int len ,yyscan_t yyscanner );
-
-void *yyalloc (yy_size_t ,yyscan_t yyscanner );
-void *yyrealloc (void *,yy_size_t ,yyscan_t yyscanner );
-void yyfree (void * ,yyscan_t yyscanner );
-
-#define yy_new_buffer yy_create_buffer
-
-#define yy_set_interactive(is_interactive) \
-       { \
-       if ( ! YY_CURRENT_BUFFER ){ \
-        yyensure_buffer_stack (yyscanner); \
-               YY_CURRENT_BUFFER_LVALUE =    \
-            yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \
-       } \
-       YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
-       }
-
-#define yy_set_bol(at_bol) \
-       { \
-       if ( ! YY_CURRENT_BUFFER ){\
-        yyensure_buffer_stack (yyscanner); \
-               YY_CURRENT_BUFFER_LVALUE =    \
-            yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \
-       } \
-       YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
-       }
-
-#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
-
-/* Begin user sect3 */
-
-#define yywrap(n) 1
-#define YY_SKIP_YYWRAP
-
-typedef unsigned char YY_CHAR;
-
-typedef int yy_state_type;
-
-#define yytext_ptr yytext_r
-
-static yy_state_type yy_get_previous_state (yyscan_t yyscanner );
-static yy_state_type yy_try_NUL_trans (yy_state_type current_state  ,yyscan_t yyscanner);
-static int yy_get_next_buffer (yyscan_t yyscanner );
-static void yy_fatal_error (yyconst char msg[] ,yyscan_t yyscanner );
-
-/* Done after the current pattern has been matched and before the
- * corresponding action - sets up yytext.
- */
-#define YY_DO_BEFORE_ACTION \
-       yyg->yytext_ptr = yy_bp; \
-       yyleng = (size_t) (yy_cp - yy_bp); \
-       yyg->yy_hold_char = *yy_cp; \
-       *yy_cp = '\0'; \
-       yyg->yy_c_buf_p = yy_cp;
-
-#define YY_NUM_RULES 47
-#define YY_END_OF_BUFFER 48
-/* This struct is not used in this scanner,
-   but its presence is necessary. */
-struct yy_trans_info
-       {
-       flex_int32_t yy_verify;
-       flex_int32_t yy_nxt;
-       };
-static yyconst flex_int16_t yy_accept[813] =
-    {   0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   26,   26,    0,    0,
-        0,    0,   48,   46,   45,   45,   46,   46,   46,   46,
-       46,   46,    4,   46,   35,   35,   35,   35,   35,   35,
-       35,   35,   35,   28,   28,   28,   28,   28,   28,   46,
-       45,   30,   45,   46,   46,   46,   46,   29,    4,   46,
-       46,   46,   46,   46,   46,   33,   33,   32,   33,   33,
-       33,   33,   33,   33,    4,   33,   33,   33,   33,   33,
-       33,   43,   38,   38,   38,   38,   38,   38,   46,   40,
-       40,   40,   40,   40,   40,   40,   44,   39,   39,   39,
-
-       39,   39,   39,   46,   41,   41,   41,   41,   41,   41,
-       41,   26,   26,   26,   26,   26,   26,   26,   26,    4,
-       26,   26,   26,   26,   26,   26,   25,   11,   45,   12,
-       11,   46,   11,   46,   11,   11,   11,   11,    4,   11,
-       11,   11,   11,   11,   11,   11,   42,   37,   37,   37,
-       37,   37,   37,   37,    0,   34,   36,    0,    0,    1,
-        5,    3,    2,    6,    7,    0,   35,    0,   35,   35,
-       35,   35,   35,   35,   35,   35,   28,   28,   28,   28,
-       28,   28,    0,   29,    0,   30,    0,   29,    0,    0,
-        1,    5,    2,    6,    7,    0,    0,    0,    0,    0,
-
-        0,    0,   31,    0,    0,    0,    0,    0,   38,   38,
-       38,   38,   38,   38,    0,    0,   40,   40,   40,   40,
-       40,   40,   39,   39,   39,   39,   39,   39,    0,    0,
-       41,   41,   41,   41,   41,   41,   26,   26,   26,   26,
-       26,   26,    1,    5,    3,    2,    6,    7,   26,   26,
-       26,   26,   26,   25,   25,   11,    0,   11,    0,   12,
-        0,    9,    0,   11,    0,   11,    0,   10,    0,    0,
-       11,    1,    5,    3,    2,    6,    7,   11,    8,   11,
-       11,   11,   11,   37,   37,   37,   37,   37,   37,   37,
-       37,   36,    0,   24,    0,    0,   36,   35,   35,   27,
-
-       35,   35,   35,   35,   35,   35,   28,   28,   27,   28,
-       28,   28,    0,   24,    0,    0,   27,    0,    0,    0,
-        0,    0,   27,    0,    0,    0,   38,   38,   27,   38,
-       38,   38,    0,    0,   40,   40,   27,   40,   40,   40,
-       39,   39,   27,   39,   39,   39,    0,    0,   41,   41,
-       27,   41,   41,   41,   26,   24,   26,   26,   26,   26,
-       26,   26,   34,    0,   11,   11,    8,   11,   11,   11,
-       11,   11,   37,   37,   37,   37,   27,   37,   37,   37,
-       24,   24,    0,   35,   35,   35,   35,   35,   35,   35,
-       35,   35,   28,   28,   28,   28,   28,   28,   24,    0,
-
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   38,   38,   38,   38,   38,   38,    0,   40,    0,
-       40,   40,   40,   40,   40,   40,   39,   39,   39,   39,
-       39,   39,    0,   41,    0,   41,   41,   41,   41,   41,
-       41,   24,   24,   26,   26,   26,   26,   26,   26,   24,
-       11,   11,   11,   11,   11,   11,   37,   37,   37,   37,
-       37,   37,   37,   37,    0,   36,   35,   35,   35,   35,
-       35,   35,   35,   35,   35,   28,   28,   28,   28,   28,
-       28,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   38,   38,   38,   38,   38,   38,    0,
-
-       40,   40,   40,   40,   40,   40,   40,   39,   39,   39,
-       39,   39,   39,    0,   41,   41,   41,   41,   41,   41,
-       41,   26,   26,   26,   26,   26,   26,   11,   11,   11,
-       11,   11,   11,   37,   37,   37,   20,   37,   37,   37,
-       37,   35,   35,   35,   21,   35,   35,   35,   23,   35,
-       28,   28,   28,   28,   28,   28,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   38,   38,
-       38,   38,   38,   38,   40,   40,   40,   40,   40,   40,
-       39,   39,   39,   39,   39,   39,   41,   41,   41,   41,
-       41,   41,   26,   26,   26,   26,   26,   26,   11,   11,
-
-       11,   11,   11,   11,   37,   37,   37,   19,   37,   37,
-       37,   35,   35,   16,   35,   13,   15,   14,   28,   28,
-       16,   13,   15,   14,    0,    0,   16,   13,   15,   14,
-        0,    0,   16,   13,   15,   14,   38,   38,   16,   13,
-       15,   14,   40,   40,   16,   13,   15,   14,   39,   39,
-       16,   13,   15,   14,   41,   41,   16,   13,   15,   14,
-       26,   26,   16,   13,   15,   14,   11,   11,   11,   11,
-       11,   11,   37,   37,   16,   13,   15,   14,   35,   35,
-       22,   28,   28,    0,    0,    0,    0,   38,   38,   40,
-       40,   39,   39,   41,   41,   26,   26,   11,   11,   37,
-
-       37,   35,   35,   28,   28,    0,    0,    0,    0,   38,
-       38,   40,   40,   39,   39,   41,   41,   26,   26,   11,
-       11,   37,   37,   35,   17,   28,   17,    0,   17,    0,
-       17,   38,   17,   40,   17,   39,   17,   41,   17,   26,
-       17,   11,   11,   37,   17,   35,   28,    0,    0,   38,
-       40,   39,   41,   26,   11,   37,   35,   28,    0,    0,
-       38,   40,   39,   41,   26,   11,   37,   35,   28,    0,
-        0,   38,   40,   39,   41,   26,   11,   37,   35,   28,
-        0,    0,   38,   40,   39,   41,   26,   11,   37,   35,
-       28,    0,    0,   38,   40,   39,   41,   26,   11,   37,
-
-       18,   18,   18,   18,   18,   18,   18,   18,   18,   11,
-       18,    0
-    } ;
-
-static yyconst flex_int32_t yy_ec[256] =
-    {   0,
-        1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
-        1,    1,    4,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    2,    1,    5,    6,    7,    1,    1,    8,    9,
-       10,    1,   11,   12,   13,   14,   15,   16,   16,   16,
-       16,   16,   16,   16,   16,   16,   16,   17,    1,    1,
-       18,    1,   19,    1,   20,   20,   21,   20,   22,   23,
-       20,   20,   24,   20,   20,   20,   20,   25,   26,   27,
-       20,   28,   29,   30,   31,   20,   20,   32,   20,   20,
-       33,   34,   35,    1,   36,    1,   37,   38,   39,   40,
-
-       41,   42,   20,   43,   44,   20,   45,   46,   20,   47,
-       48,   49,   50,   51,   52,   53,   54,   20,   20,   55,
-       56,   20,   57,    1,   58,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1
-    } ;
-
-static yyconst flex_int32_t yy_meta[59] =
-    {   0,
-        1,    1,    2,    3,    1,    1,    4,    1,    1,    1,
-        5,    6,    5,    5,    5,    7,    1,    8,    1,    9,
-        9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
-        9,    9,   10,    1,   11,    9,    9,    9,    9,    9,
-        9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
-        9,    9,    9,    9,    9,    9,    1,   12
-    } ;
-
-static yyconst flex_int16_t yy_base[847] =
-    {   0,
-        0,    0,   58,    0,  115,  165,  215,  265,  316,    0,
-      374,    0,  432,    0,  490,    0,  547,  604,  661,  711,
-      762,    0, 2308, 2309, 2309, 2309, 2304,    0,  118, 2288,
-     2287, 2286,  111, 2285,  116,  124,  120,  129,  131,  128,
-      144,  139,  140,    0, 2270, 2261, 2259, 2252, 2257, 2280,
-      137, 2309, 2279,  127,  183,  124,  171, 2277,  187,  179,
-      126,  163,  158,  131,  173, 2309,  204, 2309, 2309, 2291,
-      210, 2275, 2274, 2273,  197, 2272, 2257, 2248, 2246, 2239,
-     2244, 2309,    0, 2252, 2243, 2241, 2234, 2239, 2222,  218,
-      220,  221,  223,  224,  228,  236, 2309,    0, 2246, 2237,
-
-     2235, 2228, 2233, 2216,  233,  238,  240,  255,  263,  242,
-      273, 2269, 2268, 2267, 2266,  283,  285,  289,  293,  287,
-      294,  160,  210,  207,  147,  220,  297,  552,  560, 2265,
-      565,  210,  569,  544,  580,  622,  627,  634,  623,  669,
-      689,  819,  684,  702,  821,  823, 2309,    0, 2235,  266,
-     2225, 2224, 2217, 2222, 2259, 2309,  548,  566,  581, 2309,
-     2309, 2309, 2309, 2309, 2309, 2204,  568, 2225,  626,  610,
-      640,  651,  699,  823,  678,  702,    0, 2232, 2218, 2215,
-      550, 2206, 2238, 2309,  577, 2309,  261, 2251,  594,  830,
-     2236, 2235, 2234, 2233, 2232,  575,  580,  634,  710,  599,
-
-     2245,  735, 2309, 2220, 2206, 2203,  703, 2194,    0, 2216,
-     2202, 2199,  711, 2190,    0, 2182,  681,  827,  830,  831,
-      826,  828,    0, 2211, 2197, 2194,  717, 2185,    0, 2177,
-      740,  832,  834,  833,  853,  854, 2230, 2229, 2228, 2227,
-      874,  840, 2226, 2225, 2224, 2223, 2222, 2221,  592,  254,
-      651,  855,  833,  737, 2220,  877,  897,  898,  878, 2219,
-      881,  883,  886,  905,  916,  920,  700,  859,  906,  925,
-      936,  940,  941,  950,  955,  960,  964,  974, 2219,  975,
-      983,  994,  995,    0, 2193, 2179, 2165, 2175, 2174,  718,
-     2165,  883,  910,  934,    0, 2179, 2309,  979,  971,  940,
-
-      974,  954,  985,  999,  983, 1003, 2187,  968,    0, 2166,
-     2170, 2156, 1017, 1036,  583, 1003, 2192,  996,  685,  917,
-     2182,  998, 2309, 2161, 2165, 2151, 2178, 1001,    0, 2157,
-     2161, 2147, 2142,    0, 1040, 1041,  946, 1042, 1045, 1043,
-     2173, 1012,    0, 2152, 2156, 2142, 2137,    0, 1055, 1057,
-     1060, 1061, 1062, 1064, 1074, 1087, 1067, 1069, 2191, 1080,
-     1082,  687, 1090, 1094, 1103, 1112, 2191, 1111, 1125, 1127,
-     1134, 1142, 2166, 1048, 2150, 2142,    0, 2143, 2147, 2133,
-     1138, 2183, 2127, 1127, 1141, 1146, 1136, 1149, 1151, 1155,
-     1156, 1158, 2156, 2146, 2145, 2127, 2129, 2135, 1164, 1087,
-
-     1006, 1135, 1132,  595,  912, 2150, 2140, 2139, 2121, 2123,
-     2129, 2144, 2134, 2133, 2115, 2117, 2123, 2108, 1183, 2107,
-     1185, 1190, 1191, 1192, 1200, 1204, 2136, 2126, 2125, 2107,
-     2109, 2115, 2100, 1205, 2099, 1207, 1208, 1212, 1213, 1214,
-     1222, 1168, 2153,  923, 1084, 1213, 1182, 1106, 1190, 1236,
-     1250, 1251, 1252, 1266, 1267, 1271, 2127, 2117, 2116, 2101,
-     2100, 2096, 2098, 2104, 2089, 1210, 1257, 1230, 1273, 1274,
-     1275, 1276, 1284, 1286, 1288, 2116, 2098, 2092, 2103, 2098,
-     2090, 1280, 1177, 1244, 1282, 1285, 1275, 2110, 2092, 2086,
-     2097, 2092, 2084, 2104, 2086, 2080, 2091, 2086, 2078, 2070,
-
-     1296, 1306, 1323, 1324, 1325, 1327, 1328, 2097, 2079, 2073,
-     2084, 2079, 2071, 2063, 1330, 1331, 1333, 1337, 1345, 1340,
-     1346, 1347, 1309, 1259, 1351, 1354, 1356, 1370, 1385, 1394,
-     1401, 1403, 1408, 2090, 2072, 2066,    0, 2076, 2076, 2071,
-     2063, 1359, 1361, 1379, 1355, 1407, 1410, 1411, 1415, 1416,
-     2077, 2072, 2066, 2069, 2056, 2067, 1398, 1343, 1408, 1404,
-      643, 1409, 2071, 2066, 2060, 2063, 2050, 2061, 2065, 2060,
-     2054, 2057, 2044, 2055, 1420, 1445, 1413, 1447, 1453, 1454,
-     2059, 2053, 2047, 2049, 2032, 2043, 1455, 1459, 1460, 1461,
-     1462, 1463, 1471, 1436, 1430, 1192, 1433, 1479, 1482, 1492,
-
-     1506, 1519, 1520, 1528, 2046, 2037, 2031,    0, 2033, 2016,
-     2027, 1486, 1496, 1505, 1506, 1510, 1516, 1524, 2043, 2015,
-        0,    0,    0,    0, 1281, 1517, 2043, 2041, 2036, 2034,
-     2024, 1995, 2309, 2309, 2309, 2309, 2005, 1981,    0,    0,
-        0,    0, 1538, 1528, 1530, 1534, 1537, 1540, 1981, 1957,
-        0,    0,    0,    0, 1557, 1558, 1559, 1560, 1561, 1563,
-     1568, 1547, 1988, 1959, 1955, 1948, 1580, 1581, 1582, 1590,
-     1592, 1594, 1924, 1863,    0,    0,    0,    0, 1598, 1599,
-     1600, 1875, 1859, 1350, 1584, 1803, 1792, 1801, 1790, 1603,
-     1601, 1799, 1788, 1604, 1602, 1610, 1609, 1643, 1644, 1797,
-
-     1786, 1611, 1630, 1800, 1773, 1010, 1606, 1798, 1771, 1795,
-     1768, 1640, 1646, 1793, 1766, 1648, 1649, 1614, 1379, 1667,
-     1674, 1791, 1764, 1647, 1653, 1793,    0, 1352, 1796, 1791,
-     2309, 1790,    0, 1677, 1652, 1789,    0, 1681, 1676, 1480,
-     1805, 1685, 1702, 1786,    0, 1682, 1775, 1679, 1774, 1769,
-     1696, 1768, 1698, 1688, 1715, 1765, 1706, 1765, 1472, 1763,
-     1757, 1714, 1753, 1717, 1719, 1729, 1703, 1722, 1685, 1645,
-     1604, 1546, 1726, 1466, 1733, 1635, 1752, 1403, 1739, 1349,
-     1725, 1269, 1222, 1740, 1217, 1749, 1758, 1768, 1155, 1755,
-     1148, 1481, 1096, 1001, 1761,  866, 1762, 1763, 1792,  834,
-
-     1768,    0,  742, 2309,    0, 1764,    0, 1778,  678, 1801,
-        0, 2309, 1835, 1847, 1859, 1871, 1883,  550, 1892, 1898,
-     1907, 1919, 1931, 1939, 1945, 1950, 1956, 1965, 1977, 1989,
-     2001, 2013, 2025, 2033, 2039, 2043,  306,  304,  301, 2050,
-      213, 2058,  136, 2066, 2074, 2082
-    } ;
-
-static yyconst flex_int16_t yy_def[847] =
-    {   0,
-      812,    1,  812,    3,  813,  813,  814,  814,  812,    9,
-      812,   11,  812,   13,  812,   15,  815,  815,  816,  816,
-      812,   21,  812,  812,  812,  812,  817,  818,  812,  812,
-      812,  812,  812,  812,  819,  819,  819,  819,  819,  819,
-      819,  819,  819,  820,  820,  820,  820,  820,  820,  821,
-      821,  812,  821,  822,  821,  821,  821,  812,  821,  821,
-      821,  821,  821,  821,  821,  812,  823,  812,  812,  817,
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-      812,  812,  824,  824,  824,  824,  824,  824,  812,  825,
-      825,  825,  825,  825,  825,  825,  812,  826,  826,  826,
-
-      826,  826,  826,  812,  827,  827,  827,  827,  827,  827,
-      827,  828,  828,  828,  829,  828,  828,  828,  828,  828,
-      828,  828,  828,  828,  828,  828,  812,  830,  812,  812,
-      830,  831,  832,  833,  830,  830,  830,  830,  830,  830,
-      830,  830,  830,  830,  830,  830,  812,  834,  834,  834,
-      834,  834,  834,  834,  817,  812,  835,  812,  812,  812,
-      812,  812,  812,  812,  812,  812,  819,  836,  819,  819,
-      819,  819,  819,  819,  819,  819,  820,  820,  820,  820,
-      820,  820,  821,  812,  821,  812,  822,  817,  821,  821,
-      821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
-
-      823,  823,  812,  812,  812,  812,  812,  812,  824,  824,
-      824,  824,  824,  824,  837,  812,  825,  825,  825,  825,
-      825,  825,  826,  826,  826,  826,  826,  826,  838,  812,
-      827,  827,  827,  827,  827,  827,  828,  812,  829,  812,
-      828,  828,  828,  828,  828,  828,  828,  828,  828,  828,
-      828,  828,  828,  812,  812,  830,  830,  830,  812,  812,
-      831,  831,  831,  832,  832,  832,  833,  833,  833,  830,
-      830,  830,  830,  830,  830,  830,  830,  830,  812,  830,
-      830,  830,  830,  834,  834,  834,  834,  834,  834,  834,
-      834,  835,  812,  812,  839,  836,  812,  819,  819,  819,
-
-      819,  819,  819,  819,  819,  819,  820,  820,  820,  820,
-      820,  820,  821,  821,  821,  821,  821,  821,  821,  821,
-      812,  812,  812,  812,  812,  812,  824,  824,  824,  824,
-      824,  824,  840,  841,  825,  825,  825,  825,  825,  825,
-      826,  826,  826,  826,  826,  826,  842,  843,  827,  827,
-      827,  827,  827,  827,  828,  828,  828,  828,  828,  828,
-      828,  828,  830,  830,  830,  830,  812,  830,  830,  830,
-      830,  830,  834,  834,  834,  834,  834,  834,  834,  834,
-      812,  812,  844,  819,  819,  819,  819,  819,  819,  819,
-      819,  819,  820,  820,  820,  820,  820,  820,  821,  821,
-
-      821,  821,  821,  821,  821,  812,  812,  812,  812,  812,
-      812,  824,  824,  824,  824,  824,  824,  840,  825,  845,
-      825,  825,  825,  825,  825,  825,  826,  826,  826,  826,
-      826,  826,  842,  827,  846,  827,  827,  827,  827,  827,
-      827,  828,  812,  828,  828,  828,  828,  828,  828,  830,
-      830,  830,  830,  830,  830,  830,  834,  834,  834,  834,
-      834,  834,  834,  834,  844,  835,  819,  819,  819,  819,
-      819,  819,  819,  819,  819,  820,  820,  820,  820,  820,
-      820,  821,  821,  821,  821,  821,  821,  812,  812,  812,
-      812,  812,  812,  824,  824,  824,  824,  824,  824,  845,
-
-      825,  825,  825,  825,  825,  825,  825,  826,  826,  826,
-      826,  826,  826,  846,  827,  827,  827,  827,  827,  827,
-      827,  828,  828,  828,  828,  828,  828,  830,  830,  830,
-      830,  830,  830,  834,  834,  834,  834,  834,  834,  834,
-      834,  819,  819,  819,  819,  819,  819,  819,  819,  819,
-      820,  820,  820,  820,  820,  820,  821,  821,  821,  821,
-      821,  821,  812,  812,  812,  812,  812,  812,  824,  824,
-      824,  824,  824,  824,  825,  825,  825,  825,  825,  825,
-      826,  826,  826,  826,  826,  826,  827,  827,  827,  827,
-      827,  827,  828,  828,  828,  828,  828,  828,  830,  830,
-
-      830,  830,  830,  830,  834,  834,  834,  834,  834,  834,
-      834,  819,  819,  819,  819,  819,  819,  819,  820,  820,
-      820,  820,  820,  820,  821,  821,  821,  821,  821,  821,
-      812,  812,  812,  812,  812,  812,  824,  824,  824,  824,
-      824,  824,  825,  825,  825,  825,  825,  825,  826,  826,
-      826,  826,  826,  826,  827,  827,  827,  827,  827,  827,
-      828,  828,  828,  828,  828,  828,  830,  830,  830,  830,
-      830,  830,  834,  834,  834,  834,  834,  834,  819,  819,
-      819,  820,  820,  821,  821,  812,  812,  824,  824,  825,
-      825,  826,  826,  827,  827,  828,  828,  830,  830,  834,
-
-      834,  819,  819,  820,  820,  821,  821,  812,  812,  824,
-      824,  825,  825,  826,  826,  827,  827,  828,  828,  830,
-      830,  834,  834,  819,  819,  820,  820,  821,  821,  812,
-      812,  824,  824,  825,  825,  826,  826,  827,  827,  828,
-      828,  830,  830,  834,  834,  819,  820,  821,  812,  824,
-      825,  826,  827,  828,  830,  834,  819,  820,  821,  812,
-      824,  825,  826,  827,  828,  830,  834,  819,  820,  821,
-      812,  824,  825,  826,  827,  828,  830,  834,  819,  820,
-      821,  812,  824,  825,  826,  827,  828,  830,  834,  819,
-      820,  821,  812,  824,  825,  826,  827,  828,  830,  834,
-
-      819,  820,  821,  812,  824,  825,  826,  827,  828,  830,
-      834,    0,  812,  812,  812,  812,  812,  812,  812,  812,
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-      812,  812,  812,  812,  812,  812
-    } ;
-
-static yyconst flex_int16_t yy_nxt[2368] =
-    {   0,
-       24,   25,   26,   25,   24,   27,   28,   24,   29,   24,
-       30,   24,   24,   31,   24,   24,   32,   33,   34,   35,
-       35,   36,   35,   35,   35,   35,   35,   35,   35,   35,
-       35,   35,   24,   24,   24,   35,   37,   35,   35,   38,
-       39,   40,   35,   41,   35,   35,   35,   35,   42,   35,
-       43,   35,   35,   35,   35,   35,   24,   24,   24,   25,
-       26,   25,   24,   27,   24,   24,   29,   24,   30,   24,
-       24,   31,   24,   24,   32,   33,   34,   44,   44,   45,
-       44,   44,   44,   44,   44,   44,   44,   44,   44,   44,
-       24,   24,   24,   44,   46,   44,   44,   47,   44,   44,
-
-       44,   48,   44,   44,   44,   44,   44,   44,   49,   44,
-       44,   44,   44,   44,   24,   24,   51,   52,   53,  158,
-       54,  163,  166,   55,  164,   56,  166,  159,   57,  156,
-      166,   58,   59,   60,  166,  166,   61,  166,  185,  186,
-      184,  191,  184,  188,  435,  166,  166,  184,  168,  238,
-      166,   62,  168,  184,   63,  169,  168,  196,   64,  170,
-      168,  168,  238,  168,  173,   65,   51,   52,   53,  171,
-       54,  168,  168,   55,  184,   56,  168,  199,   57,  184,
-      176,   58,   59,   60,  189,  172,   61,  184,  192,  184,
-      174,  249,  190,  252,  175,  184,  195,  193,  198,  184,
-
-      194,   62,  197,  184,   63,  202,  203,  163,   64,  238,
-      164,  158,  238,  200,  262,   65,   67,   68,   69,  159,
-       70,  420,  238,   71,  216,   72,  216,  216,   73,  216,
-      216,   74,   75,   76,  216,  161,   77,  812,  812,  230,
-      812,  812,  216,  263,  230,  812,  230,  251,  230,  250,
-      161,   78,  218,  812,   79,  812,  238,  812,   80,  812,
-      253,  230,  219,  156,  220,   81,   67,   68,   69,  230,
-       70,  232,  812,   71,  221,   72,  222,  188,   73,  230,
-      812,   74,   75,   76,  241,  238,   77,  238,  235,  238,
-      812,  238,  242,  358,  233,  238,  238,  246,  254,  255,
-
-      247,   78,  243,  234,   79,  286,  244,  287,   80,  383,
-      245,  248,  347,  236,  333,   81,   24,   25,   82,   25,
-       24,   27,   24,   24,   29,   24,   30,   24,   24,   31,
-       24,   24,   32,   33,   34,   83,   83,   84,   83,   83,
-       83,   83,   83,   83,   83,   83,   83,   83,   24,   24,
-       24,   83,   85,   83,   83,   86,   83,   83,   83,   87,
-       83,   83,   83,   83,   83,   83,   88,   83,   83,   83,
-       83,   83,   24,   24,   24,   25,   26,   25,   24,   27,
-       89,   24,   29,   24,   30,   24,   24,   90,   91,   24,
-       32,   33,   34,   91,   91,   92,   91,   91,   91,   91,
-
-       91,   91,   91,   91,   91,   91,   24,   24,   24,   91,
-       93,   91,   91,   94,   91,   91,   91,   95,   91,   91,
-       91,   91,   91,   91,   96,   91,   91,   91,   91,   91,
-       24,   24,   24,   25,   97,   25,   24,   27,   24,   24,
-       29,   24,   30,   24,   24,   31,   24,   24,   32,   33,
-       34,   98,   98,   99,   98,   98,   98,   98,   98,   98,
-       98,   98,   98,   98,   24,   24,   24,   98,  100,   98,
-       98,  101,   98,   98,   98,  102,   98,   98,   98,   98,
-       98,   98,  103,   98,   98,   98,   98,   98,   24,   24,
-       24,   25,   26,   25,   24,   27,  104,   24,   29,   24,
-
-       30,   24,   24,  105,  106,   24,   32,   33,   34,  106,
-      106,  107,  106,  106,  106,  106,  106,  106,  106,  106,
-      106,  106,   24,   24,   24,  106,  108,  106,  106,  109,
-      106,  106,  106,  110,  106,  106,  106,  106,  106,  106,
-      111,  106,  106,  106,  106,  106,   24,   24,  113,  114,
-      113,  268,  115,  257,  166,  116,  257,  117,  157,  257,
-      118,  259,  260,  119,  120,  121,  257,  158,  122,  257,
-      265,  156,  257,  265,  166,  159,  265,  269,  185,  186,
-      168,  270,  293,  123,  257,  258,  124,  257,  310,  271,
-      125,  184,  311,  184,  238,  189,  184,  126,  258,  184,
-
-      168,  315,  266,  190,  127,  113,  114,  113,  400,  115,
-      184,  184,  116,  258,  117,  184,  166,  118,  357,  316,
-      119,  120,  121,  257,  257,  122,  257,  257,  257,  257,
-      257,  257,  166,  275,  257,  257,  276,  294,  257,  272,
-      123,  257,  168,  124,  273,  486,  166,  125,  320,  299,
-      184,  274,  298,  238,  126,  258,  258,  166,  168,  184,
-      258,  127,  129,  130,  131,  132,  133,  258,  134,  135,
-      257,  136,  168,  257,  137,  317,  257,  138,  139,  140,
-      238,  300,  141,  168,  166,  257,  277,  216,  257,  238,
-      257,  257,  359,  257,  142,  629,  257,  143,  812,  301,
-
-      144,  184,  258,  257,  145,  166,  257,  268,  166,  257,
-      168,  146,  129,  130,  131,  132,  133,  258,  134,  135,
-      278,  136,  258,  280,  137,  404,  184,  138,  139,  140,
-      305,  168,  141,  269,  168,  258,  202,  203,  254,  255,
-      449,  324,  281,  302,  142,  325,  230,  143,  318,  330,
-      144,  306,  319,  331,  145,  344,  378,  812,  184,  345,
-      379,  146,   24,   25,  147,   25,   24,   27,   24,   24,
-       29,   24,   30,   24,   24,   31,   24,   24,   32,   33,
-       34,  148,  148,  149,  148,  148,  148,  148,  148,  148,
-      148,  148,  148,  148,   24,   24,   24,  148,  150,  151,
-
-      148,  152,  148,  148,  148,  153,  148,  148,  148,  148,
-      148,  148,  154,  148,  148,  148,  148,  148,   24,   24,
-      257,  279,  257,  257,  257,  257,  257,  257,  257,  166,
-      257,  313,  216,  216,  216,  238,  216,  216,  230,  230,
-      230,  355,  238,  812,  812,  812,  184,  812,  812,  812,
-      812,  812,  258,  335,  258,  168,  258,  238,  349,  230,
-      230,  303,  811,  283,  338,  304,  268,  282,  339,  336,
-      812,  812,  337,  350,  351,  241,  238,  340,  257,  259,
-      260,  257,  362,  242,  257,  262,  314,  262,  261,  166,
-      262,  352,  269,  360,  807,  353,  356,  361,  257,  257,
-
-      257,  257,  257,  354,  257,  257,  265,  156,  267,  265,
-      258,  293,  265,  268,  263,  168,  263,  265,  156,  263,
-      265,  265,  363,  265,  265,  238,  270,  265,  184,  257,
-      258,  258,  257,  184,  271,  381,  382,  364,  266,  269,
-      257,  257,  257,  257,  257,  257,  166,  257,  257,  266,
-      522,  257,  216,  266,  257,  487,  257,  257,  258,  257,
-      166,  257,  257,  812,  257,  257,  294,  257,  257,  258,
-      405,  257,  168,  258,  258,  257,  257,  166,  257,  257,
-      166,  257,  257,  258,  257,  166,  168,  257,  258,  166,
-      257,  166,  365,  258,  388,  257,  257,  258,  257,  257,
-
-      366,  257,  257,  168,  384,  166,  168,  258,  258,  166,
-      394,  168,  184,  385,  368,  168,  258,  168,  313,  184,
-      395,  387,  184,  386,  369,  391,  184,  258,  258,  805,
-      389,  168,  370,  184,  728,  168,  371,  399,  382,  390,
-      407,  403,  483,  413,  372,  401,  216,  216,  216,  216,
-      408,  216,  184,  414,  428,  402,  392,  812,  812,  812,
-      812,  230,  812,  230,  429,  421,  230,  230,  230,  238,
-      230,  238,  812,  314,  812,  355,  238,  812,  812,  812,
-      436,  812,  238,  422,  238,  425,  238,  424,  442,  443,
-      458,  257,  444,  423,  257,  364,  426,  257,  257,  437,
-
-      459,  257,  440,  184,  450,  382,  439,  257,  238,  438,
-      257,  445,  257,  257,  482,  257,  257,  441,  257,  257,
-      523,  446,  448,  258,  804,  447,  257,  258,  257,  257,
-      356,  257,  257,  166,  257,  257,  258,  451,  257,  381,
-      382,  257,  166,  257,  258,  258,  257,  166,  184,  257,
-      365,  184,  166,  452,  467,  166,  526,  166,  258,  168,
-      258,  166,  166,  453,  166,  399,  382,  258,  168,  442,
-      443,  484,  454,  168,  455,  258,  802,  468,  168,  800,
-      184,  168,  469,  168,  238,  485,  470,  168,  168,  216,
-      168,  216,  238,  184,  238,  456,  216,  216,  216,  471,
-
-      812,  475,  812,  474,  472,  473,  216,  812,  812,  812,
-      216,  230,  502,  230,  230,  238,  166,  812,  230,  230,
-      230,  812,  812,  558,  812,  812,  503,  504,  230,  812,
-      812,  812,  664,  527,  516,  525,  166,  450,  382,  812,
-      257,  796,  168,  257,  517,  505,  794,  507,  518,  524,
-      506,  257,  257,  257,  257,  257,  257,  257,  257,  257,
-      184,  238,  168,  166,  520,  521,  519,  257,  257,  258,
-      257,  257,  257,  257,  257,  257,  543,  528,  257,  166,
-      166,  166,  166,  258,  258,  258,  542,  529,  530,  168,
-      166,  184,  166,  793,  166,  559,  184,  184,  184,  258,
-
-      258,  184,  216,  684,  258,  168,  168,  168,  168,  557,
-      595,  238,  216,  812,  533,  547,  168,  532,  168,  531,
-      168,  560,  546,  812,  544,  562,  545,  548,  561,  216,
-      216,  216,  549,  216,  216,  575,  230,  230,  550,  230,
-      812,  812,  812,  230,  812,  812,  230,  812,  812,  238,
-      812,  230,  230,  238,  812,  594,  238,  812,  238,  184,
-      587,  166,  812,  812,  578,  166,  184,  166,  184,  576,
-      579,  257,  748,  791,  257,  577,  593,  257,  580,  588,
-      706,  238,  626,  591,  590,  166,  257,  168,  589,  257,
-      596,  168,  257,  168,  612,  257,  592,  597,  257,  599,
-
-      613,  257,  257,  258,  257,  257,  598,  257,  257,  257,
-      257,  168,  257,  166,  184,  257,  166,  166,  258,  216,
-      184,  166,  166,  614,  184,  184,  216,  258,  789,  741,
-      812,  600,  238,  625,  258,  238,  258,  812,  238,  168,
-      602,  258,  168,  168,  628,  601,  603,  168,  168,  630,
-      616,  216,  627,  216,  615,  643,  618,  645,  604,  216,
-      216,  230,  812,  617,  812,  230,  230,  230,  230,  230,
-      812,  812,  812,  238,  663,  662,  812,  812,  812,  812,
-      812,  238,  238,  257,  644,  665,  257,  646,  184,  257,
-      655,  785,  166,  257,  648,  770,  257,  184,  656,  257,
-
-      754,  658,  166,  660,  657,  647,  661,  257,  679,  803,
-      257,  166,  166,  257,  659,  258,  166,  667,  168,  666,
-      257,  257,  166,  257,  257,  258,  257,  257,  168,  257,
-      166,  668,  257,  184,  216,  257,  216,  168,  168,  258,
-      216,  680,  168,  216,  216,  812,  216,  812,  168,  238,
-      669,  812,  258,  258,  812,  812,  168,  812,  681,  670,
-      690,  258,  685,  230,  230,  230,  230,  230,  672,  230,
-      238,  783,  671,  691,  812,  812,  812,  812,  812,  694,
-      812,  257,  257,  257,  257,  257,  257,  257,  257,  257,
-      696,  257,  697,  257,  257,  257,  257,  257,  257,  257,
-
-      184,  257,  698,  695,  166,  166,  166,  216,  230,  216,
-      230,  238,  238,  258,  258,  258,  238,  166,  812,  812,
-      812,  812,  184,  258,  707,  258,  699,  258,  702,  782,
-      168,  168,  168,  712,  716,  724,  166,  238,  740,  703,
-      718,  713,  717,  168,  257,  257,  216,  257,  257,  719,
-      257,  257,  216,  166,  230,  230,  729,  812,  216,  166,
-      787,  184,  168,  812,  734,  812,  812,  746,  257,  812,
-      781,  257,  738,  720,  257,  257,  258,  258,  257,  168,
-      725,  257,  230,  216,  721,  168,  257,  230,  166,  257,
-      238,  742,  257,  812,  812,  184,  735,  751,  812,  739,
-
-      258,  753,  216,  257,  230,  755,  257,  258,  759,  257,
-      780,  757,  166,  812,  168,  812,  257,  765,  258,  257,
-      216,  238,  257,  230,  743,  762,  778,  764,  166,  768,
-      257,  812,  216,  257,  812,  258,  257,  773,  168,  230,
-      775,  184,  776,  812,  766,  166,  216,  779,  258,  792,
-      812,  784,  777,  257,  168,  230,  257,  812,  786,  257,
-      238,  166,  258,  790,  795,  238,  812,  216,  230,  257,
-      216,  168,  257,  797,  166,  257,  774,  788,  812,  812,
-      772,  812,  798,  801,  230,  258,  771,  168,  769,  806,
-      808,  809,  799,  257,  767,  812,  257,  763,  761,  257,
-
-      168,  258,  257,  760,  758,  257,  756,  238,  257,  752,
-      750,  749,  184,  747,  745,  744,  737,  736,  733,  732,
-      810,  731,  730,  727,  726,  258,  723,  722,  715,  714,
-      711,  710,  709,  708,  258,   50,   50,   50,   50,   50,
-       50,   50,   50,   50,   50,   50,   50,   66,   66,   66,
-       66,   66,   66,   66,   66,   66,   66,   66,   66,  112,
-      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
-      112,  128,  128,  128,  128,  128,  128,  128,  128,  128,
-      128,  128,  128,  155,  155,  155,  155,  155,  155,  155,
-      155,  155,  155,  155,  155,  167,  167,  167,  167,  705,
-
-      167,  167,  177,  177,  177,  704,  177,  183,  701,  183,
-      183,  183,  183,  183,  183,  183,  183,  183,  183,  187,
-      187,  187,  187,  187,  187,  187,  187,  187,  187,  187,
-      187,  201,  201,  201,  201,  201,  201,  201,  201,  201,
-      201,  201,  201,  209,  209,  209,  700,  209,  217,  217,
-      238,  217,  217,  217,  223,  223,  223,  238,  223,  231,
-      231,  238,  231,  231,  231,  237,  237,  237,  237,  237,
-      237,  237,  237,  237,  237,  237,  237,  239,  239,  239,
-      239,  239,  239,  239,  239,  239,  239,  239,  239,  256,
-      238,  256,  256,  256,  256,  256,  256,  256,  256,  256,
-
-      256,  261,  693,  692,  261,  261,  261,  261,  261,  261,
-      261,  261,  261,  264,  264,  264,  264,  264,  264,  264,
-      264,  264,  264,  264,  264,  267,  689,  688,  267,  267,
-      267,  267,  267,  267,  267,  267,  267,  284,  284,  284,
-      687,  284,  292,  292,  292,  292,  686,  292,  292,  296,
-      184,  296,  184,  296,  418,  418,  418,  184,  418,  184,
-      683,  418,  433,  433,  433,  682,  433,  678,  677,  433,
-      465,  465,  465,  676,  465,  675,  674,  465,  500,  500,
-      500,  673,  500,  654,  653,  500,  514,  514,  514,  652,
-      514,  651,  650,  514,  649,  642,  641,  640,  639,  638,
-
-      637,  636,  635,  634,  633,  632,  631,  624,  623,  622,
-      621,  620,  619,  611,  610,  609,  608,  607,  606,  605,
-      515,  586,  585,  584,  583,  582,  581,  501,  574,  573,
-      572,  571,  570,  569,  568,  567,  566,  565,  564,  563,
-      556,  555,  554,  553,  552,  551,  466,  541,  540,  539,
-      538,  537,  536,  535,  534,  443,  515,  434,  513,  512,
-      511,  510,  509,  508,  501,  419,  499,  498,  497,  496,
-      495,  494,  493,  492,  491,  490,  489,  488,  481,  480,
-      479,  478,  477,  476,  466,  382,  464,  463,  462,  461,
-      460,  457,  367,  238,  434,  432,  431,  430,  427,  419,
-
-      417,  416,  415,  412,  411,  410,  409,  406,  184,  398,
-      397,  396,  393,  297,  380,  377,  376,  375,  374,  373,
-      367,  260,  255,  238,  238,  238,  238,  238,  238,  238,
-      240,  238,  238,  348,  346,  343,  342,  341,  334,  332,
-      329,  328,  327,  326,  323,  322,  321,  203,  184,  184,
-      184,  184,  184,  156,  184,  312,  309,  308,  307,  297,
-      295,  156,  291,  290,  289,  288,  285,  260,  240,  238,
-      238,  238,  229,  228,  227,  226,  225,  224,  215,  214,
-      213,  212,  211,  210,  208,  207,  206,  205,  204,  165,
-      162,  161,  160,  156,  162,  184,  184,  182,  181,  180,
-
-      179,  178,  165,  162,  161,  160,  156,  812,   23,  812,
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-      812,  812,  812,  812,  812,  812,  812
-    } ;
-
-static yyconst flex_int16_t yy_chk[2368] =
-    {   0,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    3,    3,
-        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
-        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
-        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
-        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
-
-        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
-        3,    3,    3,    3,    3,    3,    5,    5,    5,   29,
-        5,   33,   35,    5,   33,    5,   37,   29,    5,   54,
-       36,    5,    5,    5,   40,   38,    5,   39,   51,   51,
-       56,   56,   61,   54,  843,   42,   43,   64,   35,  125,
-       41,    5,   37,   51,    5,   36,   36,   61,    5,   37,
-       40,   38,  122,   39,   40,    5,    6,    6,    6,   38,
-        6,   42,   43,    6,   63,    6,   41,   64,    6,   62,
-       43,    6,    6,    6,   55,   39,    6,   57,   57,   65,
-       41,  122,   55,  125,   42,   60,   60,   59,   63,   55,
-
-       59,    6,   62,   59,    6,   67,   67,   75,    6,  124,
-       75,   71,  123,   65,  132,    6,    7,    7,    7,   71,
-        7,  841,  126,    7,   90,    7,   91,   92,    7,   93,
-       94,    7,    7,    7,   95,   90,    7,   91,   92,  105,
-       93,   94,   96,  132,  106,   95,  107,  124,  110,  123,
-      105,    7,   92,   96,    7,  106,  250,  107,    7,  110,
-      126,  108,   93,  187,   94,    7,    8,    8,    8,  109,
-        8,  107,  108,    8,   95,    8,   96,  187,    8,  111,
-      109,    8,    8,    8,  116,  116,    8,  117,  110,  120,
-      111,  118,  116,  250,  108,  119,  121,  120,  127,  127,
-
-      120,    8,  117,  109,    8,  150,  118,  150,    8,  839,
-      119,  121,  838,  111,  837,    8,    9,    9,    9,    9,
-        9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
-        9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
-        9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
-        9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
-        9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
-        9,    9,    9,    9,   11,   11,   11,   11,   11,   11,
-       11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
-       11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
-
-       11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
-       11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
-       11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
-       11,   11,   13,   13,   13,   13,   13,   13,   13,   13,
-       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
-       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
-       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
-       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
-       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
-       15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
-
-       15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
-       15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
-       15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
-       15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
-       15,   15,   15,   15,   15,   15,   15,   15,   17,   17,
-       17,  134,   17,  128,  157,   17,  128,   17,  818,  128,
-       17,  129,  129,   17,   17,   17,  131,  158,   17,  131,
-      133,  133,  131,  133,  167,  158,  133,  134,  185,  185,
-      157,  135,  159,   17,  135,  128,   17,  135,  181,  135,
-       17,  196,  181,  185,  249,  189,  197,   17,  131,  315,
-
-      167,  196,  133,  189,   17,   18,   18,   18,  315,   18,
-      189,  404,   18,  135,   18,  200,  170,   18,  249,  197,
-       18,   18,   18,  136,  139,   18,  136,  139,  137,  136,
-      139,  137,  169,  139,  137,  138,  139,  159,  138,  136,
-       18,  138,  170,   18,  137,  404,  171,   18,  200,  170,
-      198,  138,  169,  251,   18,  136,  139,  172,  169,  561,
-      137,   18,   19,   19,   19,   19,   19,  138,   19,   19,
-      140,   19,  171,  140,   19,  198,  140,   19,   19,   19,
-      809,  171,   19,  172,  175,  143,  140,  217,  143,  362,
-      141,  143,  251,  141,   19,  561,  141,   19,  217,  172,
-
-       19,  319,  140,  144,   19,  173,  144,  267,  176,  144,
-      175,   19,   20,   20,   20,   20,   20,  143,   20,   20,
-      141,   20,  141,  143,   20,  319,  199,   20,   20,   20,
-      175,  173,   20,  267,  176,  144,  202,  202,  254,  254,
-      362,  207,  144,  173,   20,  207,  231,   20,  199,  213,
-       20,  176,  199,  213,   20,  227,  290,  231,  803,  227,
-      290,   20,   21,   21,   21,   21,   21,   21,   21,   21,
-       21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
-       21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
-       21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
-
-       21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
-       21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
-      142,  142,  145,  142,  146,  145,  142,  146,  145,  174,
-      146,  190,  221,  218,  222,  253,  219,  220,  232,  234,
-      233,  242,  242,  221,  218,  222,  190,  219,  220,  232,
-      234,  233,  142,  218,  145,  174,  146,  252,  232,  235,
-      236,  174,  800,  146,  221,  174,  268,  145,  221,  219,
-      235,  236,  220,  233,  234,  241,  241,  222,  256,  259,
-      259,  256,  253,  241,  256,  261,  190,  262,  263,  292,
-      263,  235,  268,  252,  796,  235,  242,  252,  257,  258,
-
-      258,  257,  258,  236,  257,  258,  264,  264,  269,  264,
-      256,  293,  264,  269,  261,  292,  262,  265,  265,  263,
-      265,  266,  266,  265,  266,  444,  270,  266,  405,  270,
-      257,  258,  270,  320,  270,  294,  294,  271,  264,  269,
-      271,  272,  273,  271,  272,  273,  300,  272,  273,  265,
-      444,  274,  337,  266,  274,  405,  275,  274,  270,  275,
-      302,  276,  275,  337,  276,  277,  293,  276,  277,  271,
-      320,  277,  300,  272,  273,  278,  280,  299,  278,  280,
-      301,  278,  280,  274,  281,  298,  302,  281,  275,  305,
-      281,  303,  271,  276,  302,  282,  283,  277,  282,  283,
-
-      278,  282,  283,  299,  298,  304,  301,  278,  280,  306,
-      308,  298,  318,  299,  280,  305,  281,  303,  313,  316,
-      308,  301,  401,  299,  281,  305,  706,  282,  283,  794,
-      303,  304,  282,  313,  706,  306,  282,  314,  314,  304,
-      322,  318,  401,  328,  283,  316,  335,  336,  338,  340,
-      322,  339,  314,  328,  342,  316,  306,  335,  336,  338,
-      340,  349,  339,  350,  342,  335,  351,  352,  353,  357,
-      354,  358,  349,  313,  350,  355,  355,  351,  352,  353,
-      349,  354,  360,  336,  361,  339,  445,  338,  356,  356,
-      374,  363,  357,  336,  363,  364,  340,  363,  364,  350,
-
-      374,  364,  353,  400,  365,  365,  352,  365,  448,  350,
-      365,  358,  368,  366,  400,  368,  366,  354,  368,  366,
-      445,  358,  361,  363,  793,  360,  369,  364,  370,  369,
-      355,  370,  369,  384,  370,  371,  365,  366,  371,  381,
-      381,  371,  387,  372,  368,  366,  372,  385,  403,  372,
-      364,  402,  386,  368,  384,  388,  448,  389,  369,  384,
-      370,  390,  391,  368,  392,  399,  399,  371,  387,  442,
-      442,  402,  370,  385,  371,  372,  791,  385,  386,  789,
-      399,  388,  386,  389,  447,  403,  387,  390,  391,  419,
-      392,  421,  449,  483,  596,  372,  422,  423,  424,  388,
-
-      419,  392,  421,  391,  389,  390,  425,  422,  423,  424,
-      426,  434,  421,  436,  437,  446,  466,  425,  438,  439,
-      440,  426,  434,  483,  436,  437,  422,  423,  441,  438,
-      439,  440,  596,  449,  436,  447,  468,  450,  450,  441,
-      450,  785,  466,  450,  437,  424,  783,  426,  438,  446,
-      425,  451,  452,  453,  451,  452,  453,  451,  452,  453,
-      484,  524,  468,  467,  440,  441,  439,  454,  455,  450,
-      454,  455,  456,  454,  455,  456,  468,  451,  456,  469,
-      470,  471,  472,  451,  452,  453,  467,  452,  453,  467,
-      473,  487,  474,  782,  475,  484,  482,  625,  485,  454,
-
-      455,  486,  501,  625,  456,  469,  470,  471,  472,  482,
-      524,  523,  502,  501,  456,  472,  473,  455,  474,  454,
-      475,  485,  471,  502,  469,  487,  470,  473,  486,  503,
-      504,  505,  474,  506,  507,  502,  515,  516,  475,  517,
-      503,  504,  505,  518,  506,  507,  520,  515,  516,  522,
-      517,  519,  521,  525,  518,  523,  526,  520,  527,  558,
-      516,  545,  519,  521,  505,  542,  684,  543,  728,  503,
-      506,  528,  728,  780,  528,  504,  522,  528,  507,  517,
-      684,  719,  558,  520,  519,  544,  529,  545,  518,  529,
-      525,  542,  529,  543,  542,  530,  521,  526,  530,  528,
-
-      543,  530,  531,  528,  532,  531,  527,  532,  531,  533,
-      532,  544,  533,  546,  557,  533,  547,  548,  529,  577,
-      560,  549,  550,  544,  559,  562,  575,  530,  778,  719,
-      577,  529,  595,  557,  531,  597,  532,  575,  594,  546,
-      531,  533,  547,  548,  560,  530,  532,  549,  550,  562,
-      547,  576,  559,  578,  546,  575,  550,  577,  533,  579,
-      580,  587,  576,  548,  578,  588,  589,  590,  591,  592,
-      579,  580,  587,  593,  595,  594,  588,  589,  590,  591,
-      592,  598,  740,  599,  576,  597,  599,  578,  759,  599,
-      587,  774,  612,  600,  580,  759,  600,  792,  588,  600,
-
-      740,  590,  613,  592,  589,  579,  593,  601,  612,  792,
-      601,  614,  615,  601,  591,  599,  616,  599,  612,  598,
-      602,  603,  617,  602,  603,  600,  602,  603,  613,  604,
-      618,  600,  604,  626,  644,  604,  645,  614,  615,  601,
-      646,  613,  616,  647,  643,  644,  648,  645,  617,  662,
-      601,  646,  602,  603,  647,  643,  618,  648,  615,  602,
-      643,  604,  626,  655,  656,  657,  658,  659,  604,  660,
-      661,  772,  603,  644,  655,  656,  657,  658,  659,  655,
-      660,  667,  668,  669,  667,  668,  669,  667,  668,  669,
-      661,  670,  662,  671,  670,  672,  671,  670,  672,  671,
-
-      685,  672,  667,  656,  679,  680,  681,  691,  695,  690,
-      694,  697,  696,  667,  668,  669,  718,  702,  691,  695,
-      690,  694,  707,  670,  685,  671,  668,  672,  679,  771,
-      679,  680,  681,  690,  694,  702,  703,  776,  718,  680,
-      696,  691,  695,  702,  698,  699,  712,  698,  699,  697,
-      698,  699,  713,  724,  716,  717,  707,  712,  735,  725,
-      776,  770,  703,  713,  712,  716,  717,  724,  720,  735,
-      770,  720,  716,  698,  720,  721,  698,  699,  721,  724,
-      703,  721,  739,  734,  699,  725,  742,  738,  746,  742,
-      754,  720,  742,  739,  734,  748,  713,  734,  738,  717,
-
-      720,  738,  751,  743,  753,  742,  743,  721,  748,  743,
-      769,  746,  757,  751,  746,  753,  755,  754,  742,  755,
-      762,  765,  755,  764,  721,  751,  767,  753,  768,  757,
-      766,  762,  773,  766,  764,  743,  766,  762,  757,  775,
-      764,  781,  765,  773,  755,  779,  784,  768,  755,  781,
-      775,  773,  766,  777,  768,  786,  777,  784,  775,  777,
-      787,  790,  766,  779,  784,  798,  786,  795,  797,  788,
-      806,  779,  788,  786,  801,  788,  763,  777,  795,  797,
-      761,  806,  787,  790,  808,  777,  760,  790,  758,  795,
-      797,  798,  788,  799,  756,  808,  799,  752,  750,  799,
-
-      801,  788,  810,  749,  747,  810,  744,  741,  810,  736,
-      732,  730,  729,  726,  723,  722,  715,  714,  711,  710,
-      799,  709,  708,  705,  704,  799,  701,  700,  693,  692,
-      689,  688,  687,  686,  810,  813,  813,  813,  813,  813,
-      813,  813,  813,  813,  813,  813,  813,  814,  814,  814,
-      814,  814,  814,  814,  814,  814,  814,  814,  814,  815,
-      815,  815,  815,  815,  815,  815,  815,  815,  815,  815,
-      815,  816,  816,  816,  816,  816,  816,  816,  816,  816,
-      816,  816,  816,  817,  817,  817,  817,  817,  817,  817,
-      817,  817,  817,  817,  817,  819,  819,  819,  819,  683,
-
-      819,  819,  820,  820,  820,  682,  820,  821,  674,  821,
-      821,  821,  821,  821,  821,  821,  821,  821,  821,  822,
-      822,  822,  822,  822,  822,  822,  822,  822,  822,  822,
-      822,  823,  823,  823,  823,  823,  823,  823,  823,  823,
-      823,  823,  823,  824,  824,  824,  673,  824,  825,  825,
-      666,  825,  825,  825,  826,  826,  826,  665,  826,  827,
-      827,  664,  827,  827,  827,  828,  828,  828,  828,  828,
-      828,  828,  828,  828,  828,  828,  828,  829,  829,  829,
-      829,  829,  829,  829,  829,  829,  829,  829,  829,  830,
-      663,  830,  830,  830,  830,  830,  830,  830,  830,  830,
-
-      830,  831,  650,  649,  831,  831,  831,  831,  831,  831,
-      831,  831,  831,  832,  832,  832,  832,  832,  832,  832,
-      832,  832,  832,  832,  832,  833,  638,  637,  833,  833,
-      833,  833,  833,  833,  833,  833,  833,  834,  834,  834,
-      632,  834,  835,  835,  835,  835,  631,  835,  835,  836,
-      630,  836,  629,  836,  840,  840,  840,  628,  840,  627,
-      620,  840,  842,  842,  842,  619,  842,  611,  610,  842,
-      844,  844,  844,  609,  844,  607,  606,  844,  845,  845,
-      845,  605,  845,  586,  585,  845,  846,  846,  846,  584,
-      846,  583,  582,  846,  581,  574,  573,  572,  571,  570,
-
-      569,  568,  567,  566,  565,  564,  563,  556,  555,  554,
-      553,  552,  551,  541,  540,  539,  538,  536,  535,  534,
-      514,  513,  512,  511,  510,  509,  508,  500,  499,  498,
-      497,  496,  495,  494,  493,  492,  491,  490,  489,  488,
-      481,  480,  479,  478,  477,  476,  465,  464,  463,  462,
-      461,  460,  459,  458,  457,  443,  435,  433,  432,  431,
-      430,  429,  428,  427,  420,  418,  417,  416,  415,  414,
-      413,  412,  411,  410,  409,  408,  407,  406,  398,  397,
-      396,  395,  394,  393,  383,  382,  380,  379,  378,  376,
-      375,  373,  367,  359,  347,  346,  345,  344,  341,  333,
-
-      332,  331,  330,  327,  326,  325,  324,  321,  317,  312,
-      311,  310,  307,  296,  291,  289,  288,  287,  286,  285,
-      279,  260,  255,  248,  247,  246,  245,  244,  243,  240,
-      239,  238,  237,  230,  228,  226,  225,  224,  216,  214,
-      212,  211,  210,  208,  206,  205,  204,  201,  195,  194,
-      193,  192,  191,  188,  183,  182,  180,  179,  178,  168,
-      166,  155,  154,  153,  152,  151,  149,  130,  115,  114,
-      113,  112,  104,  103,  102,  101,  100,   99,   89,   88,
-       87,   86,   85,   84,   81,   80,   79,   78,   77,   76,
-       74,   73,   72,   70,   58,   53,   50,   49,   48,   47,
-
-       46,   45,   34,   32,   31,   30,   27,   23,  812,  812,
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-      812,  812,  812,  812,  812,  812,  812,  812,  812,  812,
-      812,  812,  812,  812,  812,  812,  812
-    } ;
-
-/* Table of booleans, true if rule could match eol. */
-static yyconst flex_int32_t yy_rule_can_match_eol[48] =
-    {   0,
-0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 
-    0, 0, 1, 1, 1, 1, 0, 0,     };
-
-/* The intent behind this definition is that it'll catch
- * any uses of REJECT which flex missed.
- */
-#define REJECT reject_used_but_not_detected
-#define yymore() yymore_used_but_not_detected
-#define YY_MORE_ADJ 0
-#define YY_RESTORE_YY_MORE_OFFSET
-#line 1 "bitbakescanner.l"
-/* bbf.flex 
-
-   written by Marc Singer
-   6 January 2005
-
-   This program is free software; you can redistribute it and/or
-   modify it under the terms of the GNU General Public License as
-   published by the Free Software Foundation; either version 2 of the
-   License, or (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful, but
-   WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
-   USA.
-
-   DESCRIPTION
-   -----------
-
-   flex lexer specification for a BitBake input file parser.
-
-   Unfortunately, flex doesn't welcome comments within the rule sets.
-   I say unfortunately because this lexer is unreasonably complex and
-   comments would make the code much easier to comprehend.
-
-   The BitBake grammar is not regular.  In order to interpret all
-   of the available input files, the lexer maintains much state as it
-   parses.  There are places where this lexer will emit tokens that
-   are invalid.  The parser will tend to catch these. 
-
-   The lexer requires C++ at the moment.  The only reason for this has
-   to do with a very small amount of managed state.  Producing a C
-   lexer should be a reasonably easy task as long as the %reentrant
-   option is used.
-
-
-   NOTES
-   -----
-
-   o RVALUES.  There are three kinds of RVALUES.  There are unquoted
-     values, double quote enclosed strings, and single quote 
-     strings.  Quoted strings may contain unescaped quotes (of either
-     type), *and* any type may span more than one line by using a
-     continuation '\' at the end of the line.  This requires us to
-     recognize all types of values with a single expression.
-     Moreover, the only reason to quote a value is to include
-     trailing or leading whitespace.  Whitespace within a value is
-     preserved, ugh.
-
-   o CLASSES.  C_ patterns define classes.  Classes ought not include
-     a repitition operator, instead letting the reference to the class
-     define the repitition count.
-
-     C_SS - symbol start
-     C_SB - symbol body
-     C_SP - whitespace
-
-*/
-#line 71 "bitbakescanner.l"
-
-#include "token.h"
-#include "lexer.h"
-#include "bitbakeparser.h"
-#include <ctype.h>
-
-extern void *bbparseAlloc(void *(*mallocProc)(size_t));
-extern void bbparseFree(void *p, void (*freeProc)(void*));
-extern void *bbparseAlloc(void *(*mallocProc)(size_t));
-extern void *bbparse(void*, int, token_t, lex_t*);
-extern void bbparseTrace(FILE *TraceFILE, char *zTracePrompt);
-
-//static const char* rgbInput;
-//static size_t cbInput;
-
-extern "C" {
-
-int lineError;
-int errorParse;
-
-enum {
-  errorNone = 0,
-  errorUnexpectedInput,
-  errorUnsupportedFeature,
-};
-
-}
-
-#define YY_EXTRA_TYPE lex_t*
-
-       /* Read from buffer */
-#define YY_INPUT(buf,result,max_size) \
- { yyextra->input(buf, &result, max_size); }
-
-//#define YY_DECL static size_t yylex ()
-
-#define ERROR(e) \
-  do { lineError = yylineno; errorParse = e; yyterminate (); } while (0)
-
-static const char* fixup_escapes (const char* sz);
-
-
-
-
-
-
-
-
-
-
-
-#line 1367 "<stdout>"
-
-#define INITIAL 0
-#define S_DEF 1
-#define S_DEF_ARGS 2
-#define S_DEF_BODY 3
-#define S_FUNC 4
-#define S_INCLUDE 5
-#define S_INHERIT 6
-#define S_REQUIRE 7
-#define S_PROC 8
-#define S_RVALUE 9
-#define S_TASK 10
-
-#ifndef YY_NO_UNISTD_H
-/* Special case for "unistd.h", since it is non-ANSI. We include it way
- * down here because we want the user's section 1 to have been scanned first.
- * The user has a chance to override it with an option.
- */
-#include <unistd.h>
-#endif
-
-#ifndef YY_EXTRA_TYPE
-#define YY_EXTRA_TYPE void *
-#endif
-
-/* Holds the entire state of the reentrant scanner. */
-struct yyguts_t
-    {
-
-    /* User-defined. Not touched by flex. */
-    YY_EXTRA_TYPE yyextra_r;
-
-    /* The rest are the same as the globals declared in the non-reentrant scanner. */
-    FILE *yyin_r, *yyout_r;
-    size_t yy_buffer_stack_top; /**< index of top of stack. */
-    size_t yy_buffer_stack_max; /**< capacity of stack. */
-    YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */
-    char yy_hold_char;
-    int yy_n_chars;
-    int yyleng_r;
-    char *yy_c_buf_p;
-    int yy_init;
-    int yy_start;
-    int yy_did_buffer_switch_on_eof;
-    int yy_start_stack_ptr;
-    int yy_start_stack_depth;
-    int *yy_start_stack;
-    yy_state_type yy_last_accepting_state;
-    char* yy_last_accepting_cpos;
-
-    int yylineno_r;
-    int yy_flex_debug_r;
-
-    char *yytext_r;
-    int yy_more_flag;
-    int yy_more_len;
-
-    }; /* end struct yyguts_t */
-
-static int yy_init_globals (yyscan_t yyscanner );
-
-/* Accessor methods to globals.
-   These are made visible to non-reentrant scanners for convenience. */
-
-int yylex_destroy (yyscan_t yyscanner );
-
-int yyget_debug (yyscan_t yyscanner );
-
-void yyset_debug (int debug_flag ,yyscan_t yyscanner );
-
-YY_EXTRA_TYPE yyget_extra (yyscan_t yyscanner );
-
-void yyset_extra (YY_EXTRA_TYPE user_defined ,yyscan_t yyscanner );
-
-FILE *yyget_in (yyscan_t yyscanner );
-
-void yyset_in  (FILE * in_str ,yyscan_t yyscanner );
-
-FILE *yyget_out (yyscan_t yyscanner );
-
-void yyset_out  (FILE * out_str ,yyscan_t yyscanner );
-
-int yyget_leng (yyscan_t yyscanner );
-
-char *yyget_text (yyscan_t yyscanner );
-
-int yyget_lineno (yyscan_t yyscanner );
-
-void yyset_lineno (int line_number ,yyscan_t yyscanner );
-
-/* Macros after this point can all be overridden by user definitions in
- * section 1.
- */
-
-#ifndef YY_SKIP_YYWRAP
-#ifdef __cplusplus
-extern "C" int yywrap (yyscan_t yyscanner );
-#else
-extern int yywrap (yyscan_t yyscanner );
-#endif
-#endif
-
-    static void yyunput (int c,char *buf_ptr  ,yyscan_t yyscanner);
-    
-#ifndef yytext_ptr
-static void yy_flex_strncpy (char *,yyconst char *,int ,yyscan_t yyscanner);
-#endif
-
-#ifdef YY_NEED_STRLEN
-static int yy_flex_strlen (yyconst char * ,yyscan_t yyscanner);
-#endif
-
-#ifndef YY_NO_INPUT
-
-#ifdef __cplusplus
-static int yyinput (yyscan_t yyscanner );
-#else
-static int input (yyscan_t yyscanner );
-#endif
-
-#endif
-
-    static void yy_push_state (int new_state ,yyscan_t yyscanner);
-    
-    static void yy_pop_state (yyscan_t yyscanner );
-    
-    static int yy_top_state (yyscan_t yyscanner );
-    
-/* Amount of stuff to slurp up with each read. */
-#ifndef YY_READ_BUF_SIZE
-#define YY_READ_BUF_SIZE 8192
-#endif
-
-/* Copy whatever the last rule matched to the standard output. */
-#ifndef ECHO
-/* This used to be an fputs(), but since the string might contain NUL's,
- * we now use fwrite().
- */
-#define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
-#endif
-
-/* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
- * is returned in "result".
- */
-#ifndef YY_INPUT
-#define YY_INPUT(buf,result,max_size) \
-       if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
-               { \
-               int c = '*'; \
-               size_t n; \
-               for ( n = 0; n < max_size && \
-                            (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
-                       buf[n] = (char) c; \
-               if ( c == '\n' ) \
-                       buf[n++] = (char) c; \
-               if ( c == EOF && ferror( yyin ) ) \
-                       YY_FATAL_ERROR( "input in flex scanner failed" ); \
-               result = n; \
-               } \
-       else \
-               { \
-               errno=0; \
-               while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
-                       { \
-                       if( errno != EINTR) \
-                               { \
-                               YY_FATAL_ERROR( "input in flex scanner failed" ); \
-                               break; \
-                               } \
-                       errno=0; \
-                       clearerr(yyin); \
-                       } \
-               }\
-\
-
-#endif
-
-/* No semi-colon after return; correct usage is to write "yyterminate();" -
- * we don't want an extra ';' after the "return" because that will cause
- * some compilers to complain about unreachable statements.
- */
-#ifndef yyterminate
-#define yyterminate() return YY_NULL
-#endif
-
-/* Number of entries by which start-condition stack grows. */
-#ifndef YY_START_STACK_INCR
-#define YY_START_STACK_INCR 25
-#endif
-
-/* Report a fatal error. */
-#ifndef YY_FATAL_ERROR
-#define YY_FATAL_ERROR(msg) yy_fatal_error( msg , yyscanner)
-#endif
-
-/* end tables serialization structures and prototypes */
-
-/* Default declaration of generated scanner - a define so the user can
- * easily add parameters.
- */
-#ifndef YY_DECL
-#define YY_DECL_IS_OURS 1
-
-extern int yylex (yyscan_t yyscanner);
-
-#define YY_DECL int yylex (yyscan_t yyscanner)
-#endif /* !YY_DECL */
-
-/* Code executed at the beginning of each rule, after yytext and yyleng
- * have been set up.
- */
-#ifndef YY_USER_ACTION
-#define YY_USER_ACTION
-#endif
-
-/* Code executed at the end of each rule. */
-#ifndef YY_BREAK
-#define YY_BREAK break;
-#endif
-
-#define YY_RULE_SETUP \
-       YY_USER_ACTION
-
-/** The main scanner function which does all the work.
- */
-YY_DECL
-{
-       register yy_state_type yy_current_state;
-       register char *yy_cp, *yy_bp;
-       register int yy_act;
-    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-
-#line 164 "bitbakescanner.l"
-
-
-#line 1603 "<stdout>"
-
-       if ( !yyg->yy_init )
-               {
-               yyg->yy_init = 1;
-
-#ifdef YY_USER_INIT
-               YY_USER_INIT;
-#endif
-
-               if ( ! yyg->yy_start )
-                       yyg->yy_start = 1;      /* first start state */
-
-               if ( ! yyin )
-                       yyin = stdin;
-
-               if ( ! yyout )
-                       yyout = stdout;
-
-               if ( ! YY_CURRENT_BUFFER ) {
-                       yyensure_buffer_stack (yyscanner);
-                       YY_CURRENT_BUFFER_LVALUE =
-                               yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner);
-               }
-
-               yy_load_buffer_state(yyscanner );
-               }
-
-       while ( 1 )             /* loops until end-of-file is reached */
-               {
-               yy_cp = yyg->yy_c_buf_p;
-
-               /* Support of yytext. */
-               *yy_cp = yyg->yy_hold_char;
-
-               /* yy_bp points to the position in yy_ch_buf of the start of
-                * the current run.
-                */
-               yy_bp = yy_cp;
-
-               yy_current_state = yyg->yy_start;
-yy_match:
-               do
-                       {
-                       register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
-                       if ( yy_accept[yy_current_state] )
-                               {
-                               yyg->yy_last_accepting_state = yy_current_state;
-                               yyg->yy_last_accepting_cpos = yy_cp;
-                               }
-                       while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
-                               {
-                               yy_current_state = (int) yy_def[yy_current_state];
-                               if ( yy_current_state >= 813 )
-                                       yy_c = yy_meta[(unsigned int) yy_c];
-                               }
-                       yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-                       ++yy_cp;
-                       }
-               while ( yy_current_state != 812 );
-               yy_cp = yyg->yy_last_accepting_cpos;
-               yy_current_state = yyg->yy_last_accepting_state;
-
-yy_find_action:
-               yy_act = yy_accept[yy_current_state];
-
-               YY_DO_BEFORE_ACTION;
-
-               if ( yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act] )
-                       {
-                       int yyl;
-                       for ( yyl = 0; yyl < yyleng; ++yyl )
-                               if ( yytext[yyl] == '\n' )
-                                          
-    do{ yylineno++;
-        yycolumn=0;
-    }while(0)
-;
-                       }
-
-do_action:     /* This label is used only to access EOF actions. */
-
-               switch ( yy_act )
-       { /* beginning of action switch */
-                       case 0: /* must back up */
-                       /* undo the effects of YY_DO_BEFORE_ACTION */
-                       *yy_cp = yyg->yy_hold_char;
-                       yy_cp = yyg->yy_last_accepting_cpos;
-                       yy_current_state = yyg->yy_last_accepting_state;
-                       goto yy_find_action;
-
-case 1:
-YY_RULE_SETUP
-#line 166 "bitbakescanner.l"
-{ BEGIN S_RVALUE;
-                                  yyextra->accept (T_OP_APPEND); }
-       YY_BREAK
-case 2:
-YY_RULE_SETUP
-#line 168 "bitbakescanner.l"
-{ BEGIN S_RVALUE;
-                                  yyextra->accept (T_OP_PREPEND); }
-       YY_BREAK
-case 3:
-YY_RULE_SETUP
-#line 170 "bitbakescanner.l"
-{ BEGIN S_RVALUE;
-                                  yyextra->accept (T_OP_IMMEDIATE); }
-       YY_BREAK
-case 4:
-YY_RULE_SETUP
-#line 172 "bitbakescanner.l"
-{ BEGIN S_RVALUE;
-                                  yyextra->accept (T_OP_ASSIGN); }
-       YY_BREAK
-case 5:
-YY_RULE_SETUP
-#line 174 "bitbakescanner.l"
-{ BEGIN S_RVALUE;
-                                  yyextra->accept (T_OP_PREDOT); }
-       YY_BREAK
-case 6:
-YY_RULE_SETUP
-#line 176 "bitbakescanner.l"
-{ BEGIN S_RVALUE;
-                                  yyextra->accept (T_OP_POSTDOT); }
-       YY_BREAK
-case 7:
-YY_RULE_SETUP
-#line 178 "bitbakescanner.l"
-{ BEGIN S_RVALUE;
-                                  yyextra->accept (T_OP_COND); }
-       YY_BREAK
-case 8:
-/* rule 8 can match eol */
-YY_RULE_SETUP
-#line 181 "bitbakescanner.l"
-{  }
-       YY_BREAK
-case 9:
-/* rule 9 can match eol */
-YY_RULE_SETUP
-#line 182 "bitbakescanner.l"
-{ BEGIN INITIAL;
-                                  size_t cb = yyleng;
-                                  while (cb && isspace (yytext[cb - 1]))
-                                      --cb;
-                                  yytext[cb - 1] = 0;
-                                  yyextra->accept (T_STRING, yytext + 1); }
-       YY_BREAK
-case 10:
-/* rule 10 can match eol */
-YY_RULE_SETUP
-#line 188 "bitbakescanner.l"
-{ BEGIN INITIAL;
-                                  size_t cb = yyleng;
-                                  while (cb && isspace (yytext[cb - 1]))
-                                      --cb;
-                                  yytext[cb - 1] = 0;
-                                  yyextra->accept (T_STRING, yytext + 1); }
-       YY_BREAK
-case 11:
-/* rule 11 can match eol */
-YY_RULE_SETUP
-#line 195 "bitbakescanner.l"
-{ ERROR (errorUnexpectedInput);  }
-       YY_BREAK
-case 12:
-/* rule 12 can match eol */
-YY_RULE_SETUP
-#line 196 "bitbakescanner.l"
-{ BEGIN INITIAL;
-                                  yyextra->accept (T_STRING, NULL); }
-       YY_BREAK
-case 13:
-YY_RULE_SETUP
-#line 199 "bitbakescanner.l"
-{ BEGIN S_INCLUDE;
-                                  yyextra->accept (T_INCLUDE); }
-       YY_BREAK
-case 14:
-YY_RULE_SETUP
-#line 201 "bitbakescanner.l"
-{ BEGIN S_REQUIRE;
-                                  yyextra->accept (T_REQUIRE); }
-       YY_BREAK
-case 15:
-YY_RULE_SETUP
-#line 203 "bitbakescanner.l"
-{ BEGIN S_INHERIT;
-                                  yyextra->accept (T_INHERIT); }
-       YY_BREAK
-case 16:
-YY_RULE_SETUP
-#line 205 "bitbakescanner.l"
-{ BEGIN S_TASK;
-                                  yyextra->accept (T_ADDTASK); }
-       YY_BREAK
-case 17:
-YY_RULE_SETUP
-#line 207 "bitbakescanner.l"
-{ yyextra->accept (T_ADDHANDLER); }
-       YY_BREAK
-case 18:
-YY_RULE_SETUP
-#line 208 "bitbakescanner.l"
-{ BEGIN S_FUNC;
-                                  yyextra->accept (T_EXPORT_FUNC); }
-       YY_BREAK
-case 19:
-YY_RULE_SETUP
-#line 210 "bitbakescanner.l"
-{ yyextra->accept (T_BEFORE); }
-       YY_BREAK
-case 20:
-YY_RULE_SETUP
-#line 211 "bitbakescanner.l"
-{ yyextra->accept (T_AFTER); }
-       YY_BREAK
-case 21:
-YY_RULE_SETUP
-#line 212 "bitbakescanner.l"
-{ yyextra->accept (T_EXPORT); }
-       YY_BREAK
-case 22:
-YY_RULE_SETUP
-#line 214 "bitbakescanner.l"
-{ yyextra->accept (T_FAKEROOT); }
-       YY_BREAK
-case 23:
-YY_RULE_SETUP
-#line 215 "bitbakescanner.l"
-{ yyextra->accept (T_PYTHON); }
-       YY_BREAK
-case 24:
-/* rule 24 can match eol */
-YY_RULE_SETUP
-#line 216 "bitbakescanner.l"
-{ BEGIN S_PROC;
-                                  yyextra->accept (T_PROC_OPEN); }
-       YY_BREAK
-case 25:
-/* rule 25 can match eol */
-YY_RULE_SETUP
-#line 218 "bitbakescanner.l"
-{ BEGIN INITIAL;
-                                  yyextra->accept (T_PROC_CLOSE); }
-       YY_BREAK
-case 26:
-/* rule 26 can match eol */
-YY_RULE_SETUP
-#line 220 "bitbakescanner.l"
-{ yyextra->accept (T_PROC_BODY, yytext); }
-       YY_BREAK
-case 27:
-YY_RULE_SETUP
-#line 222 "bitbakescanner.l"
-{ BEGIN S_DEF; }
-       YY_BREAK
-case 28:
-YY_RULE_SETUP
-#line 223 "bitbakescanner.l"
-{ BEGIN S_DEF_ARGS;
-                                  yyextra->accept (T_SYMBOL, yytext); }
-       YY_BREAK
-case 29:
-YY_RULE_SETUP
-#line 225 "bitbakescanner.l"
-{ yyextra->accept (T_DEF_ARGS, yytext); }
-       YY_BREAK
-case 30:
-/* rule 30 can match eol */
-YY_RULE_SETUP
-#line 226 "bitbakescanner.l"
-{ BEGIN S_DEF_BODY; }
-       YY_BREAK
-case 31:
-/* rule 31 can match eol */
-YY_RULE_SETUP
-#line 227 "bitbakescanner.l"
-{ yyextra->accept (T_DEF_BODY, yytext); }
-       YY_BREAK
-case 32:
-/* rule 32 can match eol */
-YY_RULE_SETUP
-#line 228 "bitbakescanner.l"
-{ yyextra->accept (T_DEF_BODY, yytext); }
-       YY_BREAK
-case 33:
-YY_RULE_SETUP
-#line 229 "bitbakescanner.l"
-{ BEGIN INITIAL; unput (yytext[0]); }
-       YY_BREAK
-case 34:
-/* rule 34 can match eol */
-YY_RULE_SETUP
-#line 231 "bitbakescanner.l"
-{ }
-       YY_BREAK
-case 35:
-YY_RULE_SETUP
-#line 233 "bitbakescanner.l"
-{ yyextra->accept (T_SYMBOL, yytext); }
-       YY_BREAK
-case 36:
-YY_RULE_SETUP
-#line 234 "bitbakescanner.l"
-{ yyextra->accept (T_VARIABLE, yytext); }
-       YY_BREAK
-case 37:
-YY_RULE_SETUP
-#line 236 "bitbakescanner.l"
-{ yyextra->accept (T_TSYMBOL, yytext); }
-       YY_BREAK
-case 38:
-YY_RULE_SETUP
-#line 237 "bitbakescanner.l"
-{ yyextra->accept (T_FSYMBOL, yytext); }
-       YY_BREAK
-case 39:
-YY_RULE_SETUP
-#line 238 "bitbakescanner.l"
-{ yyextra->accept (T_ISYMBOL, yytext); }
-       YY_BREAK
-case 40:
-YY_RULE_SETUP
-#line 239 "bitbakescanner.l"
-{ BEGIN INITIAL;
-                                  yyextra->accept (T_ISYMBOL, yytext); }
-       YY_BREAK
-case 41:
-YY_RULE_SETUP
-#line 241 "bitbakescanner.l"
-{ BEGIN INITIAL;
-                                  yyextra->accept (T_ISYMBOL, yytext); }
-       YY_BREAK
-case 42:
-/* rule 42 can match eol */
-YY_RULE_SETUP
-#line 243 "bitbakescanner.l"
-{ BEGIN INITIAL; }
-       YY_BREAK
-case 43:
-/* rule 43 can match eol */
-YY_RULE_SETUP
-#line 244 "bitbakescanner.l"
-{ BEGIN INITIAL; }
-       YY_BREAK
-case 44:
-/* rule 44 can match eol */
-YY_RULE_SETUP
-#line 245 "bitbakescanner.l"
-{ BEGIN INITIAL; }
-       YY_BREAK
-case 45:
-/* rule 45 can match eol */
-YY_RULE_SETUP
-#line 247 "bitbakescanner.l"
-/* Insignificant whitespace */
-       YY_BREAK
-case 46:
-YY_RULE_SETUP
-#line 249 "bitbakescanner.l"
-{ ERROR (errorUnexpectedInput); }
-       YY_BREAK
-/* Check for premature termination */
-case YY_STATE_EOF(INITIAL):
-case YY_STATE_EOF(S_DEF):
-case YY_STATE_EOF(S_DEF_ARGS):
-case YY_STATE_EOF(S_DEF_BODY):
-case YY_STATE_EOF(S_FUNC):
-case YY_STATE_EOF(S_INCLUDE):
-case YY_STATE_EOF(S_INHERIT):
-case YY_STATE_EOF(S_REQUIRE):
-case YY_STATE_EOF(S_PROC):
-case YY_STATE_EOF(S_RVALUE):
-case YY_STATE_EOF(S_TASK):
-#line 252 "bitbakescanner.l"
-{ return T_EOF; }
-       YY_BREAK
-case 47:
-YY_RULE_SETUP
-#line 254 "bitbakescanner.l"
-ECHO;
-       YY_BREAK
-#line 1988 "<stdout>"
-
-       case YY_END_OF_BUFFER:
-               {
-               /* Amount of text matched not including the EOB char. */
-               int yy_amount_of_matched_text = (int) (yy_cp - yyg->yytext_ptr) - 1;
-
-               /* Undo the effects of YY_DO_BEFORE_ACTION. */
-               *yy_cp = yyg->yy_hold_char;
-               YY_RESTORE_YY_MORE_OFFSET
-
-               if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
-                       {
-                       /* We're scanning a new file or input source.  It's
-                        * possible that this happened because the user
-                        * just pointed yyin at a new source and called
-                        * yylex().  If so, then we have to assure
-                        * consistency between YY_CURRENT_BUFFER and our
-                        * globals.  Here is the right place to do so, because
-                        * this is the first action (other than possibly a
-                        * back-up) that will match for the new input source.
-                        */
-                       yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
-                       YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
-                       YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
-                       }
-
-               /* Note that here we test for yy_c_buf_p "<=" to the position
-                * of the first EOB in the buffer, since yy_c_buf_p will
-                * already have been incremented past the NUL character
-                * (since all states make transitions on EOB to the
-                * end-of-buffer state).  Contrast this with the test
-                * in input().
-                */
-               if ( yyg->yy_c_buf_p <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
-                       { /* This was really a NUL. */
-                       yy_state_type yy_next_state;
-
-                       yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text;
-
-                       yy_current_state = yy_get_previous_state( yyscanner );
-
-                       /* Okay, we're now positioned to make the NUL
-                        * transition.  We couldn't have
-                        * yy_get_previous_state() go ahead and do it
-                        * for us because it doesn't know how to deal
-                        * with the possibility of jamming (and we don't
-                        * want to build jamming into it because then it
-                        * will run more slowly).
-                        */
-
-                       yy_next_state = yy_try_NUL_trans( yy_current_state , yyscanner);
-
-                       yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
-
-                       if ( yy_next_state )
-                               {
-                               /* Consume the NUL. */
-                               yy_cp = ++yyg->yy_c_buf_p;
-                               yy_current_state = yy_next_state;
-                               goto yy_match;
-                               }
-
-                       else
-                               {
-                               yy_cp = yyg->yy_last_accepting_cpos;
-                               yy_current_state = yyg->yy_last_accepting_state;
-                               goto yy_find_action;
-                               }
-                       }
-
-               else switch ( yy_get_next_buffer( yyscanner ) )
-                       {
-                       case EOB_ACT_END_OF_FILE:
-                               {
-                               yyg->yy_did_buffer_switch_on_eof = 0;
-
-                               if ( yywrap(yyscanner ) )
-                                       {
-                                       /* Note: because we've taken care in
-                                        * yy_get_next_buffer() to have set up
-                                        * yytext, we can now set up
-                                        * yy_c_buf_p so that if some total
-                                        * hoser (like flex itself) wants to
-                                        * call the scanner after we return the
-                                        * YY_NULL, it'll still work - another
-                                        * YY_NULL will get returned.
-                                        */
-                                       yyg->yy_c_buf_p = yyg->yytext_ptr + YY_MORE_ADJ;
-
-                                       yy_act = YY_STATE_EOF(YY_START);
-                                       goto do_action;
-                                       }
-
-                               else
-                                       {
-                                       if ( ! yyg->yy_did_buffer_switch_on_eof )
-                                               YY_NEW_FILE;
-                                       }
-                               break;
-                               }
-
-                       case EOB_ACT_CONTINUE_SCAN:
-                               yyg->yy_c_buf_p =
-                                       yyg->yytext_ptr + yy_amount_of_matched_text;
-
-                               yy_current_state = yy_get_previous_state( yyscanner );
-
-                               yy_cp = yyg->yy_c_buf_p;
-                               yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
-                               goto yy_match;
-
-                       case EOB_ACT_LAST_MATCH:
-                               yyg->yy_c_buf_p =
-                               &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars];
-
-                               yy_current_state = yy_get_previous_state( yyscanner );
-
-                               yy_cp = yyg->yy_c_buf_p;
-                               yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
-                               goto yy_find_action;
-                       }
-               break;
-               }
-
-       default:
-               YY_FATAL_ERROR(
-                       "fatal flex scanner internal error--no action found" );
-       } /* end of action switch */
-               } /* end of scanning one token */
-} /* end of yylex */
-
-/* yy_get_next_buffer - try to read in a new buffer
- *
- * Returns a code representing an action:
- *     EOB_ACT_LAST_MATCH -
- *     EOB_ACT_CONTINUE_SCAN - continue scanning from current position
- *     EOB_ACT_END_OF_FILE - end of file
- */
-static int yy_get_next_buffer (yyscan_t yyscanner)
-{
-    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-       register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
-       register char *source = yyg->yytext_ptr;
-       register int number_to_move, i;
-       int ret_val;
-
-       if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] )
-               YY_FATAL_ERROR(
-               "fatal flex scanner internal error--end of buffer missed" );
-
-       if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
-               { /* Don't try to fill the buffer, so this is an EOF. */
-               if ( yyg->yy_c_buf_p - yyg->yytext_ptr - YY_MORE_ADJ == 1 )
-                       {
-                       /* We matched a single character, the EOB, so
-                        * treat this as a final EOF.
-                        */
-                       return EOB_ACT_END_OF_FILE;
-                       }
-
-               else
-                       {
-                       /* We matched some text prior to the EOB, first
-                        * process it.
-                        */
-                       return EOB_ACT_LAST_MATCH;
-                       }
-               }
-
-       /* Try to read more data. */
-
-       /* First move last chars to start of buffer. */
-       number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr) - 1;
-
-       for ( i = 0; i < number_to_move; ++i )
-               *(dest++) = *(source++);
-
-       if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
-               /* don't do the read, it's not guaranteed to return an EOF,
-                * just force an EOF
-                */
-               YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0;
-
-       else
-               {
-                       int num_to_read =
-                       YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
-
-               while ( num_to_read <= 0 )
-                       { /* Not enough room in the buffer - grow it. */
-
-                       /* just a shorter name for the current buffer */
-                       YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
-
-                       int yy_c_buf_p_offset =
-                               (int) (yyg->yy_c_buf_p - b->yy_ch_buf);
-
-                       if ( b->yy_is_our_buffer )
-                               {
-                               int new_size = b->yy_buf_size * 2;
-
-                               if ( new_size <= 0 )
-                                       b->yy_buf_size += b->yy_buf_size / 8;
-                               else
-                                       b->yy_buf_size *= 2;
-
-                               b->yy_ch_buf = (char *)
-                                       /* Include room in for 2 EOB chars. */
-                                       yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ,yyscanner );
-                               }
-                       else
-                               /* Can't grow it, we don't own it. */
-                               b->yy_ch_buf = 0;
-
-                       if ( ! b->yy_ch_buf )
-                               YY_FATAL_ERROR(
-                               "fatal error - scanner input buffer overflow" );
-
-                       yyg->yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
-
-                       num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
-                                               number_to_move - 1;
-
-                       }
-
-               if ( num_to_read > YY_READ_BUF_SIZE )
-                       num_to_read = YY_READ_BUF_SIZE;
-
-               /* Read in more data. */
-               YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
-                       yyg->yy_n_chars, num_to_read );
-
-               YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
-               }
-
-       if ( yyg->yy_n_chars == 0 )
-               {
-               if ( number_to_move == YY_MORE_ADJ )
-                       {
-                       ret_val = EOB_ACT_END_OF_FILE;
-                       yyrestart(yyin  ,yyscanner);
-                       }
-
-               else
-                       {
-                       ret_val = EOB_ACT_LAST_MATCH;
-                       YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
-                               YY_BUFFER_EOF_PENDING;
-                       }
-               }
-
-       else
-               ret_val = EOB_ACT_CONTINUE_SCAN;
-
-       yyg->yy_n_chars += number_to_move;
-       YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR;
-       YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
-
-       yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
-
-       return ret_val;
-}
-
-/* yy_get_previous_state - get the state just before the EOB char was reached */
-
-    static yy_state_type yy_get_previous_state (yyscan_t yyscanner)
-{
-       register yy_state_type yy_current_state;
-       register char *yy_cp;
-    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-
-       yy_current_state = yyg->yy_start;
-
-       for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp )
-               {
-               register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
-               if ( yy_accept[yy_current_state] )
-                       {
-                       yyg->yy_last_accepting_state = yy_current_state;
-                       yyg->yy_last_accepting_cpos = yy_cp;
-                       }
-               while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
-                       {
-                       yy_current_state = (int) yy_def[yy_current_state];
-                       if ( yy_current_state >= 813 )
-                               yy_c = yy_meta[(unsigned int) yy_c];
-                       }
-               yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-               }
-
-       return yy_current_state;
-}
-
-/* yy_try_NUL_trans - try to make a transition on the NUL character
- *
- * synopsis
- *     next_state = yy_try_NUL_trans( current_state );
- */
-    static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state , yyscan_t yyscanner)
-{
-       register int yy_is_jam;
-    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* This var may be unused depending upon options. */
-       register char *yy_cp = yyg->yy_c_buf_p;
-
-       register YY_CHAR yy_c = 1;
-       if ( yy_accept[yy_current_state] )
-               {
-               yyg->yy_last_accepting_state = yy_current_state;
-               yyg->yy_last_accepting_cpos = yy_cp;
-               }
-       while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
-               {
-               yy_current_state = (int) yy_def[yy_current_state];
-               if ( yy_current_state >= 813 )
-                       yy_c = yy_meta[(unsigned int) yy_c];
-               }
-       yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-       yy_is_jam = (yy_current_state == 812);
-
-       return yy_is_jam ? 0 : yy_current_state;
-}
-
-    static void yyunput (int c, register char * yy_bp , yyscan_t yyscanner)
-{
-       register char *yy_cp;
-    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-
-    yy_cp = yyg->yy_c_buf_p;
-
-       /* undo effects of setting up yytext */
-       *yy_cp = yyg->yy_hold_char;
-
-       if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
-               { /* need to shift things up to make room */
-               /* +2 for EOB chars. */
-               register int number_to_move = yyg->yy_n_chars + 2;
-               register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
-                                       YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
-               register char *source =
-                               &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
-
-               while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
-                       *--dest = *--source;
-
-               yy_cp += (int) (dest - source);
-               yy_bp += (int) (dest - source);
-               YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
-                       yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
-
-               if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
-                       YY_FATAL_ERROR( "flex scanner push-back overflow" );
-               }
-
-       *--yy_cp = (char) c;
-
-    if ( c == '\n' ){
-        --yylineno;
-    }
-
-       yyg->yytext_ptr = yy_bp;
-       yyg->yy_hold_char = *yy_cp;
-       yyg->yy_c_buf_p = yy_cp;
-}
-
-#ifndef YY_NO_INPUT
-#ifdef __cplusplus
-    static int yyinput (yyscan_t yyscanner)
-#else
-    static int input  (yyscan_t yyscanner)
-#endif
-
-{
-       int c;
-    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-
-       *yyg->yy_c_buf_p = yyg->yy_hold_char;
-
-       if ( *yyg->yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
-               {
-               /* yy_c_buf_p now points to the character we want to return.
-                * If this occurs *before* the EOB characters, then it's a
-                * valid NUL; if not, then we've hit the end of the buffer.
-                */
-               if ( yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
-                       /* This was really a NUL. */
-                       *yyg->yy_c_buf_p = '\0';
-
-               else
-                       { /* need more input */
-                       int offset = yyg->yy_c_buf_p - yyg->yytext_ptr;
-                       ++yyg->yy_c_buf_p;
-
-                       switch ( yy_get_next_buffer( yyscanner ) )
-                               {
-                               case EOB_ACT_LAST_MATCH:
-                                       /* This happens because yy_g_n_b()
-                                        * sees that we've accumulated a
-                                        * token and flags that we need to
-                                        * try matching the token before
-                                        * proceeding.  But for input(),
-                                        * there's no matching to consider.
-                                        * So convert the EOB_ACT_LAST_MATCH
-                                        * to EOB_ACT_END_OF_FILE.
-                                        */
-
-                                       /* Reset buffer status. */
-                                       yyrestart(yyin ,yyscanner);
-
-                                       /*FALLTHROUGH*/
-
-                               case EOB_ACT_END_OF_FILE:
-                                       {
-                                       if ( yywrap(yyscanner ) )
-                                               return EOF;
-
-                                       if ( ! yyg->yy_did_buffer_switch_on_eof )
-                                               YY_NEW_FILE;
-#ifdef __cplusplus
-                                       return yyinput(yyscanner);
-#else
-                                       return input(yyscanner);
-#endif
-                                       }
-
-                               case EOB_ACT_CONTINUE_SCAN:
-                                       yyg->yy_c_buf_p = yyg->yytext_ptr + offset;
-                                       break;
-                               }
-                       }
-               }
-
-       c = *(unsigned char *) yyg->yy_c_buf_p; /* cast for 8-bit char's */
-       *yyg->yy_c_buf_p = '\0';        /* preserve yytext */
-       yyg->yy_hold_char = *++yyg->yy_c_buf_p;
-
-       if ( c == '\n' )
-                  
-    do{ yylineno++;
-        yycolumn=0;
-    }while(0)
-;
-
-       return c;
-}
-#endif /* ifndef YY_NO_INPUT */
-
-/** Immediately switch to a different input stream.
- * @param input_file A readable stream.
- * @param yyscanner The scanner object.
- * @note This function does not reset the start condition to @c INITIAL .
- */
-    void yyrestart  (FILE * input_file , yyscan_t yyscanner)
-{
-    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-
-       if ( ! YY_CURRENT_BUFFER ){
-        yyensure_buffer_stack (yyscanner);
-               YY_CURRENT_BUFFER_LVALUE =
-            yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner);
-       }
-
-       yy_init_buffer(YY_CURRENT_BUFFER,input_file ,yyscanner);
-       yy_load_buffer_state(yyscanner );
-}
-
-/** Switch to a different input buffer.
- * @param new_buffer The new input buffer.
- * @param yyscanner The scanner object.
- */
-    void yy_switch_to_buffer  (YY_BUFFER_STATE  new_buffer , yyscan_t yyscanner)
-{
-    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-
-       /* TODO. We should be able to replace this entire function body
-        * with
-        *              yypop_buffer_state();
-        *              yypush_buffer_state(new_buffer);
-     */
-       yyensure_buffer_stack (yyscanner);
-       if ( YY_CURRENT_BUFFER == new_buffer )
-               return;
-
-       if ( YY_CURRENT_BUFFER )
-               {
-               /* Flush out information for old buffer. */
-               *yyg->yy_c_buf_p = yyg->yy_hold_char;
-               YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
-               YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
-               }
-
-       YY_CURRENT_BUFFER_LVALUE = new_buffer;
-       yy_load_buffer_state(yyscanner );
-
-       /* We don't actually know whether we did this switch during
-        * EOF (yywrap()) processing, but the only time this flag
-        * is looked at is after yywrap() is called, so it's safe
-        * to go ahead and always set it.
-        */
-       yyg->yy_did_buffer_switch_on_eof = 1;
-}
-
-static void yy_load_buffer_state  (yyscan_t yyscanner)
-{
-    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-       yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
-       yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
-       yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
-       yyg->yy_hold_char = *yyg->yy_c_buf_p;
-}
-
-/** Allocate and initialize an input buffer state.
- * @param file A readable stream.
- * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
- * @param yyscanner The scanner object.
- * @return the allocated buffer state.
- */
-    YY_BUFFER_STATE yy_create_buffer  (FILE * file, int  size , yyscan_t yyscanner)
-{
-       YY_BUFFER_STATE b;
-    
-       b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ,yyscanner );
-       if ( ! b )
-               YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
-
-       b->yy_buf_size = size;
-
-       /* yy_ch_buf has to be 2 characters longer than the size given because
-        * we need to put in 2 end-of-buffer characters.
-        */
-       b->yy_ch_buf = (char *) yyalloc(b->yy_buf_size + 2 ,yyscanner );
-       if ( ! b->yy_ch_buf )
-               YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
-
-       b->yy_is_our_buffer = 1;
-
-       yy_init_buffer(b,file ,yyscanner);
-
-       return b;
-}
-
-/** Destroy the buffer.
- * @param b a buffer created with yy_create_buffer()
- * @param yyscanner The scanner object.
- */
-    void yy_delete_buffer (YY_BUFFER_STATE  b , yyscan_t yyscanner)
-{
-    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-
-       if ( ! b )
-               return;
-
-       if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
-               YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
-
-       if ( b->yy_is_our_buffer )
-               yyfree((void *) b->yy_ch_buf ,yyscanner );
-
-       yyfree((void *) b ,yyscanner );
-}
-
-/* Initializes or reinitializes a buffer.
- * This function is sometimes called more than once on the same buffer,
- * such as during a yyrestart() or at EOF.
- */
-    static void yy_init_buffer  (YY_BUFFER_STATE  b, FILE * file , yyscan_t yyscanner)
-
-{
-       int oerrno = errno;
-    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-
-       yy_flush_buffer(b ,yyscanner);
-
-       b->yy_input_file = file;
-       b->yy_fill_buffer = 1;
-
-    /* If b is the current buffer, then yy_init_buffer was _probably_
-     * called from yyrestart() or through yy_get_next_buffer.
-     * In that case, we don't want to reset the lineno or column.
-     */
-    if (b != YY_CURRENT_BUFFER){
-        b->yy_bs_lineno = 1;
-        b->yy_bs_column = 0;
-    }
-
-        b->yy_is_interactive = 0;
-    
-       errno = oerrno;
-}
-
-/** Discard all buffered characters. On the next scan, YY_INPUT will be called.
- * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
- * @param yyscanner The scanner object.
- */
-    void yy_flush_buffer (YY_BUFFER_STATE  b , yyscan_t yyscanner)
-{
-    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-       if ( ! b )
-               return;
-
-       b->yy_n_chars = 0;
-
-       /* We always need two end-of-buffer characters.  The first causes
-        * a transition to the end-of-buffer state.  The second causes
-        * a jam in that state.
-        */
-       b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
-       b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
-
-       b->yy_buf_pos = &b->yy_ch_buf[0];
-
-       b->yy_at_bol = 1;
-       b->yy_buffer_status = YY_BUFFER_NEW;
-
-       if ( b == YY_CURRENT_BUFFER )
-               yy_load_buffer_state(yyscanner );
-}
-
-/** Pushes the new state onto the stack. The new state becomes
- *  the current state. This function will allocate the stack
- *  if necessary.
- *  @param new_buffer The new state.
- *  @param yyscanner The scanner object.
- */
-void yypush_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner)
-{
-    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-       if (new_buffer == NULL)
-               return;
-
-       yyensure_buffer_stack(yyscanner);
-
-       /* This block is copied from yy_switch_to_buffer. */
-       if ( YY_CURRENT_BUFFER )
-               {
-               /* Flush out information for old buffer. */
-               *yyg->yy_c_buf_p = yyg->yy_hold_char;
-               YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
-               YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
-               }
-
-       /* Only push if top exists. Otherwise, replace top. */
-       if (YY_CURRENT_BUFFER)
-               yyg->yy_buffer_stack_top++;
-       YY_CURRENT_BUFFER_LVALUE = new_buffer;
-
-       /* copied from yy_switch_to_buffer. */
-       yy_load_buffer_state(yyscanner );
-       yyg->yy_did_buffer_switch_on_eof = 1;
-}
-
-/** Removes and deletes the top of the stack, if present.
- *  The next element becomes the new top.
- *  @param yyscanner The scanner object.
- */
-void yypop_buffer_state (yyscan_t yyscanner)
-{
-    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-       if (!YY_CURRENT_BUFFER)
-               return;
-
-       yy_delete_buffer(YY_CURRENT_BUFFER ,yyscanner);
-       YY_CURRENT_BUFFER_LVALUE = NULL;
-       if (yyg->yy_buffer_stack_top > 0)
-               --yyg->yy_buffer_stack_top;
-
-       if (YY_CURRENT_BUFFER) {
-               yy_load_buffer_state(yyscanner );
-               yyg->yy_did_buffer_switch_on_eof = 1;
-       }
-}
-
-/* Allocates the stack if it does not exist.
- *  Guarantees space for at least one push.
- */
-static void yyensure_buffer_stack (yyscan_t yyscanner)
-{
-       int num_to_alloc;
-    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-
-       if (!yyg->yy_buffer_stack) {
-
-               /* First allocation is just for 2 elements, since we don't know if this
-                * scanner will even need a stack. We use 2 instead of 1 to avoid an
-                * immediate realloc on the next call.
-         */
-               num_to_alloc = 1;
-               yyg->yy_buffer_stack = (struct yy_buffer_state**)yyalloc
-                                                               (num_to_alloc * sizeof(struct yy_buffer_state*)
-                                                               , yyscanner);
-               
-               memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*));
-                               
-               yyg->yy_buffer_stack_max = num_to_alloc;
-               yyg->yy_buffer_stack_top = 0;
-               return;
-       }
-
-       if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){
-
-               /* Increase the buffer to prepare for a possible push. */
-               int grow_size = 8 /* arbitrary grow size */;
-
-               num_to_alloc = yyg->yy_buffer_stack_max + grow_size;
-               yyg->yy_buffer_stack = (struct yy_buffer_state**)yyrealloc
-                                                               (yyg->yy_buffer_stack,
-                                                               num_to_alloc * sizeof(struct yy_buffer_state*)
-                                                               , yyscanner);
-
-               /* zero only the new slots.*/
-               memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*));
-               yyg->yy_buffer_stack_max = num_to_alloc;
-       }
-}
-
-/** Setup the input buffer state to scan directly from a user-specified character buffer.
- * @param base the character buffer
- * @param size the size in bytes of the character buffer
- * @param yyscanner The scanner object.
- * @return the newly allocated buffer state object. 
- */
-YY_BUFFER_STATE yy_scan_buffer  (char * base, yy_size_t  size , yyscan_t yyscanner)
-{
-       YY_BUFFER_STATE b;
-    
-       if ( size < 2 ||
-            base[size-2] != YY_END_OF_BUFFER_CHAR ||
-            base[size-1] != YY_END_OF_BUFFER_CHAR )
-               /* They forgot to leave room for the EOB's. */
-               return 0;
-
-       b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ,yyscanner );
-       if ( ! b )
-               YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
-
-       b->yy_buf_size = size - 2;      /* "- 2" to take care of EOB's */
-       b->yy_buf_pos = b->yy_ch_buf = base;
-       b->yy_is_our_buffer = 0;
-       b->yy_input_file = 0;
-       b->yy_n_chars = b->yy_buf_size;
-       b->yy_is_interactive = 0;
-       b->yy_at_bol = 1;
-       b->yy_fill_buffer = 0;
-       b->yy_buffer_status = YY_BUFFER_NEW;
-
-       yy_switch_to_buffer(b ,yyscanner );
-
-       return b;
-}
-
-/** Setup the input buffer state to scan a string. The next call to yylex() will
- * scan from a @e copy of @a str.
- * @param str a NUL-terminated string to scan
- * @param yyscanner The scanner object.
- * @return the newly allocated buffer state object.
- * @note If you want to scan bytes that may contain NUL values, then use
- *       yy_scan_bytes() instead.
- */
-YY_BUFFER_STATE yy_scan_string (yyconst char * yystr , yyscan_t yyscanner)
-{
-    
-       return yy_scan_bytes(yystr,strlen(yystr) ,yyscanner);
-}
-
-/** Setup the input buffer state to scan the given bytes. The next call to yylex() will
- * scan from a @e copy of @a bytes.
- * @param bytes the byte buffer to scan
- * @param len the number of bytes in the buffer pointed to by @a bytes.
- * @param yyscanner The scanner object.
- * @return the newly allocated buffer state object.
- */
-YY_BUFFER_STATE yy_scan_bytes  (yyconst char * yybytes, int  _yybytes_len , yyscan_t yyscanner)
-{
-       YY_BUFFER_STATE b;
-       char *buf;
-       yy_size_t n;
-       int i;
-    
-       /* Get memory for full buffer, including space for trailing EOB's. */
-       n = _yybytes_len + 2;
-       buf = (char *) yyalloc(n ,yyscanner );
-       if ( ! buf )
-               YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
-
-       for ( i = 0; i < _yybytes_len; ++i )
-               buf[i] = yybytes[i];
-
-       buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
-
-       b = yy_scan_buffer(buf,n ,yyscanner);
-       if ( ! b )
-               YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
-
-       /* It's okay to grow etc. this buffer, and we should throw it
-        * away when we're done.
-        */
-       b->yy_is_our_buffer = 1;
-
-       return b;
-}
-
-    static void yy_push_state (int  new_state , yyscan_t yyscanner)
-{
-    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-       if ( yyg->yy_start_stack_ptr >= yyg->yy_start_stack_depth )
-               {
-               yy_size_t new_size;
-
-               yyg->yy_start_stack_depth += YY_START_STACK_INCR;
-               new_size = yyg->yy_start_stack_depth * sizeof( int );
-
-               if ( ! yyg->yy_start_stack )
-                       yyg->yy_start_stack = (int *) yyalloc(new_size ,yyscanner );
-
-               else
-                       yyg->yy_start_stack = (int *) yyrealloc((void *) yyg->yy_start_stack,new_size ,yyscanner );
-
-               if ( ! yyg->yy_start_stack )
-                       YY_FATAL_ERROR(
-                       "out of memory expanding start-condition stack" );
-               }
-
-       yyg->yy_start_stack[yyg->yy_start_stack_ptr++] = YY_START;
-
-       BEGIN(new_state);
-}
-
-    static void yy_pop_state  (yyscan_t yyscanner)
-{
-    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-       if ( --yyg->yy_start_stack_ptr < 0 )
-               YY_FATAL_ERROR( "start-condition stack underflow" );
-
-       BEGIN(yyg->yy_start_stack[yyg->yy_start_stack_ptr]);
-}
-
-    static int yy_top_state  (yyscan_t yyscanner)
-{
-    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-       return yyg->yy_start_stack[yyg->yy_start_stack_ptr - 1];
-}
-
-#ifndef YY_EXIT_FAILURE
-#define YY_EXIT_FAILURE 2
-#endif
-
-static void yy_fatal_error (yyconst char* msg , yyscan_t yyscanner)
-{
-       (void) fprintf( stderr, "%s\n", msg );
-       exit( YY_EXIT_FAILURE );
-}
-
-/* Redefine yyless() so it works in section 3 code. */
-
-#undef yyless
-#define yyless(n) \
-       do \
-               { \
-               /* Undo effects of setting up yytext. */ \
-        int yyless_macro_arg = (n); \
-        YY_LESS_LINENO(yyless_macro_arg);\
-               yytext[yyleng] = yyg->yy_hold_char; \
-               yyg->yy_c_buf_p = yytext + yyless_macro_arg; \
-               yyg->yy_hold_char = *yyg->yy_c_buf_p; \
-               *yyg->yy_c_buf_p = '\0'; \
-               yyleng = yyless_macro_arg; \
-               } \
-       while ( 0 )
-
-/* Accessor  methods (get/set functions) to struct members. */
-
-/** Get the user-defined data for this scanner.
- * @param yyscanner The scanner object.
- */
-YY_EXTRA_TYPE yyget_extra  (yyscan_t yyscanner)
-{
-    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-    return yyextra;
-}
-
-/** Get the current line number.
- * @param yyscanner The scanner object.
- */
-int yyget_lineno  (yyscan_t yyscanner)
-{
-    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-    
-        if (! YY_CURRENT_BUFFER)
-            return 0;
-    
-    return yylineno;
-}
-
-/** Get the current column number.
- * @param yyscanner The scanner object.
- */
-int yyget_column  (yyscan_t yyscanner)
-{
-    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-    
-        if (! YY_CURRENT_BUFFER)
-            return 0;
-    
-    return yycolumn;
-}
-
-/** Get the input stream.
- * @param yyscanner The scanner object.
- */
-FILE *yyget_in  (yyscan_t yyscanner)
-{
-    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-    return yyin;
-}
-
-/** Get the output stream.
- * @param yyscanner The scanner object.
- */
-FILE *yyget_out  (yyscan_t yyscanner)
-{
-    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-    return yyout;
-}
-
-/** Get the length of the current token.
- * @param yyscanner The scanner object.
- */
-int yyget_leng  (yyscan_t yyscanner)
-{
-    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-    return yyleng;
-}
-
-/** Get the current token.
- * @param yyscanner The scanner object.
- */
-
-char *yyget_text  (yyscan_t yyscanner)
-{
-    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-    return yytext;
-}
-
-/** Set the user-defined data. This data is never touched by the scanner.
- * @param user_defined The data to be associated with this scanner.
- * @param yyscanner The scanner object.
- */
-void yyset_extra (YY_EXTRA_TYPE  user_defined , yyscan_t yyscanner)
-{
-    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-    yyextra = user_defined ;
-}
-
-/** Set the current line number.
- * @param line_number
- * @param yyscanner The scanner object.
- */
-void yyset_lineno (int  line_number , yyscan_t yyscanner)
-{
-    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-
-        /* lineno is only valid if an input buffer exists. */
-        if (! YY_CURRENT_BUFFER )
-           yy_fatal_error( "yyset_lineno called with no buffer" , yyscanner); 
-    
-    yylineno = line_number;
-}
-
-/** Set the current column.
- * @param line_number
- * @param yyscanner The scanner object.
- */
-void yyset_column (int  column_no , yyscan_t yyscanner)
-{
-    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-
-        /* column is only valid if an input buffer exists. */
-        if (! YY_CURRENT_BUFFER )
-           yy_fatal_error( "yyset_column called with no buffer" , yyscanner); 
-    
-    yycolumn = column_no;
-}
-
-/** Set the input stream. This does not discard the current
- * input buffer.
- * @param in_str A readable stream.
- * @param yyscanner The scanner object.
- * @see yy_switch_to_buffer
- */
-void yyset_in (FILE *  in_str , yyscan_t yyscanner)
-{
-    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-    yyin = in_str ;
-}
-
-void yyset_out (FILE *  out_str , yyscan_t yyscanner)
-{
-    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-    yyout = out_str ;
-}
-
-int yyget_debug  (yyscan_t yyscanner)
-{
-    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-    return yy_flex_debug;
-}
-
-void yyset_debug (int  bdebug , yyscan_t yyscanner)
-{
-    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-    yy_flex_debug = bdebug ;
-}
-
-/* Accessor methods for yylval and yylloc */
-
-/* User-visible API */
-
-/* yylex_init is special because it creates the scanner itself, so it is
- * the ONLY reentrant function that doesn't take the scanner as the last argument.
- * That's why we explicitly handle the declaration, instead of using our macros.
- */
-
-int yylex_init(yyscan_t* ptr_yy_globals)
-
-{
-    if (ptr_yy_globals == NULL){
-        errno = EINVAL;
-        return 1;
-    }
-
-    *ptr_yy_globals = (yyscan_t) yyalloc ( sizeof( struct yyguts_t ), NULL );
-
-    if (*ptr_yy_globals == NULL){
-        errno = ENOMEM;
-        return 1;
-    }
-
-    /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */
-    memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
-
-    return yy_init_globals ( *ptr_yy_globals );
-}
-
-static int yy_init_globals (yyscan_t yyscanner)
-{
-    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-    /* Initialization is the same as for the non-reentrant scanner.
-     * This function is called from yylex_destroy(), so don't allocate here.
-     */
-
-    yyg->yy_buffer_stack = 0;
-    yyg->yy_buffer_stack_top = 0;
-    yyg->yy_buffer_stack_max = 0;
-    yyg->yy_c_buf_p = (char *) 0;
-    yyg->yy_init = 0;
-    yyg->yy_start = 0;
-
-    yyg->yy_start_stack_ptr = 0;
-    yyg->yy_start_stack_depth = 0;
-    yyg->yy_start_stack =  NULL;
-
-/* Defined in main.c */
-#ifdef YY_STDINIT
-    yyin = stdin;
-    yyout = stdout;
-#else
-    yyin = (FILE *) 0;
-    yyout = (FILE *) 0;
-#endif
-
-    /* For future reference: Set errno on error, since we are called by
-     * yylex_init()
-     */
-    return 0;
-}
-
-/* yylex_destroy is for both reentrant and non-reentrant scanners. */
-int yylex_destroy  (yyscan_t yyscanner)
-{
-    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-
-    /* Pop the buffer stack, destroying each element. */
-       while(YY_CURRENT_BUFFER){
-               yy_delete_buffer(YY_CURRENT_BUFFER ,yyscanner );
-               YY_CURRENT_BUFFER_LVALUE = NULL;
-               yypop_buffer_state(yyscanner);
-       }
-
-       /* Destroy the stack itself. */
-       yyfree(yyg->yy_buffer_stack ,yyscanner);
-       yyg->yy_buffer_stack = NULL;
-
-    /* Destroy the start condition stack. */
-        yyfree(yyg->yy_start_stack ,yyscanner );
-        yyg->yy_start_stack = NULL;
-
-    /* Reset the globals. This is important in a non-reentrant scanner so the next time
-     * yylex() is called, initialization will occur. */
-    yy_init_globals( yyscanner);
-
-    /* Destroy the main struct (reentrant only). */
-    yyfree ( yyscanner , yyscanner );
-    yyscanner = NULL;
-    return 0;
-}
-
-/*
- * Internal utility routines.
- */
-
-#ifndef yytext_ptr
-static void yy_flex_strncpy (char* s1, yyconst char * s2, int n , yyscan_t yyscanner)
-{
-       register int i;
-       for ( i = 0; i < n; ++i )
-               s1[i] = s2[i];
-}
-#endif
-
-#ifdef YY_NEED_STRLEN
-static int yy_flex_strlen (yyconst char * s , yyscan_t yyscanner)
-{
-       register int n;
-       for ( n = 0; s[n]; ++n )
-               ;
-
-       return n;
-}
-#endif
-
-void *yyalloc (yy_size_t  size , yyscan_t yyscanner)
-{
-       return (void *) malloc( size );
-}
-
-void *yyrealloc  (void * ptr, yy_size_t  size , yyscan_t yyscanner)
-{
-       /* The cast to (char *) in the following accommodates both
-        * implementations that use char* generic pointers, and those
-        * that use void* generic pointers.  It works with the latter
-        * because both ANSI C and C++ allow castless assignment from
-        * any pointer type to void*, and deal with argument conversions
-        * as though doing an assignment.
-        */
-       return (void *) realloc( (char *) ptr, size );
-}
-
-void yyfree (void * ptr , yyscan_t yyscanner)
-{
-       free( (char *) ptr );   /* see yyrealloc() for (char *) cast */
-}
-
-#define YYTABLES_NAME "yytables"
-
-#line 254 "bitbakescanner.l"
-
-
-
-void lex_t::accept (int token, const char* sz) 
-{
-    token_t t;
-    memset (&t, 0, sizeof (t));
-    t.copyString(sz);
-
-    /* tell lemon to parse the token */
-    parse (parser, token, t, this);
-}
-
-void lex_t::input (char *buf, int *result, int max_size)
-{
-    /* printf("lex_t::input %p %d\n", buf, max_size); */
-    *result = fread(buf, 1, max_size, file);
-    /* printf("lex_t::input result %d\n", *result); */
-}
-
-int lex_t::line ()const
-{
-    /* printf("lex_t::line\n"); */
-    return yyget_lineno (scanner);
-}
-
-
-extern "C" {
-
-    void parse (FILE* file, char* name, PyObject* data, int config)
-    {
-        /* printf("parse bbparseAlloc\n"); */
-        void* parser = bbparseAlloc (malloc);
-        yyscan_t scanner;
-        lex_t lex;
-
-        /* printf("parse yylex_init\n"); */
-        yylex_init (&scanner);
-
-        lex.parser = parser;
-        lex.scanner = scanner;
-        lex.file = file;
-        lex.name = name;
-        lex.data = data;
-        lex.config = config;
-        lex.parse = bbparse;
-        /*printf("parse yyset_extra\n"); */
-        yyset_extra (&lex, scanner);
-
-        /* printf("parse yylex\n"); */
-        int result = yylex (scanner);
-
-        /* printf("parse result %d\n", result); */
-
-        lex.accept (0);
-        /* printf("parse lex.accept\n"); */
-        bbparseTrace (NULL, NULL);
-        /* printf("parse bbparseTrace\n"); */
-
-        if (result != T_EOF)
-           printf ("premature end of file\n");
-
-        yylex_destroy (scanner);
-        bbparseFree (parser, free);
-    }
-
-}
-
diff --git a/lib/bb/parse/parse_c/bitbakescanner.l b/lib/bb/parse/parse_c/bitbakescanner.l
deleted file mode 100644 (file)
index b6592f2..0000000
+++ /dev/null
@@ -1,319 +0,0 @@
-/* bbf.flex 
-
-   written by Marc Singer
-   6 January 2005
-
-   This program is free software; you can redistribute it and/or
-   modify it under the terms of the GNU General Public License as
-   published by the Free Software Foundation; either version 2 of the
-   License, or (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful, but
-   WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
-   USA.
-
-   DESCRIPTION
-   -----------
-
-   flex lexer specification for a BitBake input file parser.
-
-   Unfortunately, flex doesn't welcome comments within the rule sets.
-   I say unfortunately because this lexer is unreasonably complex and
-   comments would make the code much easier to comprehend.
-
-   The BitBake grammar is not regular.  In order to interpret all
-   of the available input files, the lexer maintains much state as it
-   parses.  There are places where this lexer will emit tokens that
-   are invalid.  The parser will tend to catch these. 
-
-   The lexer requires C++ at the moment.  The only reason for this has
-   to do with a very small amount of managed state.  Producing a C
-   lexer should be a reasonably easy task as long as the %reentrant
-   option is used.
-
-
-   NOTES
-   -----
-
-   o RVALUES.  There are three kinds of RVALUES.  There are unquoted
-     values, double quote enclosed strings, and single quote 
-     strings.  Quoted strings may contain unescaped quotes (of either
-     type), *and* any type may span more than one line by using a
-     continuation '\' at the end of the line.  This requires us to
-     recognize all types of values with a single expression.
-     Moreover, the only reason to quote a value is to include
-     trailing or leading whitespace.  Whitespace within a value is
-     preserved, ugh.
-
-   o CLASSES.  C_ patterns define classes.  Classes ought not include
-     a repitition operator, instead letting the reference to the class
-     define the repitition count.
-
-     C_SS - symbol start
-     C_SB - symbol body
-     C_SP - whitespace
-
-*/
-
-%option never-interactive
-%option yylineno
-%option noyywrap
-%option reentrant stack
-
-
-%{
-
-#include "token.h"
-#include "lexer.h"
-#include "bitbakeparser.h"
-#include <ctype.h>
-
-extern void *bbparseAlloc(void *(*mallocProc)(size_t));
-extern void bbparseFree(void *p, void (*freeProc)(void*));
-extern void *bbparseAlloc(void *(*mallocProc)(size_t));
-extern void *bbparse(void*, int, token_t, lex_t*);
-extern void bbparseTrace(FILE *TraceFILE, char *zTracePrompt);
-
-//static const char* rgbInput;
-//static size_t cbInput;
-
-extern "C" {
-
-int lineError;
-int errorParse;
-
-enum {
-  errorNone = 0,
-  errorUnexpectedInput,
-  errorUnsupportedFeature,
-};
-
-}
-
-#define YY_EXTRA_TYPE lex_t*
-
-       /* Read from buffer */
-#define YY_INPUT(buf,result,max_size) \
- { yyextra->input(buf, &result, max_size); }
-
-//#define YY_DECL static size_t yylex ()
-
-#define ERROR(e) \
-  do { lineError = yylineno; errorParse = e; yyterminate (); } while (0)
-
-static const char* fixup_escapes (const char* sz);
-
-%}
-
-
-C_SP            [ \t]
-COMMENT         #.*\n
-OP_ASSIGN       "="
-OP_PREDOT       ".="
-OP_POSTDOT      "=."
-OP_IMMEDIATE    ":="
-OP_PREPEND      "=+"
-OP_APPEND       "+="
-OP_COND         "?="
-B_OPEN          "{"
-B_CLOSE         "}"
-
-K_ADDTASK       "addtask"
-K_ADDHANDLER    "addhandler"
-K_AFTER         "after"
-K_BEFORE        "before"
-K_DEF           "def"
-K_INCLUDE       "include"
-K_REQUIRE       "require"
-K_INHERIT       "inherit"
-K_PYTHON        "python"
-K_FAKEROOT      "fakeroot"
-K_EXPORT        "export"
-K_EXPORT_FUNC   "EXPORT_FUNCTIONS"
-
-STRING          \"([^\n\r]|"\\\n")*\"
-SSTRING         \'([^\n\r]|"\\\n")*\'
-VALUE           ([^'" \t\n])|([^'" \t\n]([^\n]|(\\\n))*[^'" \t\n])
-
-C_SS            [a-zA-Z_]
-C_SB            [a-zA-Z0-9_+-./]
-REF             $\{{C_SS}{C_SB}*\}
-SYMBOL          {C_SS}{C_SB}*
-VARIABLE        $?{C_SS}({C_SB}*|{REF})*(\[[a-zA-Z0-9_]*\])?
-FILENAME        ([a-zA-Z_./]|{REF})(([-+a-zA-Z0-9_./]*)|{REF})*
-
-PROC            \({C_SP}*\)
-
-%s S_DEF
-%s S_DEF_ARGS
-%s S_DEF_BODY
-%s S_FUNC
-%s S_INCLUDE
-%s S_INHERIT
-%s S_REQUIRE
-%s S_PROC
-%s S_RVALUE
-%s S_TASK
-
-%%
-
-{OP_APPEND}                     { BEGIN S_RVALUE;
-                                  yyextra->accept (T_OP_APPEND); }
-{OP_PREPEND}                    { BEGIN S_RVALUE;
-                                  yyextra->accept (T_OP_PREPEND); }
-{OP_IMMEDIATE}                  { BEGIN S_RVALUE;
-                                  yyextra->accept (T_OP_IMMEDIATE); }
-{OP_ASSIGN}                     { BEGIN S_RVALUE;
-                                  yyextra->accept (T_OP_ASSIGN); }
-{OP_PREDOT}                     { BEGIN S_RVALUE;
-                                  yyextra->accept (T_OP_PREDOT); }
-{OP_POSTDOT}                    { BEGIN S_RVALUE;
-                                  yyextra->accept (T_OP_POSTDOT); }
-{OP_COND}                       { BEGIN S_RVALUE;
-                                  yyextra->accept (T_OP_COND); }
-
-<S_RVALUE>\\\n{C_SP}*           {  }
-<S_RVALUE>{STRING}              { BEGIN INITIAL;
-                                  size_t cb = yyleng;
-                                  while (cb && isspace (yytext[cb - 1]))
-                                      --cb;
-                                  yytext[cb - 1] = 0;
-                                  yyextra->accept (T_STRING, yytext + 1); }
-<S_RVALUE>{SSTRING}             { BEGIN INITIAL;
-                                  size_t cb = yyleng;
-                                  while (cb && isspace (yytext[cb - 1]))
-                                      --cb;
-                                  yytext[cb - 1] = 0;
-                                  yyextra->accept (T_STRING, yytext + 1); }
-
-<S_RVALUE>{VALUE}               { ERROR (errorUnexpectedInput);  }
-<S_RVALUE>{C_SP}*\n+            { BEGIN INITIAL;
-                                  yyextra->accept (T_STRING, NULL); }
-
-{K_INCLUDE}                     { BEGIN S_INCLUDE;
-                                  yyextra->accept (T_INCLUDE); }
-{K_REQUIRE}                     { BEGIN S_REQUIRE;
-                                  yyextra->accept (T_REQUIRE); }
-{K_INHERIT}                     { BEGIN S_INHERIT;
-                                  yyextra->accept (T_INHERIT); }
-{K_ADDTASK}                     { BEGIN S_TASK;
-                                  yyextra->accept (T_ADDTASK); }
-{K_ADDHANDLER}                  { yyextra->accept (T_ADDHANDLER); }
-{K_EXPORT_FUNC}                 { BEGIN S_FUNC;
-                                  yyextra->accept (T_EXPORT_FUNC); }
-<S_TASK>{K_BEFORE}              { yyextra->accept (T_BEFORE); }
-<S_TASK>{K_AFTER}               { yyextra->accept (T_AFTER); }
-<INITIAL>{K_EXPORT}             { yyextra->accept (T_EXPORT); }
-
-<INITIAL>{K_FAKEROOT}           { yyextra->accept (T_FAKEROOT); }
-<INITIAL>{K_PYTHON}             { yyextra->accept (T_PYTHON); }
-{PROC}{C_SP}*{B_OPEN}{C_SP}*\n*  { BEGIN S_PROC;
-                                  yyextra->accept (T_PROC_OPEN); }
-<S_PROC>{B_CLOSE}{C_SP}*\n*      { BEGIN INITIAL;
-                                  yyextra->accept (T_PROC_CLOSE); }
-<S_PROC>([^}][^\n]*)?\n*        { yyextra->accept (T_PROC_BODY, yytext); }
-
-{K_DEF}                         { BEGIN S_DEF; }
-<S_DEF>{SYMBOL}                 { BEGIN S_DEF_ARGS;
-                                  yyextra->accept (T_SYMBOL, yytext); }
-<S_DEF_ARGS>[^\n:]*:            { yyextra->accept (T_DEF_ARGS, yytext); }
-<S_DEF_ARGS>{C_SP}*\n           { BEGIN S_DEF_BODY; }
-<S_DEF_BODY>{C_SP}+[^\n]*\n     { yyextra->accept (T_DEF_BODY, yytext); }
-<S_DEF_BODY>\n                  { yyextra->accept (T_DEF_BODY, yytext); }
-<S_DEF_BODY>.                   { BEGIN INITIAL; unput (yytext[0]); }
-
-{COMMENT}                       { }
-
-<INITIAL>{SYMBOL}               { yyextra->accept (T_SYMBOL, yytext); }
-<INITIAL>{VARIABLE}             { yyextra->accept (T_VARIABLE, yytext); }
-
-<S_TASK>{SYMBOL}                { yyextra->accept (T_TSYMBOL, yytext); }
-<S_FUNC>{SYMBOL}                { yyextra->accept (T_FSYMBOL, yytext); }
-<S_INHERIT>{SYMBOL}             { yyextra->accept (T_ISYMBOL, yytext); }
-<S_INCLUDE>{FILENAME}           { BEGIN INITIAL;
-                                  yyextra->accept (T_ISYMBOL, yytext); }
-<S_REQUIRE>{FILENAME}           { BEGIN INITIAL;
-                                  yyextra->accept (T_ISYMBOL, yytext); }
-<S_TASK>\n                      { BEGIN INITIAL; }
-<S_FUNC>\n                      { BEGIN INITIAL; }
-<S_INHERIT>\n                   { BEGIN INITIAL; }
-
-[ \t\r\n]                       /* Insignificant whitespace */
-
-.                               { ERROR (errorUnexpectedInput); }
-
-                                /* Check for premature termination */
-<<EOF>>                         { return T_EOF; }
-
-%%
-
-void lex_t::accept (int token, const char* sz) 
-{
-    token_t t;
-    memset (&t, 0, sizeof (t));
-    t.copyString(sz);
-
-    /* tell lemon to parse the token */
-    parse (parser, token, t, this);
-}
-
-void lex_t::input (char *buf, int *result, int max_size)
-{
-    /* printf("lex_t::input %p %d\n", buf, max_size); */
-    *result = fread(buf, 1, max_size, file);
-    /* printf("lex_t::input result %d\n", *result); */
-}
-
-int lex_t::line ()const
-{
-    /* printf("lex_t::line\n"); */
-    return yyget_lineno (scanner);
-}
-
-
-extern "C" {
-
-    void parse (FILE* file, char* name, PyObject* data, int config)
-    {
-        /* printf("parse bbparseAlloc\n"); */
-        void* parser = bbparseAlloc (malloc);
-        yyscan_t scanner;
-        lex_t lex;
-
-        /* printf("parse yylex_init\n"); */
-        yylex_init (&scanner);
-
-        lex.parser = parser;
-        lex.scanner = scanner;
-        lex.file = file;
-        lex.name = name;
-        lex.data = data;
-        lex.config = config;
-        lex.parse = bbparse;
-        /*printf("parse yyset_extra\n"); */
-        yyset_extra (&lex, scanner);
-
-        /* printf("parse yylex\n"); */
-        int result = yylex (scanner);
-
-        /* printf("parse result %d\n", result); */
-
-        lex.accept (0);
-        /* printf("parse lex.accept\n"); */
-        bbparseTrace (NULL, NULL);
-        /* printf("parse bbparseTrace\n"); */
-
-        if (result != T_EOF)
-           printf ("premature end of file\n");
-
-        yylex_destroy (scanner);
-        bbparseFree (parser, free);
-    }
-
-}
diff --git a/lib/bb/parse/parse_c/lexer.h b/lib/bb/parse/parse_c/lexer.h
deleted file mode 100644 (file)
index cb32be7..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
-Copyright (C) 2005 Holger Hans Peter Freyther
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
-SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
-THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-*/
-
-#ifndef LEXER_H
-#define LEXER_H
-
-#include "Python.h"
-
-extern "C" {
-
-struct lex_t {
-    void* parser;
-    void* scanner;
-    FILE* file;
-    char *name;
-    PyObject *data;
-    int config;
-
-    void* (*parse)(void*, int, token_t, lex_t*);
-
-    void accept(int token, const char* sz = NULL);
-    void input(char *buf, int *result, int max_size);
-    int  line()const;
-};
-
-}
-
-#endif
diff --git a/lib/bb/parse/parse_c/lexerc.h b/lib/bb/parse/parse_c/lexerc.h
deleted file mode 100644 (file)
index c8a19fb..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-
-#ifndef LEXERC_H
-#define LEXERC_H
-
-#include <stdio.h>
-
-extern int lineError;
-extern int errorParse;
-
-typedef struct {
-    void *parser;
-    void *scanner;
-    FILE *file;
-    char *name;
-    PyObject *data;
-    int config;
-} lex_t;
-
-#endif
diff --git a/lib/bb/parse/parse_c/python_output.h b/lib/bb/parse/parse_c/python_output.h
deleted file mode 100644 (file)
index bf34527..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-#ifndef PYTHON_OUTPUT_H
-#define PYTHON_OUTPUT_H
-/*
-Copyright (C) 2006 Holger Hans Peter Freyther
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
-SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
-THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-This is the glue:
-    It will be called from the lemon grammar and will call into
-    python to set certain things.
-
-*/
-
-extern "C" {
-
-struct lex_t;
-
-extern void e_assign(lex_t*, const char*, const char*);
-extern void e_export(lex_t*, const char*);
-extern void e_immediate(lex_t*, const char*, const char*);
-extern void e_cond(lex_t*, const char*, const char*);
-extern void e_prepend(lex_t*, const char*, const char*);
-extern void e_append(lex_t*, const char*, const char*);
-extern void e_precat(lex_t*, const char*, const char*);
-extern void e_postcat(lex_t*, const char*, const char*);
-
-extern void e_addtask(lex_t*, const char*, const char*, const char*);
-extern void e_addhandler(lex_t*,const char*);
-extern void e_export_func(lex_t*, const char*);
-extern void e_inherit(lex_t*, const char*);
-extern void e_include(lex_t*, const char*);
-extern void e_require(lex_t*, const char*);
-extern void e_proc(lex_t*, const char*, const char*);
-extern void e_proc_python(lex_t*, const char*, const char*);
-extern void e_proc_fakeroot(lex_t*, const char*, const char*);
-extern void e_def(lex_t*, const char*, const char*, const char*);
-extern void e_parse_error(lex_t*);
-
-}
-#endif // PYTHON_OUTPUT_H
diff --git a/lib/bb/parse/parse_c/token.h b/lib/bb/parse/parse_c/token.h
deleted file mode 100644 (file)
index c624201..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
-Copyright (C) 2005 Holger Hans Peter Freyther
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
-SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
-THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-*/
-
-#ifndef TOKEN_H
-#define TOKEN_H
-
-#include <ctype.h>
-#include <string.h>
-
-#define PURE_METHOD
-
-
-/**
- * Special Value for End Of File Handling. We set it to
- * 1001 so we can have up to 1000 Terminal Symbols on
- * grammar. Currenlty we have around 20
- */
-#define T_EOF    1001
-
-struct token_t {
-    const char* string()const PURE_METHOD;
-
-    static char* concatString(const char* l, const char* r);
-    void assignString(char* str);
-    void copyString(const char* str);
-
-    void release_this();
-
-private:
-    char  *m_string;
-    size_t m_stringLen;
-};
-
-inline const char* token_t::string()const
-{
-    return m_string;
-}
-
-/*
- * append str to the current string
- */
-inline char* token_t::concatString(const char* l, const char* r)
-{
-    size_t cb = (l ? strlen (l) : 0) + strlen (r) + 1;
-    char *r_sz = new char[cb];
-    *r_sz = 0;
-
-    if (l)
-        strcat (r_sz, l);
-    strcat (r_sz, r);
-
-    return r_sz;
-}
-
-inline void token_t::assignString(char* str)
-{
-    m_string = str;
-    m_stringLen = str ? strlen(str) : 0;
-}
-
-inline void token_t::copyString(const char* str)
-{
-    if( str ) {
-        m_stringLen = strlen(str);
-        m_string = new char[m_stringLen+1];
-        strcpy(m_string, str);
-    }
-}
-
-inline void token_t::release_this()
-{
-    delete m_string;
-    m_string = 0;
-}
-
-#endif