亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? validwhenparser.java

?? struts的源代碼
?? JAVA
字號:
// $ANTLR 2.7.2: "ValidWhenParser.g" -> "ValidWhenParser.java"$

/*
 * $Id: ValidWhenParser.java 54929 2004-10-16 16:38:42Z germuska $ 
 *
 * Copyright 2003-2004 The Apache Software Foundation.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.struts.validator.validwhen;

import java.util.Stack; 
import org.apache.commons.validator.util.ValidatorUtils;


import antlr.TokenBuffer;
import antlr.TokenStreamException;
import antlr.TokenStreamIOException;
import antlr.ANTLRException;
import antlr.LLkParser;
import antlr.Token;
import antlr.TokenStream;
import antlr.RecognitionException;
import antlr.NoViableAltException;
import antlr.MismatchedTokenException;
import antlr.SemanticException;
import antlr.ParserSharedInputState;
import antlr.collections.impl.BitSet;

public class ValidWhenParser extends antlr.LLkParser       implements ValidWhenParserTokenTypes
 {
Stack argStack = new Stack();
Object form;
int index;
String value;

    public void setForm(Object f) { form = f; };
    public void setIndex (int i) { index = i; };
    public void setValue (String v) { value = v; };

    public boolean getResult() {
       return ((Boolean)argStack.peek()).booleanValue();
    }

    private final int LESS_EQUAL=0;
    private final int LESS_THAN=1;
    private final int EQUAL=2;
    private final int GREATER_THAN=3;
    private final int GREATER_EQUAL=4;
    private final int NOT_EQUAL=5;
    private final int AND=6;
    private final int OR=7;

    private  boolean evaluateComparison (Object v1, Object compare, Object v2) {
        boolean intCompare = true;
	if ((v1 == null) || (v2 == null)) {
		if (String.class.isInstance(v1)) {
			if (((String) v1).length() == 0) {
				v1 = null;
			}
		}
		if (String.class.isInstance(v2)) {
			if (((String) v2).length() == 0) {
				v2 = null;
			}
		}
		switch (((Integer)compare).intValue()) {
		case LESS_EQUAL:
		case GREATER_THAN:
		case LESS_THAN:
		case GREATER_EQUAL:
			return false;
		case EQUAL:
		    return (v1 == v2);
		case NOT_EQUAL:
		    return (v1 != v2);
		}
	}
      if ((Integer.class.isInstance(v1) ||
           String.class.isInstance(v1)) &&
	    (Integer.class.isInstance(v2) ||
           String.class.isInstance(v2))) {
	    intCompare = true;
      } else {
	    intCompare = false;
	}
	if (intCompare) {
	    try {
		int v1i = 0, v2i = 0;
		if (Integer.class.isInstance(v1)) {
		    v1i = ((Integer)v1).intValue();
		} else {
		    v1i = Integer.parseInt((String) v1);
		}
		if (Integer.class.isInstance(v2)) {
		    v2i = ((Integer)v2).intValue();
		} else {
		    v2i = Integer.parseInt((String) v2);
		}
		switch (((Integer)compare).intValue()) {
		case LESS_EQUAL:
		    return (v1i <= v2i);

		case LESS_THAN:
		    return (v1i < v2i);

		case EQUAL:
		    return (v1i == v2i);

		case GREATER_THAN:
		    return (v1i > v2i);

		case GREATER_EQUAL:
		    return (v1i >= v2i);

		case NOT_EQUAL:
		    return (v1i != v2i);
		}
	    } catch (NumberFormatException ex) {};
	}
	String v1s = "", v2s = "";

	if (Integer.class.isInstance(v1)) {
	    v1s = ((Integer)v1).toString();
	} else {
	    v1s = (String) v1;
	}

	if (Integer.class.isInstance(v2)) {
	    v2s = ((Integer)v2).toString();
	} else {
	    v2s = (String) v2;
	}

	int res = v1s.compareTo(v2s);
	switch (((Integer)compare).intValue()) {
	case LESS_EQUAL:
	    return (res <= 0);

	case LESS_THAN:
	    return (res < 0);

	case EQUAL:
	    return (res == 0);

	case GREATER_THAN:
	    return (res > 0);

	case GREATER_EQUAL:
	    return (res >= 0);

	case NOT_EQUAL:
	    return (res != 0);
	}
	return true;
    }


protected ValidWhenParser(TokenBuffer tokenBuf, int k) {
  super(tokenBuf,k);
  tokenNames = _tokenNames;
}

public ValidWhenParser(TokenBuffer tokenBuf) {
  this(tokenBuf,6);
}

protected ValidWhenParser(TokenStream lexer, int k) {
  super(lexer,k);
  tokenNames = _tokenNames;
}

public ValidWhenParser(TokenStream lexer) {
  this(lexer,6);
}

public ValidWhenParser(ParserSharedInputState state) {
  super(state,6);
  tokenNames = _tokenNames;
}

	public final void integer() throws RecognitionException, TokenStreamException {
		
		Token  d = null;
		Token  h = null;
		Token  o = null;
		
		switch ( LA(1)) {
		case DECIMAL_LITERAL:
		{
			d = LT(1);
			match(DECIMAL_LITERAL);
			argStack.push(Integer.decode(d.getText()));
			break;
		}
		case HEX_LITERAL:
		{
			h = LT(1);
			match(HEX_LITERAL);
			argStack.push(Integer.decode(h.getText()));
			break;
		}
		case OCTAL_LITERAL:
		{
			o = LT(1);
			match(OCTAL_LITERAL);
			argStack.push(Integer.decode(o.getText()));
			break;
		}
		default:
		{
			throw new NoViableAltException(LT(1), getFilename());
		}
		}
	}
	
	public final void string() throws RecognitionException, TokenStreamException {
		
		Token  str = null;
		
		str = LT(1);
		match(STRING_LITERAL);
		argStack.push(str.getText().substring(1, str.getText().length()-1));
	}
	
	public final void identifier() throws RecognitionException, TokenStreamException {
		
		Token  str = null;
		
		str = LT(1);
		match(IDENTIFIER);
		argStack.push(str.getText());
	}
	
	public final void field() throws RecognitionException, TokenStreamException {
		
		
		if ((LA(1)==IDENTIFIER) && (LA(2)==LBRACKET) && (LA(3)==RBRACKET) && (LA(4)==IDENTIFIER)) {
			identifier();
			match(LBRACKET);
			match(RBRACKET);
			identifier();
			
			Object i2 = argStack.pop();
			Object i1 = argStack.pop();
			argStack.push(ValidatorUtils.getValueAsString(form, i1 + "[" + index + "]" + i2));
			
		}
		else if ((LA(1)==IDENTIFIER) && (LA(2)==LBRACKET) && ((LA(3) >= DECIMAL_LITERAL && LA(3) <= OCTAL_LITERAL)) && (LA(4)==RBRACKET) && (LA(5)==IDENTIFIER)) {
			identifier();
			match(LBRACKET);
			integer();
			match(RBRACKET);
			identifier();
			
			Object i5 = argStack.pop();
			Object i4 = argStack.pop();
			Object i3 = argStack.pop();
			argStack.push(ValidatorUtils.getValueAsString(form, i3 + "[" + i4 + "]" + i5));
			
		}
		else if ((LA(1)==IDENTIFIER) && (LA(2)==LBRACKET) && ((LA(3) >= DECIMAL_LITERAL && LA(3) <= OCTAL_LITERAL)) && (LA(4)==RBRACKET) && (LA(5)==LBRACKET)) {
			identifier();
			match(LBRACKET);
			integer();
			match(RBRACKET);
			match(LBRACKET);
			
			Object i7 = argStack.pop();
			Object i6 = argStack.pop();
			argStack.push(ValidatorUtils.getValueAsString(form, i6 + "[" + i7 + "]"));
			
		}
		else if ((LA(1)==IDENTIFIER) && (LA(2)==LBRACKET) && (LA(3)==RBRACKET) && (_tokenSet_0.member(LA(4)))) {
			identifier();
			match(LBRACKET);
			match(RBRACKET);
			
			Object i8 = argStack.pop();
			argStack.push(ValidatorUtils.getValueAsString(form, i8 + "[" + index + "]"));
			
		}
		else if ((LA(1)==IDENTIFIER) && (_tokenSet_0.member(LA(2)))) {
			identifier();
			
			Object i9 = argStack.pop();
			argStack.push(ValidatorUtils.getValueAsString(form, (String)i9));
			
		}
		else {
			throw new NoViableAltException(LT(1), getFilename());
		}
		
	}
	
	public final void literal() throws RecognitionException, TokenStreamException {
		
		
		switch ( LA(1)) {
		case DECIMAL_LITERAL:
		case HEX_LITERAL:
		case OCTAL_LITERAL:
		{
			integer();
			break;
		}
		case STRING_LITERAL:
		{
			string();
			break;
		}
		case LITERAL_null:
		{
			match(LITERAL_null);
			argStack.push(null);
			break;
		}
		case THIS:
		{
			match(THIS);
			argStack.push(value);
			break;
		}
		default:
		{
			throw new NoViableAltException(LT(1), getFilename());
		}
		}
	}
	
	public final void value() throws RecognitionException, TokenStreamException {
		
		
		switch ( LA(1)) {
		case IDENTIFIER:
		{
			field();
			break;
		}
		case DECIMAL_LITERAL:
		case HEX_LITERAL:
		case OCTAL_LITERAL:
		case STRING_LITERAL:
		case LITERAL_null:
		case THIS:
		{
			literal();
			break;
		}
		default:
		{
			throw new NoViableAltException(LT(1), getFilename());
		}
		}
	}
	
	public final void expression() throws RecognitionException, TokenStreamException {
		
		
		expr();
		match(Token.EOF_TYPE);
	}
	
	public final void expr() throws RecognitionException, TokenStreamException {
		
		
		if ((LA(1)==LPAREN) && (_tokenSet_1.member(LA(2)))) {
			match(LPAREN);
			comparisonExpression();
			match(RPAREN);
		}
		else if ((LA(1)==LPAREN) && (LA(2)==LPAREN)) {
			match(LPAREN);
			joinedExpression();
			match(RPAREN);
		}
		else {
			throw new NoViableAltException(LT(1), getFilename());
		}
		
	}
	
	public final void comparisonExpression() throws RecognitionException, TokenStreamException {
		
		
		value();
		comparison();
		value();
		
			    Object v2 = argStack.pop();
			    Object comp = argStack.pop();
		Object v1 = argStack.pop();
		argStack.push(new Boolean(evaluateComparison(v1, comp, v2)));
		
	}
	
	public final void joinedExpression() throws RecognitionException, TokenStreamException {
		
		
		expr();
		join();
		expr();
		
		Boolean v1 = (Boolean) argStack.pop();
		Integer join = (Integer) argStack.pop();
		Boolean v2 = (Boolean) argStack.pop();
		if (join.intValue() == AND) {
		argStack.push(new Boolean(v1.booleanValue() && v2.booleanValue()));
		} else {
		argStack.push(new Boolean(v1.booleanValue() || v2.booleanValue()));
		}
		
	}
	
	public final void join() throws RecognitionException, TokenStreamException {
		
		
		switch ( LA(1)) {
		case ANDSIGN:
		{
			match(ANDSIGN);
			argStack.push(new Integer(AND));
			break;
		}
		case ORSIGN:
		{
			match(ORSIGN);
			argStack.push(new Integer(OR));
			break;
		}
		default:
		{
			throw new NoViableAltException(LT(1), getFilename());
		}
		}
	}
	
	public final void comparison() throws RecognitionException, TokenStreamException {
		
		
		switch ( LA(1)) {
		case EQUALSIGN:
		{
			match(EQUALSIGN);
			argStack.push(new Integer(EQUAL));
			break;
		}
		case GREATERTHANSIGN:
		{
			match(GREATERTHANSIGN);
			argStack.push(new Integer(GREATER_THAN));
			break;
		}
		case GREATEREQUALSIGN:
		{
			match(GREATEREQUALSIGN);
			argStack.push(new Integer(GREATER_EQUAL));
			break;
		}
		case LESSTHANSIGN:
		{
			match(LESSTHANSIGN);
			argStack.push(new Integer(LESS_THAN));
			break;
		}
		case LESSEQUALSIGN:
		{
			match(LESSEQUALSIGN);
			argStack.push(new Integer(LESS_EQUAL));
			break;
		}
		case NOTEQUALSIGN:
		{
			match(NOTEQUALSIGN);
			argStack.push(new Integer(NOT_EQUAL));
			break;
		}
		default:
		{
			throw new NoViableAltException(LT(1), getFilename());
		}
		}
	}
	
	
	public static final String[] _tokenNames = {
		"<0>",
		"EOF",
		"<2>",
		"NULL_TREE_LOOKAHEAD",
		"DECIMAL_LITERAL",
		"HEX_LITERAL",
		"OCTAL_LITERAL",
		"STRING_LITERAL",
		"IDENTIFIER",
		"LBRACKET",
		"RBRACKET",
		"\"null\"",
		"THIS",
		"LPAREN",
		"RPAREN",
		"\"and\"",
		"\"or\"",
		"EQUALSIGN",
		"GREATERTHANSIGN",
		"GREATEREQUALSIGN",
		"LESSTHANSIGN",
		"LESSEQUALSIGN",
		"NOTEQUALSIGN",
		"WS"
	};
	
	private static final long[] mk_tokenSet_0() {
		long[] data = { 8273920L, 0L};
		return data;
	}
	public static final BitSet _tokenSet_0 = new BitSet(mk_tokenSet_0());
	private static final long[] mk_tokenSet_1() {
		long[] data = { 6640L, 0L};
		return data;
	}
	public static final BitSet _tokenSet_1 = new BitSet(mk_tokenSet_1());
	
	}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲人123区| 波多野结衣在线一区| 色婷婷综合久久久久中文| 国产亚洲一区二区在线观看| 日韩在线一区二区三区| 欧美日本一区二区| 日本大胆欧美人术艺术动态| 欧美久久久久久蜜桃| 午夜精品久久久久久久| 欧美精品精品一区| 日韩精品午夜视频| 日韩欧美在线不卡| 国产成人小视频| 国产精品污网站| 91丨九色丨黑人外教| 亚洲v精品v日韩v欧美v专区| 欧美一区二区成人| 国产成人一级电影| 亚洲免费在线观看| 91精品国产色综合久久不卡蜜臀| 免费欧美在线视频| 国产精品国产自产拍高清av王其| 91网站最新网址| 亚洲国产综合人成综合网站| 国产成人午夜片在线观看高清观看| 久久综合资源网| www.视频一区| 日韩中文字幕一区二区三区| 国产嫩草影院久久久久| 欧美综合在线视频| 激情另类小说区图片区视频区| 欧美激情一区二区三区蜜桃视频| 91成人国产精品| 国产剧情一区二区| 日本亚洲三级在线| 亚洲视频每日更新| wwwwxxxxx欧美| 91精品婷婷国产综合久久竹菊| 成人中文字幕在线| 日本欧美加勒比视频| 亚洲在线观看免费| 国产精品区一区二区三| 日韩视频不卡中文| 欧美性生活影院| 91美女在线视频| 国产一区中文字幕| 麻豆国产91在线播放| 性欧美大战久久久久久久久| 亚洲激情男女视频| 中文字幕欧美国产| 国产欧美一区二区三区鸳鸯浴| 精品理论电影在线| 日韩一区二区在线观看| 欧美一区欧美二区| 日韩欧美一二三| 日韩精品一区二区三区四区视频| 欧美精品一二三区| 欧美一区二区精品在线| 欧美va亚洲va| 国产亚洲欧美日韩在线一区| 久久久精品欧美丰满| 中文文精品字幕一区二区| av一区二区三区| 99久久久精品| 91精品福利视频| 777久久久精品| 精品国产成人系列| 国产精品第四页| 亚洲成人一二三| 韩国精品在线观看| 色噜噜偷拍精品综合在线| 欧美性一二三区| 精品欧美乱码久久久久久1区2区| 久久久久久久电影| 亚洲欧洲www| 午夜精品福利一区二区蜜股av| 蜜臀精品一区二区三区在线观看 | 欧美无乱码久久久免费午夜一区| 色88888久久久久久影院野外| 色网站国产精品| 欧美精品 国产精品| 国产精品久久久久久久久免费桃花| 亚洲影视在线播放| 久久精品久久精品| 色噜噜狠狠成人中文综合| 精品国产乱码久久久久久免费| 亚洲欧洲一区二区三区| 精品一区二区免费看| 欧美综合天天夜夜久久| 国产欧美一区二区精品性色超碰| 亚洲高清视频的网址| 在线这里只有精品| 中文字幕精品综合| 国产不卡在线视频| 精品不卡在线视频| 日本大胆欧美人术艺术动态| 日本韩国一区二区三区| 国产精品对白交换视频| 国产一区二区三区免费观看| 91精品国产综合久久久蜜臀图片| 亚洲另类中文字| 91网站黄www| 欧美精品一区二区久久久| 中文字幕一区二区三区蜜月| 国产精品一品二品| 欧美一区二区三区四区五区 | 日韩精品久久理论片| 精品视频在线免费| 午夜av区久久| 欧美午夜电影一区| 亚洲一区欧美一区| 欧美日韩三级视频| 免费xxxx性欧美18vr| 日韩欧美一级特黄在线播放| 久久99精品久久久久婷婷| 日韩欧美一级精品久久| 国产精品亚洲一区二区三区妖精| 久久久91精品国产一区二区精品| 国产精品一区在线| 1024成人网色www| 欧美日韩一卡二卡| 久久精品国产第一区二区三区| 欧美成va人片在线观看| 成人免费看黄yyy456| 亚洲18女电影在线观看| 久久亚洲免费视频| 99久久99精品久久久久久| 人人爽香蕉精品| 亚洲欧洲精品一区二区精品久久久 | 亚洲小说欧美激情另类| 日韩女优av电影在线观看| 色呦呦网站一区| 丰满放荡岳乱妇91ww| 婷婷亚洲久悠悠色悠在线播放| 中国av一区二区三区| 欧美va亚洲va| 欧美一级专区免费大片| 91久久精品一区二区| 成人午夜视频在线观看| 日韩av电影免费观看高清完整版在线观看| 91精品国产手机| 成人永久免费视频| 人禽交欧美网站| 亚洲一区二区3| 亚洲免费观看高清在线观看| 日韩精品一区二区三区在线 | 国产在线一区观看| 老司机午夜精品| 六月婷婷色综合| 日本不卡免费在线视频| 日韩精品免费视频人成| 日韩综合小视频| 免费成人美女在线观看.| 亚洲午夜免费电影| 午夜精品在线视频一区| 天天色天天操综合| 日本在线不卡视频| 韩国视频一区二区| 黑人巨大精品欧美一区| 麻豆一区二区三| 国产精品一区二区无线| 国产一区欧美一区| 国产成人一区在线| 色综合久久天天| 欧美日韩电影在线| 久久精品视频一区二区三区| 国产精品久久综合| 亚洲美女视频在线| 免费观看91视频大全| 成人av资源在线| 欧美日韩一区小说| 久久久久免费观看| 亚洲国产精品一区二区久久| 久久99这里只有精品| 99久久久免费精品国产一区二区| 色噜噜狠狠色综合中国| 欧美精品一区二区在线播放| 中文字幕在线一区免费| 午夜成人在线视频| av亚洲精华国产精华精| 日韩亚洲欧美在线| 亚洲欧美欧美一区二区三区| 美日韩一区二区三区| 91国产视频在线观看| 国产日韩欧美综合在线| 日本欧美韩国一区三区| 91免费在线播放| 国产精品国产精品国产专区不蜜| 久久久不卡网国产精品二区| 亚洲与欧洲av电影| www.成人在线| 久久精品亚洲国产奇米99| 午夜成人在线视频| 91国产精品成人| 亚洲欧美电影院| 色先锋久久av资源部| 亚洲欧美日韩精品久久久久| kk眼镜猥琐国模调教系列一区二区| 欧美电视剧在线看免费| 久久99精品国产91久久来源|