/*************************************************************************/
/*                                                                       */
/*        Produced by MetaGen version 2.0  -    1989-1995                 */
/*       Syntaxic Analyzer Meta Generator developped by                  */
/*                  Eric Lavillonniere                                   */
/*                                                                       */
/*************************************************************************/

#include "token.h"
#include "metalang.h"



#line 358 "metalang.met"
#undef toupper
#line 358 "metalang.met"
static int toupper(int y) {int x=y; x=x>='a' && x<='z' ? x-'a'+'A' : x;return x;}
#line 358 "metalang.met"
static string [200];
#line 358 "metalang.met"

#line 358 "metalang.met"
int metalang::SortKeyWord (int defaultValue)
#line 358 "metalang.met"
{
#line 358 "metalang.met"
    register int Value;
#line 358 "metalang.met"
    Value = strcmp(lexEl.string,"not");
#line 358 "metalang.met"
    if (Value > 0) {
#line 358 "metalang.met"
        Value = strcmp(lexEl.string,"store_comment_line");
#line 358 "metalang.met"
        if (Value > 0) {
#line 358 "metalang.met"
            Value = strcmp(lexEl.string,"until");
#line 358 "metalang.met"
            if (Value > 0) {
#line 358 "metalang.met"
                Value = strcmp(lexEl.string,"with");
#line 358 "metalang.met"
                if (Value > 0) {
#line 358 "metalang.met"
                    if(!strcmp(lexEl.string,"without")) {
#line 358 "metalang.met"
                        return(WITHOUT) ;
#line 358 "metalang.met"
                    }
#line 358 "metalang.met"
                } else if (Value < 0) {
#line 358 "metalang.met"
                    Value = strcmp(lexEl.string,"while");
#line 358 "metalang.met"
                    if (Value > 0) {
#line 358 "metalang.met"
                        return(defaultValue);
#line 358 "metalang.met"
                    } else if (Value < 0) {
#line 358 "metalang.met"
                        if(!strcmp(lexEl.string,"use")) {
#line 358 "metalang.met"
                            return(USE) ;
#line 358 "metalang.met"
                        }
#line 358 "metalang.met"
                    } else 
#line 358 "metalang.met"
                        return(WHILE);
#line 358 "metalang.met"
                } else 
#line 358 "metalang.met"
                    return(WITH);
#line 358 "metalang.met"
            } else if (Value < 0) {
#line 358 "metalang.met"
                Value = strcmp(lexEl.string,"take");
#line 358 "metalang.met"
                if (Value > 0) {
#line 358 "metalang.met"
                    Value = strcmp(lexEl.string,"then");
#line 358 "metalang.met"
                    if (Value > 0) {
#line 358 "metalang.met"
                        return(defaultValue);
#line 358 "metalang.met"
                    } else if (Value < 0) {
#line 358 "metalang.met"
                        if(!strcmp(lexEl.string,"takel")) {
#line 358 "metalang.met"
                            return(TAKEL) ;
#line 358 "metalang.met"
                        }
#line 358 "metalang.met"
                    } else 
#line 358 "metalang.met"
                        return(THEN);
#line 358 "metalang.met"
                } else if (Value < 0) {
#line 358 "metalang.met"
                    Value = strcmp(lexEl.string,"stringlex");
#line 358 "metalang.met"
                    if (Value > 0) {
#line 358 "metalang.met"
                        return(defaultValue);
#line 358 "metalang.met"
                    } else if (Value < 0) {
#line 358 "metalang.met"
                        if(!strcmp(lexEl.string,"storel")) {
#line 358 "metalang.met"
                            return(STOREL) ;
#line 358 "metalang.met"
                        }
#line 358 "metalang.met"
                    } else 
#line 358 "metalang.met"
                        return(STRINGLEX);
#line 358 "metalang.met"
                } else 
#line 358 "metalang.met"
                    return(TAKE);
#line 358 "metalang.met"
            } else 
#line 358 "metalang.met"
                return(UNTIL);
#line 358 "metalang.met"
        } else if (Value < 0) {
#line 358 "metalang.met"
            Value = strcmp(lexEl.string,"resetl");
#line 358 "metalang.met"
            if (Value > 0) {
#line 358 "metalang.met"
                Value = strcmp(lexEl.string,"seel");
#line 358 "metalang.met"
                if (Value > 0) {
#line 358 "metalang.met"
                    if(!strcmp(lexEl.string,"skip")) {
#line 358 "metalang.met"
                        return(SKIP) ;
#line 358 "metalang.met"
                    }
#line 358 "metalang.met"
                } else if (Value < 0) {
#line 358 "metalang.met"
                    Value = strcmp(lexEl.string,"see");
#line 358 "metalang.met"
                    if (Value > 0) {
#line 358 "metalang.met"
                        return(defaultValue);
#line 358 "metalang.met"
                    } else if (Value < 0) {
#line 358 "metalang.met"
                        if(!strcmp(lexEl.string,"return")) {
#line 358 "metalang.met"
                            return(RETURN) ;
#line 358 "metalang.met"
                        }
#line 358 "metalang.met"
                    } else 
#line 358 "metalang.met"
                        return(SEE);
#line 358 "metalang.met"
                } else 
#line 358 "metalang.met"
                    return(SEEL);
#line 358 "metalang.met"
            } else if (Value < 0) {
#line 358 "metalang.met"
                Value = strcmp(lexEl.string,"recoverl");
#line 358 "metalang.met"
                if (Value > 0) {
#line 358 "metalang.met"
                    Value = strcmp(lexEl.string,"replacetree");
#line 358 "metalang.met"
                    if (Value > 0) {
#line 358 "metalang.met"
                        return(defaultValue);
#line 358 "metalang.met"
                    } else if (Value < 0) {
#line 358 "metalang.met"
                        if(!strcmp(lexEl.string,"repeat")) {
#line 358 "metalang.met"
                            return(REPEAT) ;
#line 358 "metalang.met"
                        }
#line 358 "metalang.met"
                    } else 
#line 358 "metalang.met"
                        return(REPLACETREE);
#line 358 "metalang.met"
                } else if (Value < 0) {
#line 358 "metalang.met"
                    Value = strcmp(lexEl.string,"recognize_string");
#line 358 "metalang.met"
                    if (Value > 0) {
#line 358 "metalang.met"
                        return(defaultValue);
#line 358 "metalang.met"
                    } else if (Value < 0) {
#line 358 "metalang.met"
                        if(!strcmp(lexEl.string,"or")) {
#line 358 "metalang.met"
                            return(OR) ;
#line 358 "metalang.met"
                        }
#line 358 "metalang.met"
                    } else 
#line 358 "metalang.met"
                        return(RECOGNIZE_STRING);
#line 358 "metalang.met"
                } else 
#line 358 "metalang.met"
                    return(RECOVERL);
#line 358 "metalang.met"
            } else 
#line 358 "metalang.met"
                return(RESETL);
#line 358 "metalang.met"
        } else 
#line 358 "metalang.met"
            return(STORE_COMMENT_LINE);
#line 358 "metalang.met"
    } else if (Value < 0) {
#line 358 "metalang.met"
        Value = strcmp(lexEl.string,"do");
#line 358 "metalang.met"
        if (Value > 0) {
#line 358 "metalang.met"
            Value = strcmp(lexEl.string,"if");
#line 358 "metalang.met"
            if (Value > 0) {
#line 358 "metalang.met"
                Value = strcmp(lexEl.string,"lexdefine");
#line 358 "metalang.met"
                if (Value > 0) {
#line 358 "metalang.met"
                    if(!strcmp(lexEl.string,"maketree")) {
#line 358 "metalang.met"
                        return(MAKETREE) ;
#line 358 "metalang.met"
                    }
#line 358 "metalang.met"
                } else if (Value < 0) {
#line 358 "metalang.met"
                    Value = strcmp(lexEl.string,"language");
#line 358 "metalang.met"
                    if (Value > 0) {
#line 358 "metalang.met"
                        return(defaultValue);
#line 358 "metalang.met"
                    } else if (Value < 0) {
#line 358 "metalang.met"
                        if(!strcmp(lexEl.string,"in")) {
#line 358 "metalang.met"
                            return(IN) ;
#line 358 "metalang.met"
                        }
#line 358 "metalang.met"
                    } else 
#line 358 "metalang.met"
                        return(LANGUAGE);
#line 358 "metalang.met"
                } else 
#line 358 "metalang.met"
                    return(LEXDEFINE);
#line 358 "metalang.met"
            } else if (Value < 0) {
#line 358 "metalang.met"
                Value = strcmp(lexEl.string,"forget");
#line 358 "metalang.met"
                if (Value > 0) {
#line 358 "metalang.met"
                    Value = strcmp(lexEl.string,"global");
#line 358 "metalang.met"
                    if (Value > 0) {
#line 358 "metalang.met"
                        return(defaultValue);
#line 358 "metalang.met"
                    } else if (Value < 0) {
#line 358 "metalang.met"
                        if(!strcmp(lexEl.string,"forgetl")) {
#line 358 "metalang.met"
                            return(FORGETL) ;
#line 358 "metalang.met"
                        }
#line 358 "metalang.met"
                    } else 
#line 358 "metalang.met"
                        return(GLOBAL);
#line 358 "metalang.met"
                } else if (Value < 0) {
#line 358 "metalang.met"
                    Value = strcmp(lexEl.string,"end");
#line 358 "metalang.met"
                    if (Value > 0) {
#line 358 "metalang.met"
                        return(defaultValue);
#line 358 "metalang.met"
                    } else if (Value < 0) {
#line 358 "metalang.met"
                        if(!strcmp(lexEl.string,"else")) {
#line 358 "metalang.met"
                            return(ELSE) ;
#line 358 "metalang.met"
                        }
#line 358 "metalang.met"
                    } else 
#line 358 "metalang.met"
                        return(END);
#line 358 "metalang.met"
                } else 
#line 358 "metalang.met"
                    return(FORGET);
#line 358 "metalang.met"
            } else 
#line 358 "metalang.met"
                return(IF);
#line 358 "metalang.met"
        } else if (Value < 0) {
#line 358 "metalang.met"
            Value = strcmp(lexEl.string,"case");
#line 358 "metalang.met"
            if (Value > 0) {
#line 358 "metalang.met"
                Value = strcmp(lexEl.string,"declare");
#line 358 "metalang.met"
                if (Value > 0) {
#line 358 "metalang.met"
                    Value = strcmp(lexEl.string,"define");
#line 358 "metalang.met"
                    if (Value > 0) {
#line 358 "metalang.met"
                        return(defaultValue);
#line 358 "metalang.met"
                    } else if (Value < 0) {
#line 358 "metalang.met"
                        if(!strcmp(lexEl.string,"default")) {
#line 358 "metalang.met"
                            return(DEFAULT) ;
#line 358 "metalang.met"
                        }
#line 358 "metalang.met"
                    } else 
#line 358 "metalang.met"
                        return(DEFINE);
#line 358 "metalang.met"
                } else if (Value < 0) {
#line 358 "metalang.met"
                    Value = strcmp(lexEl.string,"context");
#line 358 "metalang.met"
                    if (Value > 0) {
#line 358 "metalang.met"
                        return(defaultValue);
#line 358 "metalang.met"
                    } else if (Value < 0) {
#line 358 "metalang.met"
                        if(!strcmp(lexEl.string,"constant")) {
#line 358 "metalang.met"
                            return(CONSTANT) ;
#line 358 "metalang.met"
                        }
#line 358 "metalang.met"
                    } else 
#line 358 "metalang.met"
                        return(CONTEXT);
#line 358 "metalang.met"
                } else 
#line 358 "metalang.met"
                    return(DECLARE);
#line 358 "metalang.met"
            } else if (Value < 0) {
#line 358 "metalang.met"
                Value = strcmp(lexEl.string,"at_beginning");
#line 358 "metalang.met"
                if (Value > 0) {
#line 358 "metalang.met"
                    Value = strcmp(lexEl.string,"break");
#line 358 "metalang.met"
                    if (Value > 0) {
#line 358 "metalang.met"
                        return(defaultValue);
#line 358 "metalang.met"
                    } else if (Value < 0) {
#line 358 "metalang.met"
                        if(!strcmp(lexEl.string,"begin")) {
#line 358 "metalang.met"
                            return(BEGIN) ;
#line 358 "metalang.met"
                        }
#line 358 "metalang.met"
                    } else 
#line 358 "metalang.met"
                        return(BREAK);
#line 358 "metalang.met"
                } else if (Value < 0) {
#line 358 "metalang.met"
                    Value = strcmp(lexEl.string,"and");
#line 358 "metalang.met"
                    if (Value > 0) {
#line 358 "metalang.met"
                        return(defaultValue);
#line 358 "metalang.met"
                    } else if (Value < 0) {
#line 358 "metalang.met"
                        if(!strcmp(lexEl.string,"addlist")) {
#line 358 "metalang.met"
                            return(ADDLIST) ;
#line 358 "metalang.met"
                        }
#line 358 "metalang.met"
                    } else 
#line 358 "metalang.met"
                        return(AND);
#line 358 "metalang.met"
                } else 
#line 358 "metalang.met"
                    return(AT_BEGINNING);
#line 358 "metalang.met"
            } else 
#line 358 "metalang.met"
                return(CASE);
#line 358 "metalang.met"
        } else 
#line 358 "metalang.met"
            return(DO);
#line 358 "metalang.met"
    } else 
#line 358 "metalang.met"
        return(NOT);
#line 358 "metalang.met"
    return(defaultValue);
#line 358 "metalang.met"
}
#line 358 "metalang.met"

