1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166
use crate::atn::ATN;
use crate::parser::ParserNodeType;
use crate::token_factory::TokenAware;
use crate::vocabulary::Vocabulary;
/// Major version of this runtime.
/// Used by generated parser to verify that it is compatible with current version of runtime
pub const VERSION_MAJOR: &'static str = env!("CARGO_PKG_VERSION_MAJOR");
/// Major version of this runtime.
/// Used by generated parser to verify that it is compatible with current version of runtime
pub const VERSION_MINOR: &'static str = env!("CARGO_PKG_VERSION_MINOR");
// todo move to compile time check when it will be possible to compare strings in constants
/// Used by generated parser to verify that it is compatible with current version of runtime
pub fn check_version(major: &str, minor: &str) {
assert!(major == VERSION_MAJOR && minor == VERSION_MINOR,
"parser is not compatible with current runtime version, please generate parser with the latest version of ANTLR")
}
//todo just a reminder to update version to be inserted in generated parser,
//const _:[();0-!(VERSION_MAJOR == "0" && VERSION_MINOR == "2") as usize] = [];
/// **! Usually generated by ANTLR !**
pub trait Recognizer<'input>: TokenAware<'input> {
type Node: ParserNodeType<'input, TF = Self::TF>;
fn sempred(
&mut self,
_localctx: Option<&<Self::Node as ParserNodeType<'input>>::Type>,
_rule_index: isize,
_action_index: isize,
) -> bool
where
Self: Sized,
{
true
}
fn action(
&mut self,
_localctx: Option<&<Self::Node as ParserNodeType<'input>>::Type>,
_rule_index: isize,
_action_index: isize,
) where
Self: Sized,
{
}
/// Returns array of rule names.
/// Used for debugging and error reporting
fn get_rule_names(&self) -> &[&str] {
&[]
}
fn get_vocabulary(&self) -> &dyn Vocabulary {
unimplemented!()
}
/// Name of the file this recognizer was generated from
fn get_grammar_file_name(&self) -> &str {
""
}
fn get_atn(&self) -> &ATN {
unimplemented!()
}
}
/// **! Usually generated by ANTLR !**
///
/// Used to make user predicates and actions callable by parser
/// Generated by ANTLR tool from actions and predicated added in grammar file
pub trait Actions<'a, P: Recognizer<'a>> {
fn sempred(
_localctx: Option<&<P::Node as ParserNodeType<'a>>::Type>,
_rule_index: isize,
_action_index: isize,
_recog: &mut P,
) -> bool {
true
}
fn action(
_localctx: Option<&<P::Node as ParserNodeType<'a>>::Type>,
_rule_index: isize,
_action_index: isize,
_recog: &mut P,
) {
}
/// Returns array of rule names.
/// Used for debugging and error reporting
fn get_rule_names(&self) -> &[&str] {
&[]
}
fn get_vocabulary(&self) -> &dyn Vocabulary {
unimplemented!()
}
/// Name of the file this recognizer was generated from
fn get_grammar_file_name(&self) -> &str {
""
}
fn get_atn(&self) -> &ATN {
unimplemented!()
}
}
//impl Recognizer for BaseRecognizer {
// fn get_state(&self) -> isize {
// self.state
// }
//
// fn set_state(&mut self, _v: isize) {
// self.state = _v;
// }
//
// fn add_error_listener(&mut self, _listener: Box<ErrorListener>) {
// self.listeners.push(_listener)
// }
//
// fn remove_error_listeners(&self) {
// unimplemented!()
// }
//
// fn get_error_listener_dispatch(&self) -> Box<ErrorListener> {
// unimplemented!()
// }
//}
//
//pub struct BaseRecognizer {
// pub listeners: Vec<Box<ErrorListener>>,
// pub state: isize, // rule_names: Vec<String>,
// // literal_names: Vec<String>,
// // symbolic_names: Vec<String>,
// // grammar_file_name: String
//}
//
//impl BaseRecognizer {
// pub fn new_base_recognizer() -> BaseRecognizer {
// BaseRecognizer {
// listeners: Vec::new(),
// state: -1,
// }
// }
//
// fn check_version(&self, _toolVersion: String) {
// unimplemented!()
// }
//
// fn get_token_names(&self) -> Vec<String> {
// unimplemented!()
// }
//
// fn get_rule_index_map(&self) -> Map<isize, String> {
// unimplemented!()
// }
//
// fn get_token_type(&self, _tokenName: String) -> isize {
// unimplemented!()
// }
//
// fn get_error_header(&self, _e: ANTLRError) -> String {
// unimplemented!()
// }
//
// fn get_token_error_display(&self, _t: &Token) -> String {
// unimplemented!()
// }
//}