コード例 #1
0
ファイル: mlexmac.c プロジェクト: ABratovic/open-watcom-v2
STATIC TOKEN_T lexDollar( void )
/*******************************
 * pre:     $ read off input
 * post:    0 or more characters of token read
 * returns: MAC token type
 */
{
    STRM_T  s;
    TOKEN_T t;

    s = PreGetCH();

    if( (Glob.compat_nmake || Glob.compat_posix) && ismsspecial( s ) ) {
        t = LexMSDollar( s );
        GetModifier();
        return( t );
    }
    switch( s ) {
    case DOLLAR:                        return( MAC_DOLLAR );
    case COMMENT:                       return( MAC_COMMENT );
    case '(':                           return( MAC_OPEN );
    case '+':                           return( MAC_EXPAND_ON );
    case '-':                           return( MAC_EXPAND_OFF );
    case '^':                           return( lexFormQualifier( MAC_CUR ) );
    case '[':                           return( lexFormQualifier( MAC_FIRST ) );
    case ']':                           return( lexFormQualifier( MAC_LAST ) );
    case '@': CurAttr.u.form = FORM_FULL;  return( MAC_CUR );       /* UNIX */
    case '*': CurAttr.u.form = FORM_NOEXT; return( MAC_CUR );       /* UNIX */
    case '<': CurAttr.u.form = FORM_FULL;  return( MAC_ALL_DEP );   /* UNIX */
    case '?': CurAttr.u.form = FORM_FULL;  return( MAC_YOUNG_DEP ); /* UNIX */
    default:
        UnGetCH( s );
        return( MAC_START );
    }
}
コード例 #2
0
TOKEN_T LexToken( enum LexMode mode )
/*******************************************
 * returns: next token of input
 */
{
    STRM_T s;
    TOKEN_T t = TOK_NULL;

    s = PreGetCHR();

    switch( mode ) {
    case LEX_MAC_DEF:   t = LexMacDef( s );     break;
    case LEX_MAC_SUBST: t = LexMacSubst( s );   break;
    case LEX_PARSER:    t = LexParser( s );     break;
    case LEX_PATH:      t = LexPath( s );       break;
    case LEX_MS_MAC:    t = LexMSDollar ( s );  break;
    }

    return( t );
}