#line 358 "metalang.met"
int metalang::UpSortKeyWord(int value) 
#line 358 "metalang.met"
{
#line 358 "metalang.met"
    register char * ptSource=lexEl.string;
#line 358 "metalang.met"
    for (;*ptSource;ptSource++) *ptSource = toupper(*ptSource);
#line 358 "metalang.met"
    PUT_COORD_CALL;
#line 358 "metalang.met"
    return SortKeyWord (value);
#line 358 "metalang.met"
}
#line 358 "metalang.met"
#line 157 "metalang.met"
int metalang::Lex ()
#line 157 "metalang.met"
{
#line 157 "metalang.met"
    if ( lastContextPos && !lastContextPos -> nbRef )
#line 157 "metalang.met"
        FreePos(lastContextPos);
#line 157 "metalang.met"
        lastContextPos = (PFILE_POSITION)0 ;
#line 157 "metalang.met"
        if ( tokenAhead)
#line 157 "metalang.met"
            ExtUnputBuf();
#line 157 "metalang.met"
        #ifdef DUMP_COORD
#line 157 "metalang.met"
        if(!lexCallLex && dumpCoord) store_pos_as_comment(line,col,0);
#line 157 "metalang.met"
        #endif
#line 157 "metalang.met"
        
#line 157 "metalang.met"
        char * _ptString ;
#line 157 "metalang.met"
        int _nbCharact ;
#line 157 "metalang.met"
        int _bidon = (oldLine = line,oldCol = col );
#line 157 "metalang.met"
        int _bidon1 = (oldLineEntry = line, oldColEntry = col );
#line 157 "metalang.met"
        tokenAhead = 0;
#line 157 "metalang.met"
        if(LexMeta() != -1){tokenAhead =1; return 1;}
#line 157 "metalang.met"
#line 157 "metalang.met"
        ptStockBuf = -1;
#line 157 "metalang.met"
        while ((c == ' ')||(c == '\t')||(c == '\r')||(c == '\n'))
#line 157 "metalang.met"
            NextChar() ;
#line 157 "metalang.met"
        ptStockBuf = -1;
#line 157 "metalang.met"
        *lexEl.string = '\0';
#line 157 "metalang.met"
        _nbCharact = 0;
#line 157 "metalang.met"
        tokenAhead = 0;
#line 157 "metalang.met"
        _ptString = lexEl.string ;
#line 157 "metalang.met"
        oldLine=line,oldCol=col;
#line 157 "metalang.met"
        if ( !lexCallLex) {
#line 157 "metalang.met"
            PUT_COORD_CALL;
#line 157 "metalang.met"
        }
#line 157 "metalang.met"
#line 159 "metalang.met"
        switch(c) {
#line 159 "metalang.met"
            case '{' :
#line 159 "metalang.met"
                NextChar();
#line 159 "metalang.met"
                if (GetStringS("{",1)) {
#line 159 "metalang.met"
                    lexEl.Value = metalang::AOUVAOUV;
#line 159 "metalang.met"
                    *_ptString = '\0' ;
#line 159 "metalang.met"
                    firstOnLine = 0;
#line 159 "metalang.met"
                    tokenAhead = 1;
#line 159 "metalang.met"
                    PUT_COORD_CALL;
#line 159 "metalang.met"
                    return(1);
#line 159 "metalang.met"
                } else {
#line 159 "metalang.met"
                    UnputChar(1);
#line 159 "metalang.met"
                    goto _exitDumpToken0;
#line 159 "metalang.met"
                }
#line 159 "metalang.met"
                break;
#line 159 "metalang.met"
            case '}' :
#line 159 "metalang.met"
                NextChar();
#line 159 "metalang.met"
                if (GetStringS("}",1)) {
#line 159 "metalang.met"
                    lexEl.Value = metalang::AFERAFER;
#line 159 "metalang.met"
                    *_ptString = '\0' ;
#line 159 "metalang.met"
                    firstOnLine = 0;
#line 159 "metalang.met"
                    tokenAhead = 1;
#line 159 "metalang.met"
                    PUT_COORD_CALL;
#line 159 "metalang.met"
                    return(1);
#line 159 "metalang.met"
                } else {
#line 159 "metalang.met"
                    UnputChar(1);
#line 159 "metalang.met"
                    goto _exitDumpToken0;
#line 159 "metalang.met"
                }
#line 159 "metalang.met"
                break;
#line 159 "metalang.met"
            case ';' :
#line 159 "metalang.met"
                NextChar();
#line 159 "metalang.met"
                lexEl.Value = metalang::PVIR;
#line 159 "metalang.met"
                *_ptString = '\0' ;
#line 159 "metalang.met"
                firstOnLine = 0;
#line 159 "metalang.met"
                tokenAhead = 1;
#line 159 "metalang.met"
                PUT_COORD_CALL;
#line 159 "metalang.met"
                return(1);
#line 159 "metalang.met"
                break;
#line 159 "metalang.met"
            case '[' :
#line 159 "metalang.met"
                NextChar();
#line 159 "metalang.met"
                lexEl.Value = metalang::COUV;
#line 159 "metalang.met"
                *_ptString = '\0' ;
#line 159 "metalang.met"
                firstOnLine = 0;
#line 159 "metalang.met"
                tokenAhead = 1;
#line 159 "metalang.met"
                PUT_COORD_CALL;
#line 159 "metalang.met"
                return(1);
#line 159 "metalang.met"
                break;
#line 159 "metalang.met"
            case ']' :
#line 159 "metalang.met"
                NextChar();
#line 159 "metalang.met"
                lexEl.Value = metalang::CFER;
#line 159 "metalang.met"
                *_ptString = '\0' ;
#line 159 "metalang.met"
                firstOnLine = 0;
#line 159 "metalang.met"
                tokenAhead = 1;
#line 159 "metalang.met"
                PUT_COORD_CALL;
#line 159 "metalang.met"
                return(1);
#line 159 "metalang.met"
                break;
#line 159 "metalang.met"
            case ',' :
#line 159 "metalang.met"
                NextChar();
#line 159 "metalang.met"
                lexEl.Value = metalang::VIRG;
#line 159 "metalang.met"
                *_ptString = '\0' ;
#line 159 "metalang.met"
                firstOnLine = 0;
#line 159 "metalang.met"
                tokenAhead = 1;
#line 159 "metalang.met"
                PUT_COORD_CALL;
#line 159 "metalang.met"
                return(1);
#line 159 "metalang.met"
                break;
#line 159 "metalang.met"
            case '(' :
#line 159 "metalang.met"
                NextChar();
#line 159 "metalang.met"
                lexEl.Value = metalang::POUV;
#line 159 "metalang.met"
                *_ptString = '\0' ;
#line 159 "metalang.met"
                firstOnLine = 0;
#line 159 "metalang.met"
                tokenAhead = 1;
#line 159 "metalang.met"
                PUT_COORD_CALL;
#line 159 "metalang.met"
                return(1);
#line 159 "metalang.met"
                break;
#line 159 "metalang.met"
            case ')' :
#line 159 "metalang.met"
                NextChar();
#line 159 "metalang.met"
                lexEl.Value = metalang::PFER;
#line 159 "metalang.met"
                *_ptString = '\0' ;
#line 159 "metalang.met"
                firstOnLine = 0;
#line 159 "metalang.met"
                tokenAhead = 1;
#line 159 "metalang.met"
                PUT_COORD_CALL;
#line 159 "metalang.met"
                return(1);
#line 159 "metalang.met"
                break;
#line 159 "metalang.met"
            case '#' :
#line 159 "metalang.met"
                NextChar();
#line 159 "metalang.met"
                lexEl.Value = metalang::DIES;
#line 159 "metalang.met"
                *_ptString = '\0' ;
#line 159 "metalang.met"
                firstOnLine = 0;
#line 159 "metalang.met"
                tokenAhead = 1;
#line 159 "metalang.met"
                PUT_COORD_CALL;
#line 159 "metalang.met"
                return(1);
#line 159 "metalang.met"
                break;
#line 159 "metalang.met"
            case '!' :
#line 159 "metalang.met"
                NextChar();
#line 159 "metalang.met"
                lexEl.Value = metalang::EXCL;
#line 159 "metalang.met"
                *_ptString = '\0' ;
#line 159 "metalang.met"
                firstOnLine = 0;
#line 159 "metalang.met"
                tokenAhead = 1;
#line 159 "metalang.met"
                PUT_COORD_CALL;
#line 159 "metalang.met"
                return(1);
#line 159 "metalang.met"
                break;
#line 159 "metalang.met"
            case '.' :
#line 159 "metalang.met"
                NextChar();
#line 159 "metalang.met"
                lexEl.Value = metalang::POIN;
#line 159 "metalang.met"
                *_ptString = '\0' ;
#line 159 "metalang.met"
                firstOnLine = 0;
#line 159 "metalang.met"
                tokenAhead = 1;
#line 159 "metalang.met"
                PUT_COORD_CALL;
#line 159 "metalang.met"
                return(1);
#line 159 "metalang.met"
                break;
#line 159 "metalang.met"
            case '=' :
#line 159 "metalang.met"
                NextChar();
#line 159 "metalang.met"
                lexEl.Value = metalang::EGAL;
#line 159 "metalang.met"
                *_ptString = '\0' ;
#line 159 "metalang.met"
                firstOnLine = 0;
#line 159 "metalang.met"
                tokenAhead = 1;
#line 159 "metalang.met"
                PUT_COORD_CALL;
#line 159 "metalang.met"
                return(1);
#line 159 "metalang.met"
                break;
#line 159 "metalang.met"
            case ':' :
#line 159 "metalang.met"
                NextChar();
#line 159 "metalang.met"
                lexEl.Value = metalang::DPOI;
#line 159 "metalang.met"
                *_ptString = '\0' ;
#line 159 "metalang.met"
                firstOnLine = 0;
#line 159 "metalang.met"
                tokenAhead = 1;
#line 159 "metalang.met"
                PUT_COORD_CALL;
#line 159 "metalang.met"
                return(1);
#line 159 "metalang.met"
                break;
#line 159 "metalang.met"
            _exitDumpToken0 :;
#line 159 "metalang.met"
            default :
#line 159 "metalang.met"
                break;
#line 159 "metalang.met"
        }
#line 159 "metalang.met"
        if(ptStockBuf > -1) UnputBuf ();
#line 159 "metalang.met"
        *lexEl.string = '\0';
#line 159 "metalang.met"
        _nbCharact = 0;
#line 159 "metalang.met"
        tokenAhead = 0;
#line 159 "metalang.met"
        if ( lastContextPos && !lastContextPos->nbRef) FreePos(lastContextPos);
#line 159 "metalang.met"
        lastContextPos = (PFILE_POSITION) 0 ;
#line 159 "metalang.met"
        _ptString = lexEl.string ;
#line 159 "metalang.met"
#line 160 "metalang.met"
#line 161 "metalang.met"
        if(((('a' <= c && c <= 'z')||('A' <= c && c <= 'Z')))){
#line 161 "metalang.met"
#line 161 "metalang.met"
#line 163 "metalang.met"
            while ((('a' <= c && c <= 'z')||('A' <= c && c <= 'Z')||(c == '_')||('0' <= c && c <= '9'))) { 
#line 163 "metalang.met"
#line 164 "metalang.met"
#line 165 "metalang.met"
                {
#line 165 "metalang.met"
                    if (_nbCharact++ < MAXLENGTH) *_ptString++ = c;
#line 165 "metalang.met"
                    NextChar();
#line 165 "metalang.met"
                }
#line 165 "metalang.met"
#line 166 "metalang.met"
                if (GetString("::",1)&& NextChar()){
#line 166 "metalang.met"
#line 166 "metalang.met"
                    {
#line 166 "metalang.met"
                        if (_nbCharact + strlen("::") < MAXLENGTH) 
#line 166 "metalang.met"
                            strcpy(_ptString,"::");
#line 166 "metalang.met"
                        _nbCharact += strlen("::");_ptString = lexEl.string + _nbCharact;
#line 166 "metalang.met"
                    
#line 166 "metalang.met"
                    }
#line 166 "metalang.met"
                }
#line 166 "metalang.met"
#line 166 "metalang.met"
            } 
#line 166 "metalang.met"
#line 168 "metalang.met"
            {
#line 168 "metalang.met"
                *_ptString = '\0' ;
#line 168 "metalang.met"
                firstOnLine = 0 ; 
#line 168 "metalang.met"
                tokenAhead =1;
#line 168 "metalang.met"
                lexEl.Value = (SortKeyWord (IDENT ));
#line 168 "metalang.met"
                PUT_COORD_CALL;
#line 168 "metalang.met"
                return(1);
#line 168 "metalang.met"
            }
#line 168 "metalang.met"
        } else 
#line 168 "metalang.met"
#line 170 "metalang.met"
        if((((c == '"'))&& NextChar())){
#line 170 "metalang.met"
#line 170 "metalang.met"
            while (c != EOF) { 
#line 170 "metalang.met"
#line 172 "metalang.met"
                switch (c) {
#line 172 "metalang.met"
#line 173 "metalang.met"
                    case '"' :
#line 173 "metalang.met"
                        NextChar();
#line 173 "metalang.met"
#line 174 "metalang.met"
                        if (((c == '"'))){
#line 174 "metalang.met"
#line 175 "metalang.met"
                            {
#line 175 "metalang.met"
                                if (_nbCharact++ < MAXLENGTH) *_ptString++ = c;
#line 175 "metalang.met"
                                NextChar();
#line 175 "metalang.met"
                            }
#line 175 "metalang.met"
                        } else {
#line 175 "metalang.met"
#line 177 "metalang.met"
#line 178 "metalang.met"
                            {
#line 178 "metalang.met"
                                *_ptString = '\0' ;
#line 178 "metalang.met"
                                firstOnLine = 0 ; 
#line 178 "metalang.met"
                                tokenAhead =1;
#line 178 "metalang.met"
                                lexEl.Value=STRING;
#line 178 "metalang.met"
                                PUT_COORD_CALL;
#line 178 "metalang.met"
                                return(1);
#line 178 "metalang.met"
                            }
#line 178 "metalang.met"
                        }
#line 178 "metalang.met"
                        break ;
#line 178 "metalang.met"
#line 181 "metalang.met"
                    default : 
#line 181 "metalang.met"
                         if (c!= EOF) {
#line 181 "metalang.met"
#line 181 "metalang.met"
                            {
#line 181 "metalang.met"
                                if (_nbCharact++ < MAXLENGTH) *_ptString++ = c;
#line 181 "metalang.met"
                                NextChar();
#line 181 "metalang.met"
                            }
#line 181 "metalang.met"
                        }
#line 181 "metalang.met"
                        break ;
#line 181 "metalang.met"
                }
#line 181 "metalang.met"
            } 
#line 181 "metalang.met"
        } else 
#line 181 "metalang.met"
#line 183 "metalang.met"
        if((GetString("'",1)&& NextChar())){
#line 183 "metalang.met"
#line 183 "metalang.met"
            while (c != EOF) { 
#line 183 "metalang.met"
#line 185 "metalang.met"
#line 186 "metalang.met"
                if((GetString("'",1)&& NextChar())){
#line 186 "metalang.met"
#line 187 "metalang.met"
#line 188 "metalang.met"
                    {
#line 188 "metalang.met"
                        *_ptString = '\0' ;
#line 188 "metalang.met"
                        firstOnLine = 0 ; 
#line 188 "metalang.met"
                        tokenAhead =1;
#line 188 "metalang.met"
                        lexEl.Value=CHARACTER;
#line 188 "metalang.met"
                        PUT_COORD_CALL;
#line 188 "metalang.met"
                        return(1);
#line 188 "metalang.met"
                    }
#line 188 "metalang.met"
                } else 
#line 188 "metalang.met"
#line 190 "metalang.met"
                if((((c == '\\'))&& NextChar())){
#line 190 "metalang.met"
#line 191 "metalang.met"
#line 192 "metalang.met"
                    {
#line 192 "metalang.met"
                        if (_nbCharact + strlen("\\") < MAXLENGTH) 
#line 192 "metalang.met"
                            strcpy(_ptString,"\\");
#line 192 "metalang.met"
                        _nbCharact += strlen("\\");_ptString = lexEl.string + _nbCharact;
#line 192 "metalang.met"
                    
#line 192 "metalang.met"
                    }
#line 192 "metalang.met"
#line 193 "metalang.met"
                    {
#line 193 "metalang.met"
                        if (_nbCharact++ < MAXLENGTH) *_ptString++ = c;
#line 193 "metalang.met"
                        NextChar();
#line 193 "metalang.met"
                    }
#line 193 "metalang.met"
#line 193 "metalang.met"
                } else 
#line 193 "metalang.met"
#line 195 "metalang.met"
                if((c != EOF)){
#line 195 "metalang.met"
#line 195 "metalang.met"
                    {
#line 195 "metalang.met"
                        if (_nbCharact++ < MAXLENGTH) *_ptString++ = c;
#line 195 "metalang.met"
                        NextChar();
#line 195 "metalang.met"
                    }
#line 195 "metalang.met"
                } else 
#line 195 "metalang.met"
                 ;
#line 195 "metalang.met"
            } 
#line 195 "metalang.met"
        } else 
#line 195 "metalang.met"
#line 197 "metalang.met"
        if(((('0' <= c && c <= '9')))){
#line 197 "metalang.met"
#line 197 "metalang.met"
#line 199 "metalang.met"
            while ((('0' <= c && c <= '9'))) { 
#line 199 "metalang.met"
#line 200 "metalang.met"
                {
#line 200 "metalang.met"
                    if (_nbCharact++ < MAXLENGTH) *_ptString++ = c;
#line 200 "metalang.met"
                    NextChar();
#line 200 "metalang.met"
                }
#line 200 "metalang.met"
            } 
#line 200 "metalang.met"
#line 201 "metalang.met"
            {
#line 201 "metalang.met"
                *_ptString = '\0' ;
#line 201 "metalang.met"
                firstOnLine = 0 ; 
#line 201 "metalang.met"
                tokenAhead =1;
#line 201 "metalang.met"
                lexEl.Value=NUMB;
#line 201 "metalang.met"
                PUT_COORD_CALL;
#line 201 "metalang.met"
                return(1);
#line 201 "metalang.met"
            }
#line 201 "metalang.met"
        } else 
#line 201 "metalang.met"
         ;
#line 201 "metalang.met"
#line 204 "metalang.met"
        line = oldLine;
#line 204 "metalang.met"
        LEX_EXIT(0,"")
#line 204 "metalang.met"
        lexEl.Value = -1 ;
#line 204 "metalang.met"
        return -1 ; 
#line 204 "metalang.met"
    }
