1 /* 2 * [The "BSD licence"] 3 * Copyright (c) 2005-2008 Terence Parr 4 * All rights reserved. 5 * 6 * Conversion to C#: 7 * Copyright (c) 2008 Sam Harwell, Pixel Mine, Inc. 8 * All rights reserved. 9 * 10 * Redistribution and use in source and binary forms, with or without 11 * modification, are permitted provided that the following conditions 12 * are met: 13 * 1. Redistributions of source code must retain the above copyright 14 * notice, this list of conditions and the following disclaimer. 15 * 2. Redistributions in binary form must reproduce the above copyright 16 * notice, this list of conditions and the following disclaimer in the 17 * documentation and/or other materials provided with the distribution. 18 * 3. The name of the author may not be used to endorse or promote products 19 * derived from this software without specific prior written permission. 20 * 21 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 22 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 23 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 24 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 25 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 26 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 27 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 28 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 29 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 30 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31 */ 32 33 namespace Antlr.Runtime { 34 using ArgumentNullException = System.ArgumentNullException; 35 using Exception = System.Exception; 36 using SerializationInfo = System.Runtime.Serialization.SerializationInfo; 37 using StreamingContext = System.Runtime.Serialization.StreamingContext; 38 39 /** <summary> 40 * A semantic predicate failed during validation. Validation of predicates 41 * occurs when normally parsing the alternative just like matching a token. 42 * Disambiguating predicate evaluation occurs when we hoist a predicate into 43 * a prediction decision. 44 * </summary> 45 */ 46 [System.Serializable] 47 public class FailedPredicateException : RecognitionException { 48 private readonly string _ruleName; 49 private readonly string _predicateText; 50 FailedPredicateException()51 public FailedPredicateException() { 52 } 53 FailedPredicateException(string message)54 public FailedPredicateException(string message) 55 : base(message) { 56 } 57 FailedPredicateException(string message, Exception innerException)58 public FailedPredicateException(string message, Exception innerException) 59 : base(message, innerException) { 60 } 61 FailedPredicateException(IIntStream input, string ruleName, string predicateText)62 public FailedPredicateException(IIntStream input, string ruleName, string predicateText) 63 : base(input) { 64 this._ruleName = ruleName; 65 this._predicateText = predicateText; 66 } 67 FailedPredicateException(string message, IIntStream input, string ruleName, string predicateText)68 public FailedPredicateException(string message, IIntStream input, string ruleName, string predicateText) 69 : base(message, input) { 70 this._ruleName = ruleName; 71 this._predicateText = predicateText; 72 } 73 FailedPredicateException(string message, IIntStream input, string ruleName, string predicateText, Exception innerException)74 public FailedPredicateException(string message, IIntStream input, string ruleName, string predicateText, Exception innerException) 75 : base(message, input, innerException) { 76 this._ruleName = ruleName; 77 this._predicateText = predicateText; 78 } 79 FailedPredicateException(SerializationInfo info, StreamingContext context)80 protected FailedPredicateException(SerializationInfo info, StreamingContext context) 81 : base(info, context) { 82 if (info == null) 83 throw new ArgumentNullException("info"); 84 85 this._ruleName = info.GetString("RuleName"); 86 this._predicateText = info.GetString("PredicateText"); 87 } 88 89 public string RuleName { 90 get { 91 return _ruleName; 92 } 93 } 94 95 public string PredicateText { 96 get { 97 return _predicateText; 98 } 99 } 100 GetObjectData(SerializationInfo info, StreamingContext context)101 public override void GetObjectData(SerializationInfo info, StreamingContext context) { 102 if (info == null) 103 throw new ArgumentNullException("info"); 104 105 base.GetObjectData(info, context); 106 info.AddValue("RuleName", _ruleName); 107 info.AddValue("PredicateText", _predicateText); 108 } 109 ToString()110 public override string ToString() { 111 return "FailedPredicateException(" + RuleName + ",{" + PredicateText + "}?)"; 112 } 113 } 114 } 115