blob: 601f55dbb1298f5ab61c9df5596e4e7476c3a4d1 [file] [log] [blame]
/*
*******************************************************************************
* Copyright (C) 2002-2003, International Business Machines Corporation and *
* others. All Rights Reserved. *
*******************************************************************************
*
* $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/tool/localeconverter/TokenTransition.java,v $
* $Date: 2003/12/20 03:07:06 $
* $Revision: 1.4 $
*
*****************************************************************************************
*/
package com.ibm.icu.dev.tool.localeconverter;
public class TokenTransition extends ComplexTransition {
public static final TokenTransition GLOBAL = new TokenTransition(SUCCESS);
public static final String SEPARATOR_CHARS = ";" + SpaceTransition.SPACE_CHARS;
public TokenTransition(int success) {
super(success);
//{{INIT_CONTROLS
//}}
}
public boolean accepts(int c) {
return (c > 0) &&
!EOLTransition.GLOBAL.accepts(c) &&
!SpaceTransition.GLOBAL.accepts(c) &&
(
(SEPARATOR_CHARS.indexOf((char)c) < 0) ||
SymbolTransition.GLOBAL.accepts(c) ||
QuoteTransition.GLOBAL.accepts(c) ||
EscapeTransition.GLOBAL.accepts(c)
);
}
protected Lex.Transition[][] getStates() {
return states;
}
private static final Lex.Transition[][] states = {
{ //state 0:
new SymbolTransition(-1),
new QuoteTransition(-1),
new EscapeTransition(-1),
new Lex.StringTransition(EOLTransition.EOL_CHARS, Lex.IGNORE_PUTBACK, -2),
new Lex.StringTransition(SEPARATOR_CHARS, Lex.IGNORE_PUTBACK, -3),
new Lex.EOFTransition(-4),
new Lex.DefaultTransition(Lex.ACCUMULATE_CONSUME, -1)
},
{ //state 1:
new SymbolTransition(-1),
new QuoteTransition(-1),
new EscapeTransition(-1),
new Lex.StringTransition(EOLTransition.EOL_CHARS, Lex.IGNORE_PUTBACK, SUCCESS),
new Lex.StringTransition(SEPARATOR_CHARS, Lex.IGNORE_PUTBACK, SUCCESS),
new Lex.EOFTransition(SUCCESS),
new Lex.DefaultTransition(Lex.ACCUMULATE_CONSUME, -1)
},
{ //state 2: failure - unexpected EOL
new Lex.ParseExceptionTransition("unexpected EOL in token")
},
{ //state 3: failure
new Lex.ParseExceptionTransition("unexpected seperator character in token")
},
{ //state 4: failure
new Lex.ParseExceptionTransition("unexpected EOF in token")
},
};
//{{DECLARE_CONTROLS
//}}
}