#line 204 "metalang.met"
    
#line 204 "metalang.met"
#line 51 "metalang.met"
    int metalang::LexAsitContent ()
#line 51 "metalang.met"
    {
#line 51 "metalang.met"
        if ( lastContextPos && !lastContextPos -> nbRef )
#line 51 "metalang.met"
            FreePos(lastContextPos);
#line 51 "metalang.met"
            lastContextPos = (PFILE_POSITION)0 ;
#line 51 "metalang.met"
            if ( tokenAhead)
#line 51 "metalang.met"
                ExtUnputBuf();
#line 51 "metalang.met"
            #ifdef DUMP_COORD
#line 51 "metalang.met"
            if(!lexCallLex && dumpCoord) store_pos_as_comment(line,col,0);
#line 51 "metalang.met"
            #endif
#line 51 "metalang.met"
            
#line 51 "metalang.met"
            char * _ptString ;
#line 51 "metalang.met"
            int _nbCharact ;
#line 51 "metalang.met"
            int _bidon = (oldLine = line,oldCol = col );
#line 51 "metalang.met"
            int _bidon1 = (oldLineEntry = line, oldColEntry = col );
#line 51 "metalang.met"
            tokenAhead = 0;
#line 51 "metalang.met"
            if(LexMeta() != -1){tokenAhead =2; return 1;}
#line 51 "metalang.met"
#line 51 "metalang.met"
            ptStockBuf = -1;
#line 51 "metalang.met"
            while ((c == '\r')||(c == '\n'))
#line 51 "metalang.met"
                NextChar() ;
#line 51 "metalang.met"
            ptStockBuf = -1;
#line 51 "metalang.met"
            *lexEl.string = '\0';
#line 51 "metalang.met"
            _nbCharact = 0;
#line 51 "metalang.met"
            tokenAhead = 0;
#line 51 "metalang.met"
            _ptString = lexEl.string ;
#line 51 "metalang.met"
            oldLine=line,oldCol=col;
#line 51 "metalang.met"
            if ( !lexCallLex) {
#line 51 "metalang.met"
                PUT_COORD_CALL;
#line 51 "metalang.met"
            }
#line 51 "metalang.met"
#line 53 "metalang.met"
            if (! (GetString("}}",0))){
#line 53 "metalang.met"
#line 54 "metalang.met"
#line 55 "metalang.met"
                while ((c != EOF) && 
#line 55 "metalang.met"
                      (! (GetString("}}",0)))) { 
#line 55 "metalang.met"
#line 56 "metalang.met"
#line 57 "metalang.met"
                    if (! (((c == '\r')||(c == '\n')))){
#line 57 "metalang.met"
#line 58 "metalang.met"
                        {
#line 58 "metalang.met"
                            if (_nbCharact++ < MAXLENGTH) *_ptString++ = c;
#line 58 "metalang.met"
                            NextChar();
#line 58 "metalang.met"
                        }
#line 58 "metalang.met"
                    } else {
#line 58 "metalang.met"
#line 60 "metalang.met"
                        if (!(c != EOF&& NextChar())) ;
#line 60 "metalang.met"
                    }
#line 60 "metalang.met"
#line 61 "metalang.met"
                    if (col == 1 ){
#line 61 "metalang.met"
#line 62 "metalang.met"
                        {
#line 62 "metalang.met"
                            *_ptString = '\0' ;
#line 62 "metalang.met"
                            firstOnLine = 0 ; 
#line 62 "metalang.met"
                            tokenAhead =2;
#line 62 "metalang.met"
                            lexEl.Value=ASIT_CONTENT;
#line 62 "metalang.met"
                            PUT_COORD_CALL;
#line 62 "metalang.met"
                            return(1);
#line 62 "metalang.met"
                        }
#line 62 "metalang.met"
                    }
#line 62 "metalang.met"
#line 62 "metalang.met"
                } 
#line 62 "metalang.met"
#line 64 "metalang.met"
                {
#line 64 "metalang.met"
                    *_ptString = '\0' ;
#line 64 "metalang.met"
                    firstOnLine = 0 ; 
#line 64 "metalang.met"
                    tokenAhead =2;
#line 64 "metalang.met"
                    lexEl.Value=ASIT_CONTENT;
#line 64 "metalang.met"
                    PUT_COORD_CALL;
#line 64 "metalang.met"
                    return(1);
#line 64 "metalang.met"
                }
#line 64 "metalang.met"
#line 64 "metalang.met"
#line 64 "metalang.met"
            }
#line 64 "metalang.met"
#line 64 "metalang.met"
#line 65 "metalang.met"
            line = oldLine;
#line 65 "metalang.met"
            LEX_EXIT(0,"")
#line 65 "metalang.met"
            lexEl.Value = -1 ;
#line 65 "metalang.met"
            return -1 ; 
#line 65 "metalang.met"
        }
