package org.xmlsh.sh.grammar; import static org.xmlsh.sh.grammar.ShellParserConstants.WORD; import org.xmlsh.sh.grammar.ParserState.TokenEnum; public class ShellParserUtils { static class TokenValue { public int kind; public String value ; public TokenValue(int kind, String value) { this.kind = kind; this.value = value; } public boolean equalsToken( Token t ) { return kind == t.kind && ( value == null || value.equals( t.image)); } } // Find the token enum for a given token or null static TokenEnum tokenEnum( Token t ) { for( TokenEnum e : TokenEnum.values()) { TokenValue v = e.getValue() ; if( v.equalsToken( t ) ) return e ; } return null ; } // Find the token enum for a given token or null static TokenEnum tokenEnum( int kind , String value ) { for( TokenEnum e : TokenEnum.values()) { TokenValue v = e.getValue() ; if( v.kind == kind && ( v.value == value || v.value.equals(value) ) ) return e ; } return null ; } public static boolean isWord( Token t , String name ) { return tokenInList( t , WORD , name ); } public static boolean kindInList( Token t , int... kinds ) { int k = t.kind; for( int kind : kinds ) { if( k == kind ) return true ; } return false ; } public static boolean tokenInList( Token t , int kind , String... names ){ if( t.kind != kind ) return false; if( names == null || names.length == 0 ) return true ; for( String s : names ) if( s.equals(t.image) ) return true; return false ; } }