/*************************************************************************/
/*                                                                       */
/*        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\040\000\000\000\000\000\000\000\000\000\000"
    ,(signed char *) "\020\200\340\077\000\000\000\000\000\000\000\000\000"
    ,(signed char *) "\020\000\040\300\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\000\000\000\001\000\000\000\000\000\000\000\000"
    ,(signed char *) "\020\200\004\000\000\000\000\000\000\000\000\000\000"
    ,(signed char *) "\020\200\000\000\000\000\000\000\000\000\000\000\000"
    ,(signed char *) "\020\200\005\000\016\000\000\000\000\000\000\000\000"
    ,(signed char *) "\020\200\201\010\374\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\000\000\000\000\002\000\000\000\000\000\000\000"
    ,(signed char *) "\020\200\201\010\374\000\000\000\000\000\000\000\000"
    ,(signed char *) "\020\200\340\077\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\200\001\000\014\000\000\000\000\000\000\000\000"
    ,(signed char *) "\020\000\000\002\000\000\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\000\000\000\000\010\000\000\000\000\000\000\000"
    ,(signed char *) "\020\200\001\000\014\000\000\000\000\000\000\000\000"
    ,(signed char *) "\020\000\000\004\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_follow                */(&metalang::Lex),
    /*one_condition                  */(&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_follow                */1,
    /*one_condition                  */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 , -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", 96);
        AddConstVal("metalang::INTER", 95);
        AddConstVal("metalang::FORGET_SYNTAXIQUE", 94);
        AddConstVal("metalang::RECOVER", 93);
        AddConstVal("metalang::RESETLEX", 92);
        AddConstVal("metalang::BEGINNING", 91);
        AddConstVal("metalang::DPOI", 90);
        AddConstVal("metalang::SWITCH", 89);
        AddConstVal("metalang::ELSE", 88);
        AddConstVal("metalang::THEN", 87);
        AddConstVal("metalang::UNTIL", 86);
        AddConstVal("metalang::WITHOUT_CONTEXT", 85);
        AddConstVal("metalang::DO", 84);
        AddConstVal("metalang::WITH_CONTEXT", 83);
        AddConstVal("metalang::BREAK", 82);
        AddConstVal("metalang::RECOGNIZE_STRING", 81);
        AddConstVal("metalang::FORGET", 80);
        AddConstVal("metalang::RECOVERL", 79);
        AddConstVal("metalang::FORGETL", 78);
        AddConstVal("metalang::RESETL", 77);
        AddConstVal("metalang::AT_BEGINNING", 76);
        AddConstVal("metalang::CASE", 75);
        AddConstVal("metalang::WHILE", 74);
        AddConstVal("metalang::IF", 73);
        AddConstVal("metalang::REPEAT", 72);
        AddConstVal("metalang::WITHOUT", 71);
        AddConstVal("metalang::WITH", 70);
        AddConstVal("metalang::STORE_COMMENT_LINE", 69);
        AddConstVal("metalang::RETURN", 68);
        AddConstVal("metalang::IN_CONTEXT", 67);
        AddConstVal("metalang::CONTEXT", 66);
        AddConstVal("metalang::COND", 65);
        AddConstVal("metalang::EQUAL", 64);
        AddConstVal("metalang::EGAL", 63);
        AddConstVal("metalang::POIN", 62);
        AddConstVal("metalang::BEGIN", 61);
        AddConstVal("metalang::GLOBAL", 60);
        AddConstVal("metalang::GRAMMAR_USE", 59);
        AddConstVal("metalang::NIL", 58);
        AddConstVal("metalang::EXCLA", 57);
        AddConstVal("metalang::TOKEN", 56);
        AddConstVal("metalang::FUNC", 55);
        AddConstVal("metalang::SKIP", 54);
        AddConstVal("metalang::CONSTANT", 53);
        AddConstVal("metalang::VIRG", 52);
        AddConstVal("metalang::CFER", 51);
        AddConstVal("metalang::TREE_ARITY", 50);
        AddConstVal("metalang::DECLARE", 49);
        AddConstVal("metalang::PVIR", 48);
        AddConstVal("metalang::AND", 47);
        AddConstVal("metalang::OR", 46);
        AddConstVal("metalang::ASIT", 45);
        AddConstVal("metalang::AFERAFER", 44);
        AddConstVal("metalang::STOREL", 43);
        AddConstVal("metalang::COUV", 42);
        AddConstVal("metalang::LANGUAGE", 41);
        AddConstVal("metalang::USE", 40);
        AddConstVal("metalang::ADDLIST", 39);
        AddConstVal("metalang::REPLACETREE", 38);
        AddConstVal("metalang::MAKETREE", 37);
        AddConstVal("metalang::STRINGLEX", 36);
        AddConstVal("metalang::EXCL", 35);
        AddConstVal("metalang::DIES", 34);
        AddConstVal("metalang::PFER", 33);
        AddConstVal("metalang::END", 32);
        AddConstVal("metalang::LEXDEFINE", 31);
        AddConstVal("metalang::DEFINE", 30);
        AddConstVal("metalang::DEFAULT", 29);
        AddConstVal("metalang::IN", 28);
        AddConstVal("metalang::POUV", 27);
        AddConstVal("metalang::TAKEL", 26);
        AddConstVal("metalang::SEEL", 25);
        AddConstVal("metalang::NOT", 24);
        AddConstVal("metalang::TAKE", 23);
        AddConstVal("metalang::SEE", 22);
        AddConstVal("metalang::AOUVAOUV", 21);
        AddConstVal("metalang::END_LINE", 20);
        AddConstVal("metalang::ASIT_CONTENT", 19);
        AddConstVal("metalang::NUMB", 18);
        AddConstVal("metalang::CHARACTER", 17);
        AddConstVal("metalang::STRING", 16);
        AddConstVal("metalang::IDENT", 15);
        AddConstVal("metalang::GOTO_REL", 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,96,(OVER_LANG *) 0);
        }
}

/*Well done my boy */ 