#line 65 "metalang.met"
        
#line 65 "metalang.met"
#line 68 "metalang.met"
        int metalang::LexComment ()
#line 68 "metalang.met"
        {
#line 68 "metalang.met"
            if ( lastContextPos && !lastContextPos -> nbRef )
#line 68 "metalang.met"
                FreePos(lastContextPos);
#line 68 "metalang.met"
                lastContextPos = (PFILE_POSITION)0 ;
#line 68 "metalang.met"
                if ( tokenAhead)
#line 68 "metalang.met"
                    ExtUnputBuf();
#line 68 "metalang.met"
                #ifdef DUMP_COORD
#line 68 "metalang.met"
                if(!lexCallLex && dumpCoord) store_pos_as_comment(line,col,0);
#line 68 "metalang.met"
                #endif
#line 68 "metalang.met"
                
#line 68 "metalang.met"
                char * _ptString ;
#line 68 "metalang.met"
                int _nbCharact ;
#line 68 "metalang.met"
                int _bidon = (oldLine = line,oldCol = col );
#line 68 "metalang.met"
                int _bidon1 = (oldLineEntry = line, oldColEntry = col );
#line 68 "metalang.met"
#line 69 "metalang.met"
                if (keepSpace){
#line 69 "metalang.met"
#line 70 "metalang.met"
                    ptStockBuf = -1;
#line 70 "metalang.met"
                    while ((c == '\r')||(c == '\n'))
#line 70 "metalang.met"
                        NextChar() ;
#line 70 "metalang.met"
                    ptStockBuf = -1;
#line 70 "metalang.met"
                    *lexEl.string = '\0';
#line 70 "metalang.met"
                    _nbCharact = 0;
#line 70 "metalang.met"
                    tokenAhead = 0;
#line 70 "metalang.met"
                    _ptString = lexEl.string ;
#line 70 "metalang.met"
                    oldLine=line,oldCol=col;
#line 70 "metalang.met"
                    if ( !lexCallLex) {
#line 70 "metalang.met"
                        PUT_COORD_CALL;
#line 70 "metalang.met"
                    }
#line 70 "metalang.met"
#line 70 "metalang.met"
                } else {
#line 70 "metalang.met"
#line 72 "metalang.met"
                    ptStockBuf = -1;
#line 72 "metalang.met"
                    while ((c == ' ')||(c == '\t')||(c == '\r')||(c == '\n'))
#line 72 "metalang.met"
                        NextChar() ;
#line 72 "metalang.met"
                    ptStockBuf = -1;
#line 72 "metalang.met"
                    *lexEl.string = '\0';
#line 72 "metalang.met"
                    _nbCharact = 0;
#line 72 "metalang.met"
                    tokenAhead = 0;
#line 72 "metalang.met"
                    _ptString = lexEl.string ;
#line 72 "metalang.met"
                    oldLine=line,oldCol=col;
#line 72 "metalang.met"
                    if ( !lexCallLex) {
#line 72 "metalang.met"
                        PUT_COORD_CALL;
#line 72 "metalang.met"
                    }
#line 72 "metalang.met"
                }
#line 72 "metalang.met"
#line 73 "metalang.met"
#line 74 "metalang.met"
                if((GetString("/*",1)&& NextChar())){
#line 74 "metalang.met"
#line 74 "metalang.met"
#line 76 "metalang.met"
                     {int level = 0; 
#line 76 "metalang.met"
#line 77 "metalang.met"
                    begin_comment ();
#line 77 "metalang.met"
#line 78 "metalang.met"
                    while (c != EOF) { 
#line 78 "metalang.met"
#line 79 "metalang.met"
#line 80 "metalang.met"
                        if((GetString("/*",1)&& NextChar())){
#line 80 "metalang.met"
#line 81 "metalang.met"
#line 82 "metalang.met"
                             level ++; 
#line 82 "metalang.met"
#line 83 "metalang.met"
                            {
#line 83 "metalang.met"
                                if (_nbCharact + strlen("/*") < MAXLENGTH) 
#line 83 "metalang.met"
                                    strcpy(_ptString,"/*");
#line 83 "metalang.met"
                                _nbCharact += strlen("/*");_ptString = lexEl.string + _nbCharact;
#line 83 "metalang.met"
                            
#line 83 "metalang.met"
                            }
#line 83 "metalang.met"
                        } else 
#line 83 "metalang.met"
#line 85 "metalang.met"
                        if((GetString("*/",1)&& NextChar())){
#line 85 "metalang.met"
#line 86 "metalang.met"
#line 87 "metalang.met"
                            if (!level){
#line 87 "metalang.met"
#line 88 "metalang.met"
#line 89 "metalang.met"
                                {
#line 89 "metalang.met"
                                    store_comment_line(_nbCharact);
#line 89 "metalang.met"
                                    _nbCharact = 0 ;
#line 89 "metalang.met"
                                    _ptString = lexEl.string; 
#line 89 "metalang.met"
                                    ptStockBuf = -1 ;
#line 89 "metalang.met"
                                }
#line 89 "metalang.met"
#line 90 "metalang.met"
                                {
#line 90 "metalang.met"
                                    *_ptString = '\0' ;
#line 90 "metalang.met"
                                    firstOnLine = 0 ; 
#line 90 "metalang.met"
                                    tokenAhead =3;
#line 90 "metalang.met"
                                     tokenAhead = 0 ; 
#line 90 "metalang.met"
                                     lexCallLex = 1 ; 
#line 90 "metalang.met"
                                    return _Tak(LexComment)();
#line 90 "metalang.met"
                                }
#line 90 "metalang.met"
#line 90 "metalang.met"
#line 90 "metalang.met"
                            } else {
#line 90 "metalang.met"
#line 93 "metalang.met"
#line 94 "metalang.met"
                                level --;
#line 94 "metalang.met"
#line 95 "metalang.met"
                                {
#line 95 "metalang.met"
                                    if (_nbCharact + strlen("*/") < MAXLENGTH) 
#line 95 "metalang.met"
                                        strcpy(_ptString,"*/");
#line 95 "metalang.met"
                                    _nbCharact += strlen("*/");_ptString = lexEl.string + _nbCharact;
#line 95 "metalang.met"
                                
#line 95 "metalang.met"
                                }
#line 95 "metalang.met"
                            }
#line 95 "metalang.met"
                        } else 
#line 95 "metalang.met"
#line 98 "metalang.met"
                        if((((c == '\n'))&& NextChar())){
#line 98 "metalang.met"
#line 99 "metalang.met"
                            {
#line 99 "metalang.met"
                                store_comment_line(_nbCharact);
#line 99 "metalang.met"
                                _nbCharact = 0 ;
#line 99 "metalang.met"
                                _ptString = lexEl.string; 
#line 99 "metalang.met"
                                ptStockBuf = -1 ;
#line 99 "metalang.met"
                            }
#line 99 "metalang.met"
                        } else 
#line 99 "metalang.met"
#line 100 "metalang.met"
                        if((((c == '\r'))&& NextChar())){
#line 100 "metalang.met"
#line 100 "metalang.met"
                        } else 
#line 100 "metalang.met"
#line 104 "metalang.met"
                        if((c != EOF)){
#line 104 "metalang.met"
#line 103 "metalang.met"
#line 104 "metalang.met"
                            {
#line 104 "metalang.met"
                                if (_nbCharact++ < MAXLENGTH) *_ptString++ = c;
#line 104 "metalang.met"
                                NextChar();
#line 104 "metalang.met"
                            }
#line 104 "metalang.met"
#line 104 "metalang.met"
                        } else 
#line 104 "metalang.met"
                         ;
#line 104 "metalang.met"
                    } 
#line 104 "metalang.met"
#line 107 "metalang.met"
                    } 
#line 107 "metalang.met"
#line 107 "metalang.met"
                } else 
#line 107 "metalang.met"
                 ;
#line 107 "metalang.met"
#line 110 "metalang.met"
                if ( lexCallLex) {PUT_COORD_AFTER_COMMENTS_CALL;
#line 110 "metalang.met"
                }line = oldLine;
#line 110 "metalang.met"
                LEX_EXIT(0,"")
#line 110 "metalang.met"
                lexEl.Value = -1 ;
#line 110 "metalang.met"
                return -1 ; 
#line 110 "metalang.met"
            }
#line 110 "metalang.met"
            
#line 110 "metalang.met"
#line 44 "metalang.met"
            int metalang::LexEndLine ()
#line 44 "metalang.met"
            {
#line 44 "metalang.met"
                if ( lastContextPos && !lastContextPos -> nbRef )
#line 44 "metalang.met"
                    FreePos(lastContextPos);
#line 44 "metalang.met"
                    lastContextPos = (PFILE_POSITION)0 ;
#line 44 "metalang.met"
                    if ( tokenAhead)
#line 44 "metalang.met"
                        ExtUnputBuf();
#line 44 "metalang.met"
                    #ifdef DUMP_COORD
#line 44 "metalang.met"
                    if(!lexCallLex && dumpCoord) store_pos_as_comment(line,col,0);
#line 44 "metalang.met"
                    #endif
#line 44 "metalang.met"
                    
#line 44 "metalang.met"
                    char * _ptString ;
#line 44 "metalang.met"
                    int _nbCharact ;
#line 44 "metalang.met"
                    int _bidon = (oldLine = line,oldCol = col );
#line 44 "metalang.met"
                    int _bidon1 = (oldLineEntry = line, oldColEntry = col );
#line 44 "metalang.met"
                    tokenAhead = 0;
#line 44 "metalang.met"
                    if(LexMeta() != -1){tokenAhead =4; return 1;}
#line 44 "metalang.met"
#line 45 "metalang.met"
                    ptStockBuf = -1;
#line 45 "metalang.met"
                    *lexEl.string = '\0';
#line 45 "metalang.met"
                    _nbCharact = 0;
#line 45 "metalang.met"
                    tokenAhead = 0;
#line 45 "metalang.met"
                    if ( lastContextPos && !lastContextPos->nbRef) FreePos(lastContextPos);
#line 45 "metalang.met"
                    lastContextPos = (PFILE_POSITION) 0 ;
#line 45 "metalang.met"
                    _ptString = lexEl.string ;
#line 45 "metalang.met"
#line 46 "metalang.met"
                    while ((! (((c == '\n')))) && 
#line 46 "metalang.met"
                          (! (c == EOF ))) { 
#line 46 "metalang.met"
#line 46 "metalang.met"
                        if (!(c != EOF&& NextChar())) ;
#line 46 "metalang.met"
                    } 
#line 46 "metalang.met"
#line 47 "metalang.met"
                    if (!(c != EOF&& NextChar())) ;
#line 47 "metalang.met"
#line 48 "metalang.met"
                    {
#line 48 "metalang.met"
                        *_ptString = '\0' ;
#line 48 "metalang.met"
                        firstOnLine = 0 ; 
#line 48 "metalang.met"
                        tokenAhead =4;
#line 48 "metalang.met"
                        lexEl.Value=END_LINE;
#line 48 "metalang.met"
                        PUT_COORD_CALL;
#line 48 "metalang.met"
                        return(1);
#line 48 "metalang.met"
                    }
#line 48 "metalang.met"
#line 48 "metalang.met"
#line 48 "metalang.met"
                    
#line 49 "metalang.met"
                    line = oldLine;
#line 49 "metalang.met"
                    LEX_EXIT(0,"")
#line 49 "metalang.met"
                    lexEl.Value = -1 ;
#line 49 "metalang.met"
                    return -1 ; 
#line 49 "metalang.met"
                }
#line 49 "metalang.met"
                
#line 49 "metalang.met"
#line 112 "metalang.met"
                int metalang::LexMeta ()
#line 112 "metalang.met"
                {
#line 112 "metalang.met"
                    if ( lastContextPos && !lastContextPos -> nbRef )
#line 112 "metalang.met"
                        FreePos(lastContextPos);
#line 112 "metalang.met"
                        lastContextPos = (PFILE_POSITION)0 ;
#line 112 "metalang.met"
                        if ( tokenAhead)
#line 112 "metalang.met"
                            ExtUnputBuf();
#line 112 "metalang.met"
                        #ifdef DUMP_COORD
#line 112 "metalang.met"
                        if(!lexCallLex && dumpCoord) store_pos_as_comment(line,col,0);
#line 112 "metalang.met"
                        #endif
#line 112 "metalang.met"
                        
#line 112 "metalang.met"
                        char * _ptString ;
#line 112 "metalang.met"
                        int _nbCharact ;
#line 112 "metalang.met"
                        int _bidon = (oldLine = line,oldCol = col );
#line 112 "metalang.met"
                        int _bidon1 = (oldLineEntry = line, oldColEntry = col );
#line 112 "metalang.met"
                        (tokenAhead|| (LexComment(),tokenAhead=-1,TRACE_LEX(1)));
#line 112 "metalang.met"
#line 113 "metalang.met"
                        if (keepSpace){
#line 113 "metalang.met"
#line 114 "metalang.met"
                            ptStockBuf = -1;
#line 114 "metalang.met"
                            while ((c == '\r')||(c == '\n'))
#line 114 "metalang.met"
                                NextChar() ;
#line 114 "metalang.met"
                            ptStockBuf = -1;
#line 114 "metalang.met"
                            *lexEl.string = '\0';
#line 114 "metalang.met"
                            _nbCharact = 0;
#line 114 "metalang.met"
                            tokenAhead = 0;
#line 114 "metalang.met"
                            _ptString = lexEl.string ;
#line 114 "metalang.met"
                            oldLine=line,oldCol=col;
#line 114 "metalang.met"
                            if ( !lexCallLex) {
#line 114 "metalang.met"
                                PUT_COORD_CALL;
#line 114 "metalang.met"
                            }
#line 114 "metalang.met"
#line 114 "metalang.met"
                        } else {
#line 114 "metalang.met"
#line 116 "metalang.met"
                            ptStockBuf = -1;
#line 116 "metalang.met"
                            while ((c == ' ')||(c == '\t')||(c == '\r')||(c == '\n'))
#line 116 "metalang.met"
                                NextChar() ;
#line 116 "metalang.met"
                            ptStockBuf = -1;
#line 116 "metalang.met"
                            *lexEl.string = '\0';
#line 116 "metalang.met"
                            _nbCharact = 0;
#line 116 "metalang.met"
                            tokenAhead = 0;
#line 116 "metalang.met"
                            _ptString = lexEl.string ;
#line 116 "metalang.met"
                            oldLine=line,oldCol=col;
#line 116 "metalang.met"
                            if ( !lexCallLex) {
#line 116 "metalang.met"
                                PUT_COORD_CALL;
#line 116 "metalang.met"
                            }
#line 116 "metalang.met"
                        }
#line 116 "metalang.met"
#line 117 "metalang.met"
                        switch (c) {
#line 117 "metalang.met"
#line 118 "metalang.met"
                            case '$' :
#line 118 "metalang.met"
                                NextChar();
#line 118 "metalang.met"
#line 118 "metalang.met"
#line 120 "metalang.met"
                                if (! (((c == '(')))){
#line 120 "metalang.met"
#line 122 "metalang.met"
                                    while ((('a' <= c && c <= 'z')||('A' <= c && c <= 'Z')||('0' <= c && c <= '9')||(c == '_'))) { 
#line 122 "metalang.met"
#line 123 "metalang.met"
                                        {
#line 123 "metalang.met"
                                            if (_nbCharact++ < MAXLENGTH) *_ptString++ = c;
#line 123 "metalang.met"
                                            NextChar();
#line 123 "metalang.met"
                                        }
#line 123 "metalang.met"
                                    } 
#line 123 "metalang.met"
                                } else {
#line 123 "metalang.met"
#line 125 "metalang.met"
#line 126 "metalang.met"
                                    int nbPar = 0;
#line 126 "metalang.met"
#line 127 "metalang.met"
                                    {
#line 127 "metalang.met"
                                        if (_nbCharact++ < MAXLENGTH) *_ptString++ = c;
#line 127 "metalang.met"
                                        NextChar();
#line 127 "metalang.met"
                                    }
#line 127 "metalang.met"
#line 128 "metalang.met"
                                    while (c != EOF) { 
#line 128 "metalang.met"
#line 129 "metalang.met"
                                        switch (c) {
#line 129 "metalang.met"
#line 130 "metalang.met"
                                            case '(' :
#line 130 "metalang.met"
#line 131 "metalang.met"
#line 132 "metalang.met"
                                                nbPar++;
#line 132 "metalang.met"
#line 133 "metalang.met"
                                                {
#line 133 "metalang.met"
                                                    if (_nbCharact++ < MAXLENGTH) *_ptString++ = c;
#line 133 "metalang.met"
                                                    NextChar();
#line 133 "metalang.met"
                                                }
#line 133 "metalang.met"
#line 133 "metalang.met"
                                                break ;
#line 133 "metalang.met"
#line 135 "metalang.met"
                                            case '\n' :
#line 135 "metalang.met"
#line 135 "metalang.met"
                                                {
#line 135 "metalang.met"
                                                    *_ptString = '\0' ;
#line 135 "metalang.met"
                                                    firstOnLine = 0 ; 
#line 135 "metalang.met"
                                                    tokenAhead =5;
#line 135 "metalang.met"
                                                    lexEl.Value=META;
#line 135 "metalang.met"
                                                    PUT_COORD_CALL;
#line 135 "metalang.met"
                                                    return(1);
#line 135 "metalang.met"
                                                }
#line 135 "metalang.met"
                                                break ;
#line 135 "metalang.met"
#line 137 "metalang.met"
                                            case ')' :
#line 137 "metalang.met"
#line 138 "metalang.met"
                                                if (!nbPar){
#line 138 "metalang.met"
#line 139 "metalang.met"
#line 140 "metalang.met"
                                                    {
#line 140 "metalang.met"
                                                        if (_nbCharact++ < MAXLENGTH) *_ptString++ = c;
#line 140 "metalang.met"
                                                        NextChar();
#line 140 "metalang.met"
                                                    }
#line 140 "metalang.met"
#line 141 "metalang.met"
                                                    {
#line 141 "metalang.met"
                                                        *_ptString = '\0' ;
#line 141 "metalang.met"
                                                        firstOnLine = 0 ; 
#line 141 "metalang.met"
                                                        tokenAhead =5;
#line 141 "metalang.met"
                                                        lexEl.Value=META;
#line 141 "metalang.met"
                                                        PUT_COORD_CALL;
#line 141 "metalang.met"
                                                        return(1);
#line 141 "metalang.met"
                                                    }
#line 141 "metalang.met"
#line 141 "metalang.met"
#line 141 "metalang.met"
                                                } else {
#line 141 "metalang.met"
#line 144 "metalang.met"
#line 145 "metalang.met"
                                                    {
#line 145 "metalang.met"
                                                        if (_nbCharact++ < MAXLENGTH) *_ptString++ = c;
#line 145 "metalang.met"
                                                        NextChar();
#line 145 "metalang.met"
                                                    }
#line 145 "metalang.met"
#line 146 "metalang.met"
                                                    nbPar--;
#line 146 "metalang.met"
#line 146 "metalang.met"
                                                }
#line 146 "metalang.met"
                                                break ;
#line 146 "metalang.met"
#line 149 "metalang.met"
                                            default : 
#line 149 "metalang.met"
                                                 if (c!= EOF) {
#line 149 "metalang.met"
#line 149 "metalang.met"
                                                    {
#line 149 "metalang.met"
                                                        if (_nbCharact++ < MAXLENGTH) *_ptString++ = c;
#line 149 "metalang.met"
                                                        NextChar();
#line 149 "metalang.met"
                                                    }
#line 149 "metalang.met"
                                                }
#line 149 "metalang.met"
                                                break ;
#line 149 "metalang.met"
                                        }
#line 149 "metalang.met"
                                    } 
#line 149 "metalang.met"
#line 149 "metalang.met"
                                }
#line 149 "metalang.met"
#line 152 "metalang.met"
                                {
#line 152 "metalang.met"
                                    *_ptString = '\0' ;
#line 152 "metalang.met"
                                    firstOnLine = 0 ; 
#line 152 "metalang.met"
                                    tokenAhead =5;
#line 152 "metalang.met"
                                    lexEl.Value=META;
#line 152 "metalang.met"
                                    PUT_COORD_CALL;
#line 152 "metalang.met"
                                    return(1);
#line 152 "metalang.met"
                                }
#line 152 "metalang.met"
#line 152 "metalang.met"
                                break ;
#line 152 "metalang.met"
                        }
#line 152 "metalang.met"
#line 155 "metalang.met"
                        line = oldLine;
#line 155 "metalang.met"
                        LEX_EXIT(0,"")
#line 155 "metalang.met"
                        lexEl.Value = -1 ;
#line 155 "metalang.met"
                        return -1 ; 
#line 155 "metalang.met"
                    }
#line 155 "metalang.met"
                    
#line 155 "metalang.met"
                    /* 
                    -- 0 -- bidon
                        ALWAYS
                    -- 1 -- asit
                        META
                        AOUVAOUV
                    -- 2 -- condition
                        META
                        IDENT
                        AOUVAOUV
                        SEE
                        TAKE
                        NOT
                        SEEL
                        TAKEL
                        POUV
                        IN
                        DEFAULT
                    -- 3 -- debut_proc
                        META
                        AOUVAOUV
                        DEFINE
                        LEXDEFINE
                    -- 4 -- declaration
                        META
                        DEFINE
                    -- 5 -- definition
                        META
                        LEXDEFINE
                    -- 6 -- end_key
                        META
                        END
                    -- 7 -- expr
                        META
                        IDENT
                        NUMB
                    -- 8 -- func_call
                        META
                        IDENT
                    -- 9 -- func_follow
                        META
                        IDENT
                        STRING
                        NUMB
                        PFER
                        DIES
                        EXCL
                    -- 10 -- gen_param
                        META
                        IDENT
                        STRING
                        TAKE
                        POUV
                        DIES
                        EXCL
                        STRINGLEX
                        MAKETREE
                        REPLACETREE
                        ADDLIST
                    -- 11 -- grammar_use
                        META
                        USE
                    -- 12 -- langage
                        META
                        LANGUAGE
                    -- 13 -- maketree_follow
                        META
                        IDENT
                        STRING
                        TAKE
                        POUV
                        DIES
                        EXCL
                        STRINGLEX
                        MAKETREE
                        REPLACETREE
                        ADDLIST
                    -- 14 -- one_condition
                        META
                        IDENT
                        AOUVAOUV
                        SEE
                        TAKE
                        NOT
                        SEEL
                        TAKEL
                        POUV
                        IN
                        DEFAULT
                    -- 15 -- parse_entry
                        ALWAYS
                    -- 16 -- pattern_rec
                        ALWAYS
                    -- 17 -- see_follow
                        META
                        IDENT
                        STRING
                        DIES
                        EXCL
                    -- 18 -- seel_stat
                        META
                        SEEL
                    -- 19 -- set
                        META
                        COUV
                    -- 20 -- storel_stat
                        META
                        STOREL
                    -- 21 -- take_follow
                        META
                        IDENT
                        STRING
                        DIES
                        EXCL
                    -- 22 -- takel_stat
                        META
                        TAKEL
                    */
                    
                    signed char *metalang::_tokenArray [23] = {
                        (signed char *) "\377\377\377\377\377\377\377\377\377\377\377\377\377"
                        ,(signed char *) "\020\000\020\000\000\000\000\000\000\000\000\000\000"
                        ,(signed char *) "\020\100\360\037\000\000\000\000\000\000\000\000\000"
                        ,(signed char *) "\020\000\020\140\000\000\000\000\000\000\000\000\000"
                        ,(signed char *) "\020\000\000\040\000\000\000\000\000\000\000\000\000"
                        ,(signed char *) "\020\000\000\100\000\000\000\000\000\000\000\000\000"
                        ,(signed char *) "\020\000\000\200\000\000\000\000\000\000\000\000\000"
                        ,(signed char *) "\020\100\002\000\000\000\000\000\000\000\000\000\000"
                        ,(signed char *) "\020\100\000\000\000\000\000\000\000\000\000\000\000"
                        ,(signed char *) "\020\300\002\000\007\000\000\000\000\000\000\000\000"
                        ,(signed char *) "\020\300\100\004\176\000\000\000\000\000\000\000\000"
                        ,(signed char *) "\020\000\000\000\200\000\000\000\000\000\000\000\000"
                        ,(signed char *) "\020\000\000\000\000\001\000\000\000\000\000\000\000"
                        ,(signed char *) "\020\300\100\004\176\000\000\000\000\000\000\000\000"
                        ,(signed char *) "\020\100\360\037\000\000\000\000\000\000\000\000\000"
                        ,(signed char *) "\377\377\377\377\377\377\377\377\377\377\377\377\377"
                        ,(signed char *) "\377\377\377\377\377\377\377\377\377\377\377\377\377"
                        ,(signed char *) "\020\300\000\000\006\000\000\000\000\000\000\000\000"
                        ,(signed char *) "\020\000\000\001\000\000\000\000\000\000\000\000\000"
                        ,(signed char *) "\020\000\000\000\000\002\000\000\000\000\000\000\000"
                        ,(signed char *) "\020\000\000\000\000\004\000\000\000\000\000\000\000"
                        ,(signed char *) "\020\300\000\000\006\000\000\000\000\000\000\000\000"
                        ,(signed char *) "\020\000\000\002\000\000\000\000\000\000\000\000\000"
                    };
                    typedef int (metalang::*(DEF_FUNC_TOKEN_ARRAY [23]))() ;
                    DEF_FUNC_TOKEN_ARRAY metalang::_tokenFuncArray = {
                        /*bidon      */0,
                        /*asit       */(&metalang::Lex),
                        /*condition  */(&metalang::Lex),
                        /*debut_proc */(&metalang::Lex),
                        /*declaration*/(&metalang::Lex),
                        /*definition */(&metalang::Lex),
                        /*end_key    */(&metalang::Lex),
                        /*expr       */(&metalang::Lex),
                        /*func_call  */(&metalang::Lex),
                        /*func_follow*/(&metalang::Lex),
                        /*gen_param  */(&metalang::Lex),
                        /*grammar_use*/(&metalang::Lex),
                        /*langage    */(&metalang::Lex),
                        /*maketree_fo*/(&metalang::Lex),
                        /*one_conditi*/(&metalang::Lex),
                        /*parse_entry*/0,
                        /*pattern_rec*/0,
                        /*see_follow */(&metalang::Lex),
                        /*seel_stat  */(&metalang::Lex),
                        /*set        */(&metalang::Lex),
                        /*storel_stat*/(&metalang::Lex),
                        /*take_follow*/(&metalang::Lex),
                        /*takel_stat */(&metalang::Lex)
                    };
                    int metalang::_tokenNbFuncArray [23] = {
                        /*bidon      */0,
                        /*asit       */1,
                        /*condition  */1,
                        /*debut_proc */1,
                        /*declaration*/1,
                        /*definition */1,
                        /*end_key    */1,
                        /*expr       */1,
                        /*func_call  */1,
                        /*func_follow*/1,
                        /*gen_param  */1,
                        /*grammar_use*/1,
                        /*langage    */1,
                        /*maketree_fo*/1,
                        /*one_conditi*/1,
                        /*parse_entry*/0,
                        /*pattern_rec*/0,
                        /*see_follow */1,
                        /*seel_stat  */1,
                        /*set        */1,
                        /*storel_stat*/1,
                        /*take_follow*/1,
                        /*takel_stat */1
                    };
                    int _arityNode_metalang[] = {   2 , 1 , 1 , 1 , 1 , 2 , 3 , 1 , 1 , 1 , 0 , 0
                                                  , 1 , 1 , 1 , 1 , 1 , 1 , -1 , -1 , -1 , 1 , 1
                                                  , 1 , 1 , 1 , -1 , 1 , -1 , 4 , 4 , -1 , -1 , -1
                                                  , -1 , 0 , 1 , 1 , 1 , -1 , 2 , -1 , 1 , -1 , 1
                                                  , 2 , 2 , -1 , 1 , 2 , -1 , -1 , 1 , 1 , 2 , 1
                                                  , 1 , 0 , 1 , 1 , 1 , -1 , -1 , 2 , 1 , -1 , 1
                                                  , 1 , 0 , -1 , -1 , 2 , 3 , 2 , 1 , -1 , -1 , -1
                                                  , -1 , 0 , 0 , 0 , 2 , -1 , 2 , -1 , -1 , -1 , 2
                                                  , -1 , 1 , 0 , 0 , 0 , 2 , 1 };
                    
                        
                    STRINGELEM * listConst_metalang;
                    extern "C" {
                    extern PPTREE bri_parse_entry_metalang(int);
                    }
                    
                    int metalang::init = 0 ;
                    
                    void metalang::InitConst()
                    {
                        if (!metalang::init) {
                            metalang::init = 1 ;
                            
                            STRINGELEM * inter = listConst;
                            listConst = (STRINGELEM *) 0;
                            AddConstVal("metalang::SET", 95);
                            AddConstVal("metalang::INTER", 94);
                            AddConstVal("metalang::FORGET_SYNTAXIQUE", 93);
                            AddConstVal("metalang::RECOVER", 92);
                            AddConstVal("metalang::RESETLEX", 91);
                            AddConstVal("metalang::BEGINNING", 90);
                            AddConstVal("metalang::DPOI", 89);
                            AddConstVal("metalang::SWITCH", 88);
                            AddConstVal("metalang::ELSE", 87);
                            AddConstVal("metalang::THEN", 86);
                            AddConstVal("metalang::UNTIL", 85);
                            AddConstVal("metalang::WITHOUT_CONTEXT", 84);
                            AddConstVal("metalang::DO", 83);
                            AddConstVal("metalang::WITH_CONTEXT", 82);
                            AddConstVal("metalang::BREAK", 81);
                            AddConstVal("metalang::RECOGNIZE_STRING", 80);
                            AddConstVal("metalang::FORGET", 79);
                            AddConstVal("metalang::RECOVERL", 78);
                            AddConstVal("metalang::FORGETL", 77);
                            AddConstVal("metalang::RESETL", 76);
                            AddConstVal("metalang::AT_BEGINNING", 75);
                            AddConstVal("metalang::CASE", 74);
                            AddConstVal("metalang::WHILE", 73);
                            AddConstVal("metalang::IF", 72);
                            AddConstVal("metalang::REPEAT", 71);
                            AddConstVal("metalang::WITHOUT", 70);
                            AddConstVal("metalang::WITH", 69);
                            AddConstVal("metalang::STORE_COMMENT_LINE", 68);
                            AddConstVal("metalang::RETURN", 67);
                            AddConstVal("metalang::IN_CONTEXT", 66);
                            AddConstVal("metalang::CONTEXT", 65);
                            AddConstVal("metalang::COND", 64);
                            AddConstVal("metalang::EQUAL", 63);
                            AddConstVal("metalang::EGAL", 62);
                            AddConstVal("metalang::POIN", 61);
                            AddConstVal("metalang::BEGIN", 60);
                            AddConstVal("metalang::GLOBAL", 59);
                            AddConstVal("metalang::GRAMMAR_USE", 58);
                            AddConstVal("metalang::NIL", 57);
                            AddConstVal("metalang::EXCLA", 56);
                            AddConstVal("metalang::TOKEN", 55);
                            AddConstVal("metalang::FUNC", 54);
                            AddConstVal("metalang::SKIP", 53);
                            AddConstVal("metalang::CONSTANT", 52);
                            AddConstVal("metalang::VIRG", 51);
                            AddConstVal("metalang::CFER", 50);
                            AddConstVal("metalang::TREE_ARITY", 49);
                            AddConstVal("metalang::DECLARE", 48);
                            AddConstVal("metalang::PVIR", 47);
                            AddConstVal("metalang::AND", 46);
                            AddConstVal("metalang::OR", 45);
                            AddConstVal("metalang::ASIT", 44);
                            AddConstVal("metalang::AFERAFER", 43);
                            AddConstVal("metalang::STOREL", 42);
                            AddConstVal("metalang::COUV", 41);
                            AddConstVal("metalang::LANGUAGE", 40);
                            AddConstVal("metalang::USE", 39);
                            AddConstVal("metalang::ADDLIST", 38);
                            AddConstVal("metalang::REPLACETREE", 37);
                            AddConstVal("metalang::MAKETREE", 36);
                            AddConstVal("metalang::STRINGLEX", 35);
                            AddConstVal("metalang::EXCL", 34);
                            AddConstVal("metalang::DIES", 33);
                            AddConstVal("metalang::PFER", 32);
                            AddConstVal("metalang::END", 31);
                            AddConstVal("metalang::LEXDEFINE", 30);
                            AddConstVal("metalang::DEFINE", 29);
                            AddConstVal("metalang::DEFAULT", 28);
                            AddConstVal("metalang::IN", 27);
                            AddConstVal("metalang::POUV", 26);
                            AddConstVal("metalang::TAKEL", 25);
                            AddConstVal("metalang::SEEL", 24);
                            AddConstVal("metalang::NOT", 23);
                            AddConstVal("metalang::TAKE", 22);
                            AddConstVal("metalang::SEE", 21);
                            AddConstVal("metalang::AOUVAOUV", 20);
                            AddConstVal("metalang::END_LINE", 19);
                            AddConstVal("metalang::ASIT_CONTENT", 18);
                            AddConstVal("metalang::NUMB", 17);
                            AddConstVal("metalang::CHARACTER", 16);
                            AddConstVal("metalang::STRING", 15);
                            AddConstVal("metalang::IDENT", 14);
                            AddConstVal("metalang::GOTO", 13);
                            AddConstVal("metalang::STR", 12);
                            AddConstVal("metalang::UNMARK", 11);
                            AddConstVal("metalang::MARK", 10);
                            AddConstVal("metalang::TAB_VIRT", 9);
                            AddConstVal("metalang::TAB", 8);
                            AddConstVal("metalang::NEWLINE", 7);
                            AddConstVal("metalang::ATTRIBUTS", 6);
                            AddConstVal("IN_LANGUAGE", 5);
                            AddConstVal("META", 4);
                            AddConstVal("PREPOST", 3);
                            AddConstVal("POST", 2);
                            AddConstVal("PRE", 1);
                            AddConstVal("LIST",0);
                            listConst_metalang = listConst;
                            listConst = inter;
                            AddLang("metalang",_arityNode_metalang,listConst_metalang,bri_parse_entry_metalang,95,(OVER_LANG *) 0);
                            }
                    }
                    
                    /*Well done my boy */ 
