use std::fmt::Debug;
use std::hash::Hash;
use rustemo::{
Result, Input as InputT, Lexer, Token, TokenRecognizer as TokenRecognizerT, Parser,
ParserDefinition, State as StateT, Builder,
};
use rustemo::regex::Regex;
use rustemo::once_cell::sync::Lazy;
use rustemo::StringLexer;
use rustemo::LRBuilder;
use super::rustemo_actions;
use rustemo::{LRParser, LRContext};
use rustemo::Action::{self, Shift, Reduce, Accept};
#[allow(unused_imports)]
use rustemo::debug::{log, logn};
#[allow(unused_imports)]
#[cfg(debug_assertions)]
use rustemo::yansi::Paint;
pub type Input = str;
const STATE_COUNT: usize = 145usize;
const MAX_RECOGNIZERS: usize = 15usize;
#[allow(dead_code)]
const TERMINAL_COUNT: usize = 44usize;
#[allow(clippy::upper_case_acronyms)]
#[derive(Debug, Default, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
pub enum TokenKind {
#[default]
STOP,
Terminals,
Import,
As,
Colon,
SemiColon,
Comma,
OBrace,
CBrace,
OBracket,
CBracket,
OSBracket,
CSBracket,
Choice,
ZeroOrMore,
ZeroOrMoreGreedy,
OneOrMore,
OneOrMoreGreedy,
Optional,
OptionalGreedy,
Equals,
QEquals,
Left,
Right,
Reduce,
Shift,
Dynamic,
NOPS,
NOPSE,
Prefer,
Finish,
NoFinish,
OComment,
CComment,
Name,
RegexTerm,
IntConst,
FloatConst,
BoolConst,
StrConst,
Annotation,
WS,
CommentLine,
NotComment,
}
use TokenKind as TK;
impl From<TokenKind> for usize {
fn from(t: TokenKind) -> Self {
t as usize
}
}
#[allow(clippy::enum_variant_names)]
#[derive(Clone, Copy, PartialEq)]
pub enum ProdKind {
FileP1,
GrammarRule1P1,
GrammarRule1P2,
FileP2,
ImportStm1P1,
ImportStm1P2,
FileP3,
TerminalRule1P1,
TerminalRule1P2,
FileP4,
FileP5,
ImportStmP1,
ImportStmP2,
GrammarRuleP1,
AnnotationOptP1,
AnnotationOptP2,
GrammarRuleP2,
GrammarRuleRHSP1,
GrammarRuleRHSP2,
ProductionP1,
Assignment1P1,
Assignment1P2,
ProductionP2,
TerminalRuleP1,
TerminalRuleP2,
TerminalRuleP3,
TerminalRuleP4,
ProdMetaDataLeft,
ProdMetaDataReduce,
ProdMetaDataRight,
ProdMetaDataShift,
ProdMetaDataDynamic,
ProdMetaDataNOPS,
ProdMetaDataNOPSE,
ProdMetaDataPriority,
ProdMetaDataP9,
ProdMetaDataP10,
ProdMetaDatasP1,
ProdMetaDatasP2,
TermMetaDataPrefer,
TermMetaDataFinish,
TermMetaDataNoFinish,
TermMetaDataLeft,
TermMetaDataReduce,
TermMetaDataRight,
TermMetaDataShift,
TermMetaDataDynamic,
TermMetaDataPriority,
TermMetaDataP10,
TermMetaDatasP1,
TermMetaDatasP2,
UserMetaDataP1,
ProdKindP1,
ConstValP1,
ConstValP2,
ConstValP3,
ConstValP4,
AssignmentP1,
AssignmentP2,
AssignmentP3,
PlainAssignmentP1,
BoolAssignmentP1,
ProductionGroupP1,
GrammarSymbolRefP1,
RepetitionOperatorOptP1,
RepetitionOperatorOptP2,
GrammarSymbolRefP2,
RepetitionOperatorP1,
RepetitionModifiersOptP1,
RepetitionModifiersOptP2,
RepetitionOperatorOpZeroOrMore,
RepetitionOperatorOpZeroOrMoreGreedy,
RepetitionOperatorOpOneOrMore,
RepetitionOperatorOpOneOrMoreGreedy,
RepetitionOperatorOpOptional,
RepetitionOperatorOpOptionalGreedy,
RepetitionModifiersP1,
RepetitionModifier1P1,
RepetitionModifier1P2,
RepetitionModifierP1,
GrammarSymbolP1,
GrammarSymbolP2,
RecognizerP1,
RecognizerP2,
LayoutP1,
LayoutItem1P1,
LayoutItem1P2,
LayoutItem0P1,
LayoutItem0P2,
LayoutItemP1,
LayoutItemP2,
CommentP1,
CommentP2,
CorncsP1,
Cornc1P1,
Cornc1P2,
Cornc0P1,
Cornc0P2,
CorncP1,
CorncP2,
CorncP3,
}
use ProdKind as PK;
impl std::fmt::Debug for ProdKind {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
let name = match self {
ProdKind::FileP1 => "File: GrammarRule1",
ProdKind::GrammarRule1P1 => "GrammarRule1: GrammarRule1 GrammarRule",
ProdKind::GrammarRule1P2 => "GrammarRule1: GrammarRule",
ProdKind::FileP2 => "File: ImportStm1 GrammarRule1",
ProdKind::ImportStm1P1 => "ImportStm1: ImportStm1 ImportStm",
ProdKind::ImportStm1P2 => "ImportStm1: ImportStm",
ProdKind::FileP3 => "File: GrammarRule1 Terminals TerminalRule1",
ProdKind::TerminalRule1P1 => "TerminalRule1: TerminalRule1 TerminalRule",
ProdKind::TerminalRule1P2 => "TerminalRule1: TerminalRule",
ProdKind::FileP4 => "File: ImportStm1 GrammarRule1 Terminals TerminalRule1",
ProdKind::FileP5 => "File: Terminals TerminalRule1",
ProdKind::ImportStmP1 => "ImportStm: Import StrConst",
ProdKind::ImportStmP2 => "ImportStm: Import StrConst As Name",
ProdKind::GrammarRuleP1 => {
"GrammarRule: AnnotationOpt Name Colon GrammarRuleRHS SemiColon"
}
ProdKind::AnnotationOptP1 => "AnnotationOpt: Annotation",
ProdKind::AnnotationOptP2 => "AnnotationOpt: ",
ProdKind::GrammarRuleP2 => {
"GrammarRule: AnnotationOpt Name OBrace ProdMetaDatas CBrace Colon GrammarRuleRHS SemiColon"
}
ProdKind::GrammarRuleRHSP1 => {
"GrammarRuleRHS: GrammarRuleRHS Choice Production"
}
ProdKind::GrammarRuleRHSP2 => "GrammarRuleRHS: Production",
ProdKind::ProductionP1 => "Production: Assignment1",
ProdKind::Assignment1P1 => "Assignment1: Assignment1 Assignment",
ProdKind::Assignment1P2 => "Assignment1: Assignment",
ProdKind::ProductionP2 => {
"Production: Assignment1 OBrace ProdMetaDatas CBrace"
}
ProdKind::TerminalRuleP1 => {
"TerminalRule: AnnotationOpt Name Colon Recognizer SemiColon"
}
ProdKind::TerminalRuleP2 => {
"TerminalRule: AnnotationOpt Name Colon SemiColon"
}
ProdKind::TerminalRuleP3 => {
"TerminalRule: AnnotationOpt Name Colon Recognizer OBrace TermMetaDatas CBrace SemiColon"
}
ProdKind::TerminalRuleP4 => {
"TerminalRule: AnnotationOpt Name Colon OBrace TermMetaDatas CBrace SemiColon"
}
ProdKind::ProdMetaDataLeft => "ProdMetaData: Left",
ProdKind::ProdMetaDataReduce => "ProdMetaData: Reduce",
ProdKind::ProdMetaDataRight => "ProdMetaData: Right",
ProdKind::ProdMetaDataShift => "ProdMetaData: Shift",
ProdKind::ProdMetaDataDynamic => "ProdMetaData: Dynamic",
ProdKind::ProdMetaDataNOPS => "ProdMetaData: NOPS",
ProdKind::ProdMetaDataNOPSE => "ProdMetaData: NOPSE",
ProdKind::ProdMetaDataPriority => "ProdMetaData: IntConst",
ProdKind::ProdMetaDataP9 => "ProdMetaData: UserMetaData",
ProdKind::ProdMetaDataP10 => "ProdMetaData: ProdKind",
ProdKind::ProdMetaDatasP1 => {
"ProdMetaDatas: ProdMetaDatas Comma ProdMetaData"
}
ProdKind::ProdMetaDatasP2 => "ProdMetaDatas: ProdMetaData",
ProdKind::TermMetaDataPrefer => "TermMetaData: Prefer",
ProdKind::TermMetaDataFinish => "TermMetaData: Finish",
ProdKind::TermMetaDataNoFinish => "TermMetaData: NoFinish",
ProdKind::TermMetaDataLeft => "TermMetaData: Left",
ProdKind::TermMetaDataReduce => "TermMetaData: Reduce",
ProdKind::TermMetaDataRight => "TermMetaData: Right",
ProdKind::TermMetaDataShift => "TermMetaData: Shift",
ProdKind::TermMetaDataDynamic => "TermMetaData: Dynamic",
ProdKind::TermMetaDataPriority => "TermMetaData: IntConst",
ProdKind::TermMetaDataP10 => "TermMetaData: UserMetaData",
ProdKind::TermMetaDatasP1 => {
"TermMetaDatas: TermMetaDatas Comma TermMetaData"
}
ProdKind::TermMetaDatasP2 => "TermMetaDatas: TermMetaData",
ProdKind::UserMetaDataP1 => "UserMetaData: Name Colon ConstVal",
ProdKind::ProdKindP1 => "ProdKind: Name",
ProdKind::ConstValP1 => "ConstVal: IntConst",
ProdKind::ConstValP2 => "ConstVal: FloatConst",
ProdKind::ConstValP3 => "ConstVal: BoolConst",
ProdKind::ConstValP4 => "ConstVal: StrConst",
ProdKind::AssignmentP1 => "Assignment: PlainAssignment",
ProdKind::AssignmentP2 => "Assignment: BoolAssignment",
ProdKind::AssignmentP3 => "Assignment: GrammarSymbolRef",
ProdKind::PlainAssignmentP1 => {
"PlainAssignment: Name Equals GrammarSymbolRef"
}
ProdKind::BoolAssignmentP1 => "BoolAssignment: Name QEquals GrammarSymbolRef",
ProdKind::ProductionGroupP1 => {
"ProductionGroup: OBracket GrammarRuleRHS CBracket"
}
ProdKind::GrammarSymbolRefP1 => {
"GrammarSymbolRef: GrammarSymbol RepetitionOperatorOpt"
}
ProdKind::RepetitionOperatorOptP1 => {
"RepetitionOperatorOpt: RepetitionOperator"
}
ProdKind::RepetitionOperatorOptP2 => "RepetitionOperatorOpt: ",
ProdKind::GrammarSymbolRefP2 => {
"GrammarSymbolRef: ProductionGroup RepetitionOperatorOpt"
}
ProdKind::RepetitionOperatorP1 => {
"RepetitionOperator: RepetitionOperatorOp RepetitionModifiersOpt"
}
ProdKind::RepetitionModifiersOptP1 => {
"RepetitionModifiersOpt: RepetitionModifiers"
}
ProdKind::RepetitionModifiersOptP2 => "RepetitionModifiersOpt: ",
ProdKind::RepetitionOperatorOpZeroOrMore => {
"RepetitionOperatorOp: ZeroOrMore"
}
ProdKind::RepetitionOperatorOpZeroOrMoreGreedy => {
"RepetitionOperatorOp: ZeroOrMoreGreedy"
}
ProdKind::RepetitionOperatorOpOneOrMore => "RepetitionOperatorOp: OneOrMore",
ProdKind::RepetitionOperatorOpOneOrMoreGreedy => {
"RepetitionOperatorOp: OneOrMoreGreedy"
}
ProdKind::RepetitionOperatorOpOptional => "RepetitionOperatorOp: Optional",
ProdKind::RepetitionOperatorOpOptionalGreedy => {
"RepetitionOperatorOp: OptionalGreedy"
}
ProdKind::RepetitionModifiersP1 => {
"RepetitionModifiers: OSBracket RepetitionModifier1 CSBracket"
}
ProdKind::RepetitionModifier1P1 => {
"RepetitionModifier1: RepetitionModifier1 Comma RepetitionModifier"
}
ProdKind::RepetitionModifier1P2 => "RepetitionModifier1: RepetitionModifier",
ProdKind::RepetitionModifierP1 => "RepetitionModifier: Name",
ProdKind::GrammarSymbolP1 => "GrammarSymbol: Name",
ProdKind::GrammarSymbolP2 => "GrammarSymbol: StrConst",
ProdKind::RecognizerP1 => "Recognizer: StrConst",
ProdKind::RecognizerP2 => "Recognizer: RegexTerm",
ProdKind::LayoutP1 => "Layout: LayoutItem0",
ProdKind::LayoutItem1P1 => "LayoutItem1: LayoutItem1 LayoutItem",
ProdKind::LayoutItem1P2 => "LayoutItem1: LayoutItem",
ProdKind::LayoutItem0P1 => "LayoutItem0: LayoutItem1",
ProdKind::LayoutItem0P2 => "LayoutItem0: ",
ProdKind::LayoutItemP1 => "LayoutItem: WS",
ProdKind::LayoutItemP2 => "LayoutItem: Comment",
ProdKind::CommentP1 => "Comment: OComment Corncs CComment",
ProdKind::CommentP2 => "Comment: CommentLine",
ProdKind::CorncsP1 => "Corncs: Cornc0",
ProdKind::Cornc1P1 => "Cornc1: Cornc1 Cornc",
ProdKind::Cornc1P2 => "Cornc1: Cornc",
ProdKind::Cornc0P1 => "Cornc0: Cornc1",
ProdKind::Cornc0P2 => "Cornc0: ",
ProdKind::CorncP1 => "Cornc: Comment",
ProdKind::CorncP2 => "Cornc: NotComment",
ProdKind::CorncP3 => "Cornc: WS",
};
write!(f, "{name}")
}
}
#[allow(clippy::upper_case_acronyms)]
#[allow(dead_code)]
#[derive(Clone, Copy, Debug)]
pub enum NonTermKind {
EMPTY,
AUG,
AUGL,
File,
GrammarRule1,
ImportStm1,
TerminalRule1,
ImportStm,
GrammarRule,
AnnotationOpt,
GrammarRuleRHS,
Production,
Assignment1,
TerminalRule,
ProdMetaData,
ProdMetaDatas,
TermMetaData,
TermMetaDatas,
UserMetaData,
ProdKind,
ConstVal,
Assignment,
PlainAssignment,
BoolAssignment,
ProductionGroup,
GrammarSymbolRef,
RepetitionOperatorOpt,
RepetitionOperator,
RepetitionModifiersOpt,
RepetitionOperatorOp,
RepetitionModifiers,
RepetitionModifier1,
RepetitionModifier,
GrammarSymbol,
Recognizer,
Layout,
LayoutItem1,
LayoutItem0,
LayoutItem,
Comment,
Corncs,
Cornc1,
Cornc0,
Cornc,
}
impl From<ProdKind> for NonTermKind {
fn from(prod: ProdKind) -> Self {
match prod {
ProdKind::FileP1 => NonTermKind::File,
ProdKind::GrammarRule1P1 => NonTermKind::GrammarRule1,
ProdKind::GrammarRule1P2 => NonTermKind::GrammarRule1,
ProdKind::FileP2 => NonTermKind::File,
ProdKind::ImportStm1P1 => NonTermKind::ImportStm1,
ProdKind::ImportStm1P2 => NonTermKind::ImportStm1,
ProdKind::FileP3 => NonTermKind::File,
ProdKind::TerminalRule1P1 => NonTermKind::TerminalRule1,
ProdKind::TerminalRule1P2 => NonTermKind::TerminalRule1,
ProdKind::FileP4 => NonTermKind::File,
ProdKind::FileP5 => NonTermKind::File,
ProdKind::ImportStmP1 => NonTermKind::ImportStm,
ProdKind::ImportStmP2 => NonTermKind::ImportStm,
ProdKind::GrammarRuleP1 => NonTermKind::GrammarRule,
ProdKind::AnnotationOptP1 => NonTermKind::AnnotationOpt,
ProdKind::AnnotationOptP2 => NonTermKind::AnnotationOpt,
ProdKind::GrammarRuleP2 => NonTermKind::GrammarRule,
ProdKind::GrammarRuleRHSP1 => NonTermKind::GrammarRuleRHS,
ProdKind::GrammarRuleRHSP2 => NonTermKind::GrammarRuleRHS,
ProdKind::ProductionP1 => NonTermKind::Production,
ProdKind::Assignment1P1 => NonTermKind::Assignment1,
ProdKind::Assignment1P2 => NonTermKind::Assignment1,
ProdKind::ProductionP2 => NonTermKind::Production,
ProdKind::TerminalRuleP1 => NonTermKind::TerminalRule,
ProdKind::TerminalRuleP2 => NonTermKind::TerminalRule,
ProdKind::TerminalRuleP3 => NonTermKind::TerminalRule,
ProdKind::TerminalRuleP4 => NonTermKind::TerminalRule,
ProdKind::ProdMetaDataLeft => NonTermKind::ProdMetaData,
ProdKind::ProdMetaDataReduce => NonTermKind::ProdMetaData,
ProdKind::ProdMetaDataRight => NonTermKind::ProdMetaData,
ProdKind::ProdMetaDataShift => NonTermKind::ProdMetaData,
ProdKind::ProdMetaDataDynamic => NonTermKind::ProdMetaData,
ProdKind::ProdMetaDataNOPS => NonTermKind::ProdMetaData,
ProdKind::ProdMetaDataNOPSE => NonTermKind::ProdMetaData,
ProdKind::ProdMetaDataPriority => NonTermKind::ProdMetaData,
ProdKind::ProdMetaDataP9 => NonTermKind::ProdMetaData,
ProdKind::ProdMetaDataP10 => NonTermKind::ProdMetaData,
ProdKind::ProdMetaDatasP1 => NonTermKind::ProdMetaDatas,
ProdKind::ProdMetaDatasP2 => NonTermKind::ProdMetaDatas,
ProdKind::TermMetaDataPrefer => NonTermKind::TermMetaData,
ProdKind::TermMetaDataFinish => NonTermKind::TermMetaData,
ProdKind::TermMetaDataNoFinish => NonTermKind::TermMetaData,
ProdKind::TermMetaDataLeft => NonTermKind::TermMetaData,
ProdKind::TermMetaDataReduce => NonTermKind::TermMetaData,
ProdKind::TermMetaDataRight => NonTermKind::TermMetaData,
ProdKind::TermMetaDataShift => NonTermKind::TermMetaData,
ProdKind::TermMetaDataDynamic => NonTermKind::TermMetaData,
ProdKind::TermMetaDataPriority => NonTermKind::TermMetaData,
ProdKind::TermMetaDataP10 => NonTermKind::TermMetaData,
ProdKind::TermMetaDatasP1 => NonTermKind::TermMetaDatas,
ProdKind::TermMetaDatasP2 => NonTermKind::TermMetaDatas,
ProdKind::UserMetaDataP1 => NonTermKind::UserMetaData,
ProdKind::ProdKindP1 => NonTermKind::ProdKind,
ProdKind::ConstValP1 => NonTermKind::ConstVal,
ProdKind::ConstValP2 => NonTermKind::ConstVal,
ProdKind::ConstValP3 => NonTermKind::ConstVal,
ProdKind::ConstValP4 => NonTermKind::ConstVal,
ProdKind::AssignmentP1 => NonTermKind::Assignment,
ProdKind::AssignmentP2 => NonTermKind::Assignment,
ProdKind::AssignmentP3 => NonTermKind::Assignment,
ProdKind::PlainAssignmentP1 => NonTermKind::PlainAssignment,
ProdKind::BoolAssignmentP1 => NonTermKind::BoolAssignment,
ProdKind::ProductionGroupP1 => NonTermKind::ProductionGroup,
ProdKind::GrammarSymbolRefP1 => NonTermKind::GrammarSymbolRef,
ProdKind::RepetitionOperatorOptP1 => NonTermKind::RepetitionOperatorOpt,
ProdKind::RepetitionOperatorOptP2 => NonTermKind::RepetitionOperatorOpt,
ProdKind::GrammarSymbolRefP2 => NonTermKind::GrammarSymbolRef,
ProdKind::RepetitionOperatorP1 => NonTermKind::RepetitionOperator,
ProdKind::RepetitionModifiersOptP1 => NonTermKind::RepetitionModifiersOpt,
ProdKind::RepetitionModifiersOptP2 => NonTermKind::RepetitionModifiersOpt,
ProdKind::RepetitionOperatorOpZeroOrMore => NonTermKind::RepetitionOperatorOp,
ProdKind::RepetitionOperatorOpZeroOrMoreGreedy => {
NonTermKind::RepetitionOperatorOp
}
ProdKind::RepetitionOperatorOpOneOrMore => NonTermKind::RepetitionOperatorOp,
ProdKind::RepetitionOperatorOpOneOrMoreGreedy => {
NonTermKind::RepetitionOperatorOp
}
ProdKind::RepetitionOperatorOpOptional => NonTermKind::RepetitionOperatorOp,
ProdKind::RepetitionOperatorOpOptionalGreedy => {
NonTermKind::RepetitionOperatorOp
}
ProdKind::RepetitionModifiersP1 => NonTermKind::RepetitionModifiers,
ProdKind::RepetitionModifier1P1 => NonTermKind::RepetitionModifier1,
ProdKind::RepetitionModifier1P2 => NonTermKind::RepetitionModifier1,
ProdKind::RepetitionModifierP1 => NonTermKind::RepetitionModifier,
ProdKind::GrammarSymbolP1 => NonTermKind::GrammarSymbol,
ProdKind::GrammarSymbolP2 => NonTermKind::GrammarSymbol,
ProdKind::RecognizerP1 => NonTermKind::Recognizer,
ProdKind::RecognizerP2 => NonTermKind::Recognizer,
ProdKind::LayoutP1 => NonTermKind::Layout,
ProdKind::LayoutItem1P1 => NonTermKind::LayoutItem1,
ProdKind::LayoutItem1P2 => NonTermKind::LayoutItem1,
ProdKind::LayoutItem0P1 => NonTermKind::LayoutItem0,
ProdKind::LayoutItem0P2 => NonTermKind::LayoutItem0,
ProdKind::LayoutItemP1 => NonTermKind::LayoutItem,
ProdKind::LayoutItemP2 => NonTermKind::LayoutItem,
ProdKind::CommentP1 => NonTermKind::Comment,
ProdKind::CommentP2 => NonTermKind::Comment,
ProdKind::CorncsP1 => NonTermKind::Corncs,
ProdKind::Cornc1P1 => NonTermKind::Cornc1,
ProdKind::Cornc1P2 => NonTermKind::Cornc1,
ProdKind::Cornc0P1 => NonTermKind::Cornc0,
ProdKind::Cornc0P2 => NonTermKind::Cornc0,
ProdKind::CorncP1 => NonTermKind::Cornc,
ProdKind::CorncP2 => NonTermKind::Cornc,
ProdKind::CorncP3 => NonTermKind::Cornc,
}
}
}
#[allow(clippy::enum_variant_names)]
#[derive(Default, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
pub enum State {
#[default]
AUGS0,
TerminalsS1,
ImportS2,
AnnotationS3,
FileS4,
GrammarRule1S5,
ImportStm1S6,
ImportStmS7,
GrammarRuleS8,
AnnotationOptS9,
TerminalRule1S10,
AnnotationOptS11,
TerminalRuleS12,
StrConstS13,
TerminalsS14,
GrammarRuleS15,
GrammarRule1S16,
ImportStmS17,
NameS18,
TerminalRuleS19,
NameS20,
AsS21,
TerminalRule1S22,
TerminalsS23,
ColonS24,
OBraceS25,
ColonS26,
NameS27,
TerminalRule1S28,
OBracketS29,
NameS30,
StrConstS31,
GrammarRuleRHSS32,
ProductionS33,
Assignment1S34,
AssignmentS35,
PlainAssignmentS36,
BoolAssignmentS37,
ProductionGroupS38,
GrammarSymbolRefS39,
GrammarSymbolS40,
LeftS41,
RightS42,
ReduceS43,
ShiftS44,
DynamicS45,
NOPSS46,
NOPSES47,
NameS48,
IntConstS49,
ProdMetaDataS50,
ProdMetaDatasS51,
UserMetaDataS52,
ProdKindS53,
SemiColonS54,
OBraceS55,
RegexTermS56,
StrConstS57,
RecognizerS58,
GrammarRuleRHSS59,
EqualsS60,
QEqualsS61,
SemiColonS62,
ChoiceS63,
OBraceS64,
AssignmentS65,
ZeroOrMoreS66,
ZeroOrMoreGreedyS67,
OneOrMoreS68,
OneOrMoreGreedyS69,
OptionalS70,
OptionalGreedyS71,
RepetitionOperatorOptS72,
RepetitionOperatorS73,
RepetitionOperatorOpS74,
RepetitionOperatorOptS75,
ColonS76,
CommaS77,
CBraceS78,
LeftS79,
RightS80,
ReduceS81,
ShiftS82,
DynamicS83,
PreferS84,
FinishS85,
NoFinishS86,
NameS87,
IntConstS88,
TermMetaDataS89,
TermMetaDatasS90,
UserMetaDataS91,
SemiColonS92,
OBraceS93,
CBracketS94,
NameS95,
GrammarSymbolRefS96,
GrammarSymbolRefS97,
ProductionS98,
ProdMetaDatasS99,
OSBracketS100,
RepetitionModifiersOptS101,
RepetitionModifiersS102,
IntConstS103,
FloatConstS104,
BoolConstS105,
StrConstS106,
ConstValS107,
ProdMetaDataS108,
ColonS109,
CommaS110,
CBraceS111,
TermMetaDatasS112,
CBraceS113,
NameS114,
RepetitionModifier1S115,
RepetitionModifierS116,
GrammarRuleRHSS117,
TermMetaDataS118,
SemiColonS119,
CBraceS120,
CommaS121,
CSBracketS122,
SemiColonS123,
SemiColonS124,
RepetitionModifierS125,
AUGLS126,
OCommentS127,
WSS128,
CommentLineS129,
LayoutS130,
LayoutItem1S131,
LayoutItem0S132,
LayoutItemS133,
CommentS134,
WSS135,
NotCommentS136,
CommentS137,
CorncsS138,
Cornc1S139,
Cornc0S140,
CorncS141,
LayoutItemS142,
CCommentS143,
CorncS144,
}
impl StateT for State {
fn default_layout() -> Option<Self> {
Some(State::AUGLS126)
}
}
impl From<State> for usize {
fn from(s: State) -> Self {
s as usize
}
}
impl std::fmt::Debug for State {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
let name = match self {
State::AUGS0 => "0:AUG",
State::TerminalsS1 => "1:Terminals",
State::ImportS2 => "2:Import",
State::AnnotationS3 => "3:Annotation",
State::FileS4 => "4:File",
State::GrammarRule1S5 => "5:GrammarRule1",
State::ImportStm1S6 => "6:ImportStm1",
State::ImportStmS7 => "7:ImportStm",
State::GrammarRuleS8 => "8:GrammarRule",
State::AnnotationOptS9 => "9:AnnotationOpt",
State::TerminalRule1S10 => "10:TerminalRule1",
State::AnnotationOptS11 => "11:AnnotationOpt",
State::TerminalRuleS12 => "12:TerminalRule",
State::StrConstS13 => "13:StrConst",
State::TerminalsS14 => "14:Terminals",
State::GrammarRuleS15 => "15:GrammarRule",
State::GrammarRule1S16 => "16:GrammarRule1",
State::ImportStmS17 => "17:ImportStm",
State::NameS18 => "18:Name",
State::TerminalRuleS19 => "19:TerminalRule",
State::NameS20 => "20:Name",
State::AsS21 => "21:As",
State::TerminalRule1S22 => "22:TerminalRule1",
State::TerminalsS23 => "23:Terminals",
State::ColonS24 => "24:Colon",
State::OBraceS25 => "25:OBrace",
State::ColonS26 => "26:Colon",
State::NameS27 => "27:Name",
State::TerminalRule1S28 => "28:TerminalRule1",
State::OBracketS29 => "29:OBracket",
State::NameS30 => "30:Name",
State::StrConstS31 => "31:StrConst",
State::GrammarRuleRHSS32 => "32:GrammarRuleRHS",
State::ProductionS33 => "33:Production",
State::Assignment1S34 => "34:Assignment1",
State::AssignmentS35 => "35:Assignment",
State::PlainAssignmentS36 => "36:PlainAssignment",
State::BoolAssignmentS37 => "37:BoolAssignment",
State::ProductionGroupS38 => "38:ProductionGroup",
State::GrammarSymbolRefS39 => "39:GrammarSymbolRef",
State::GrammarSymbolS40 => "40:GrammarSymbol",
State::LeftS41 => "41:Left",
State::RightS42 => "42:Right",
State::ReduceS43 => "43:Reduce",
State::ShiftS44 => "44:Shift",
State::DynamicS45 => "45:Dynamic",
State::NOPSS46 => "46:NOPS",
State::NOPSES47 => "47:NOPSE",
State::NameS48 => "48:Name",
State::IntConstS49 => "49:IntConst",
State::ProdMetaDataS50 => "50:ProdMetaData",
State::ProdMetaDatasS51 => "51:ProdMetaDatas",
State::UserMetaDataS52 => "52:UserMetaData",
State::ProdKindS53 => "53:ProdKind",
State::SemiColonS54 => "54:SemiColon",
State::OBraceS55 => "55:OBrace",
State::RegexTermS56 => "56:RegexTerm",
State::StrConstS57 => "57:StrConst",
State::RecognizerS58 => "58:Recognizer",
State::GrammarRuleRHSS59 => "59:GrammarRuleRHS",
State::EqualsS60 => "60:Equals",
State::QEqualsS61 => "61:QEquals",
State::SemiColonS62 => "62:SemiColon",
State::ChoiceS63 => "63:Choice",
State::OBraceS64 => "64:OBrace",
State::AssignmentS65 => "65:Assignment",
State::ZeroOrMoreS66 => "66:ZeroOrMore",
State::ZeroOrMoreGreedyS67 => "67:ZeroOrMoreGreedy",
State::OneOrMoreS68 => "68:OneOrMore",
State::OneOrMoreGreedyS69 => "69:OneOrMoreGreedy",
State::OptionalS70 => "70:Optional",
State::OptionalGreedyS71 => "71:OptionalGreedy",
State::RepetitionOperatorOptS72 => "72:RepetitionOperatorOpt",
State::RepetitionOperatorS73 => "73:RepetitionOperator",
State::RepetitionOperatorOpS74 => "74:RepetitionOperatorOp",
State::RepetitionOperatorOptS75 => "75:RepetitionOperatorOpt",
State::ColonS76 => "76:Colon",
State::CommaS77 => "77:Comma",
State::CBraceS78 => "78:CBrace",
State::LeftS79 => "79:Left",
State::RightS80 => "80:Right",
State::ReduceS81 => "81:Reduce",
State::ShiftS82 => "82:Shift",
State::DynamicS83 => "83:Dynamic",
State::PreferS84 => "84:Prefer",
State::FinishS85 => "85:Finish",
State::NoFinishS86 => "86:NoFinish",
State::NameS87 => "87:Name",
State::IntConstS88 => "88:IntConst",
State::TermMetaDataS89 => "89:TermMetaData",
State::TermMetaDatasS90 => "90:TermMetaDatas",
State::UserMetaDataS91 => "91:UserMetaData",
State::SemiColonS92 => "92:SemiColon",
State::OBraceS93 => "93:OBrace",
State::CBracketS94 => "94:CBracket",
State::NameS95 => "95:Name",
State::GrammarSymbolRefS96 => "96:GrammarSymbolRef",
State::GrammarSymbolRefS97 => "97:GrammarSymbolRef",
State::ProductionS98 => "98:Production",
State::ProdMetaDatasS99 => "99:ProdMetaDatas",
State::OSBracketS100 => "100:OSBracket",
State::RepetitionModifiersOptS101 => "101:RepetitionModifiersOpt",
State::RepetitionModifiersS102 => "102:RepetitionModifiers",
State::IntConstS103 => "103:IntConst",
State::FloatConstS104 => "104:FloatConst",
State::BoolConstS105 => "105:BoolConst",
State::StrConstS106 => "106:StrConst",
State::ConstValS107 => "107:ConstVal",
State::ProdMetaDataS108 => "108:ProdMetaData",
State::ColonS109 => "109:Colon",
State::CommaS110 => "110:Comma",
State::CBraceS111 => "111:CBrace",
State::TermMetaDatasS112 => "112:TermMetaDatas",
State::CBraceS113 => "113:CBrace",
State::NameS114 => "114:Name",
State::RepetitionModifier1S115 => "115:RepetitionModifier1",
State::RepetitionModifierS116 => "116:RepetitionModifier",
State::GrammarRuleRHSS117 => "117:GrammarRuleRHS",
State::TermMetaDataS118 => "118:TermMetaData",
State::SemiColonS119 => "119:SemiColon",
State::CBraceS120 => "120:CBrace",
State::CommaS121 => "121:Comma",
State::CSBracketS122 => "122:CSBracket",
State::SemiColonS123 => "123:SemiColon",
State::SemiColonS124 => "124:SemiColon",
State::RepetitionModifierS125 => "125:RepetitionModifier",
State::AUGLS126 => "126:AUGL",
State::OCommentS127 => "127:OComment",
State::WSS128 => "128:WS",
State::CommentLineS129 => "129:CommentLine",
State::LayoutS130 => "130:Layout",
State::LayoutItem1S131 => "131:LayoutItem1",
State::LayoutItem0S132 => "132:LayoutItem0",
State::LayoutItemS133 => "133:LayoutItem",
State::CommentS134 => "134:Comment",
State::WSS135 => "135:WS",
State::NotCommentS136 => "136:NotComment",
State::CommentS137 => "137:Comment",
State::CorncsS138 => "138:Corncs",
State::Cornc1S139 => "139:Cornc1",
State::Cornc0S140 => "140:Cornc0",
State::CorncS141 => "141:Cornc",
State::LayoutItemS142 => "142:LayoutItem",
State::CCommentS143 => "143:CComment",
State::CorncS144 => "144:Cornc",
};
write!(f, "{name}")
}
}
#[derive(Debug)]
pub enum Symbol {
Terminal(Terminal),
NonTerminal(NonTerminal),
}
#[allow(clippy::upper_case_acronyms)]
#[derive(Debug)]
pub enum Terminal {
Terminals,
Import,
As,
Colon,
SemiColon,
Comma,
OBrace,
CBrace,
OBracket,
CBracket,
OSBracket,
CSBracket,
Choice,
ZeroOrMore,
ZeroOrMoreGreedy,
OneOrMore,
OneOrMoreGreedy,
Optional,
OptionalGreedy,
Equals,
QEquals,
Left,
Right,
Reduce,
Shift,
Dynamic,
NOPS,
NOPSE,
Prefer,
Finish,
NoFinish,
Name(rustemo_actions::Name),
RegexTerm(rustemo_actions::RegexTerm),
IntConst(rustemo_actions::IntConst),
FloatConst(rustemo_actions::FloatConst),
BoolConst(rustemo_actions::BoolConst),
StrConst(rustemo_actions::StrConst),
Annotation(rustemo_actions::Annotation),
}
#[derive(Debug)]
pub enum NonTerminal {
File(rustemo_actions::File),
GrammarRule1(rustemo_actions::GrammarRule1),
ImportStm1(rustemo_actions::ImportStm1),
TerminalRule1(rustemo_actions::TerminalRule1),
ImportStm(rustemo_actions::ImportStm),
GrammarRule(rustemo_actions::GrammarRule),
AnnotationOpt(rustemo_actions::AnnotationOpt),
GrammarRuleRHS(rustemo_actions::GrammarRuleRHS),
Production(rustemo_actions::Production),
Assignment1(rustemo_actions::Assignment1),
TerminalRule(rustemo_actions::TerminalRule),
ProdMetaData(rustemo_actions::ProdMetaData),
ProdMetaDatas(rustemo_actions::ProdMetaDatas),
TermMetaData(rustemo_actions::TermMetaData),
TermMetaDatas(rustemo_actions::TermMetaDatas),
UserMetaData(rustemo_actions::UserMetaData),
ProdKind(rustemo_actions::ProdKind),
ConstVal(rustemo_actions::ConstVal),
Assignment(rustemo_actions::Assignment),
PlainAssignment(rustemo_actions::PlainAssignment),
BoolAssignment(rustemo_actions::BoolAssignment),
ProductionGroup(rustemo_actions::ProductionGroup),
GrammarSymbolRef(rustemo_actions::GrammarSymbolRef),
RepetitionOperatorOpt(rustemo_actions::RepetitionOperatorOpt),
RepetitionOperator(rustemo_actions::RepetitionOperator),
RepetitionModifiersOpt(rustemo_actions::RepetitionModifiersOpt),
RepetitionOperatorOp(rustemo_actions::RepetitionOperatorOp),
RepetitionModifiers(rustemo_actions::RepetitionModifiers),
RepetitionModifier1(rustemo_actions::RepetitionModifier1),
RepetitionModifier(rustemo_actions::RepetitionModifier),
GrammarSymbol(rustemo_actions::GrammarSymbol),
Recognizer(rustemo_actions::Recognizer),
}
type ActionFn = fn(token: TokenKind) -> Vec<Action<State, ProdKind>>;
pub struct RustemoParserDefinition {
actions: [ActionFn; STATE_COUNT],
gotos: [fn(nonterm: NonTermKind) -> State; STATE_COUNT],
token_kinds: [[Option<(TokenKind, bool)>; MAX_RECOGNIZERS]; STATE_COUNT],
}
fn action_aug_s0(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::Terminals => Vec::from(&[Shift(State::TerminalsS1)]),
TK::Import => Vec::from(&[Shift(State::ImportS2)]),
TK::Name => Vec::from(&[Reduce(PK::AnnotationOptP2, 0usize)]),
TK::Annotation => Vec::from(&[Shift(State::AnnotationS3)]),
_ => vec![],
}
}
fn action_terminals_s1(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::Name => Vec::from(&[Reduce(PK::AnnotationOptP2, 0usize)]),
TK::Annotation => Vec::from(&[Shift(State::AnnotationS3)]),
_ => vec![],
}
}
fn action_import_s2(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::StrConst => Vec::from(&[Shift(State::StrConstS13)]),
_ => vec![],
}
}
fn action_annotation_s3(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::Name => Vec::from(&[Reduce(PK::AnnotationOptP1, 1usize)]),
_ => vec![],
}
}
fn action_file_s4(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::STOP => Vec::from(&[Accept]),
_ => vec![],
}
}
fn action_grammarrule1_s5(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::STOP => Vec::from(&[Reduce(PK::FileP1, 1usize)]),
TK::Terminals => Vec::from(&[Shift(State::TerminalsS14)]),
TK::Name => Vec::from(&[Reduce(PK::AnnotationOptP2, 0usize)]),
TK::Annotation => Vec::from(&[Shift(State::AnnotationS3)]),
_ => vec![],
}
}
fn action_importstm1_s6(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::Import => Vec::from(&[Shift(State::ImportS2)]),
TK::Name => Vec::from(&[Reduce(PK::AnnotationOptP2, 0usize)]),
TK::Annotation => Vec::from(&[Shift(State::AnnotationS3)]),
_ => vec![],
}
}
fn action_importstm_s7(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::Import => Vec::from(&[Reduce(PK::ImportStm1P2, 1usize)]),
TK::Name => Vec::from(&[Reduce(PK::ImportStm1P2, 1usize)]),
TK::Annotation => Vec::from(&[Reduce(PK::ImportStm1P2, 1usize)]),
_ => vec![],
}
}
fn action_grammarrule_s8(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::STOP => Vec::from(&[Reduce(PK::GrammarRule1P2, 1usize)]),
TK::Terminals => Vec::from(&[Reduce(PK::GrammarRule1P2, 1usize)]),
TK::Name => Vec::from(&[Reduce(PK::GrammarRule1P2, 1usize)]),
TK::Annotation => Vec::from(&[Reduce(PK::GrammarRule1P2, 1usize)]),
_ => vec![],
}
}
fn action_annotationopt_s9(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::Name => Vec::from(&[Shift(State::NameS18)]),
_ => vec![],
}
}
fn action_terminalrule1_s10(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::STOP => Vec::from(&[Reduce(PK::FileP5, 2usize)]),
TK::Name => Vec::from(&[Reduce(PK::AnnotationOptP2, 0usize)]),
TK::Annotation => Vec::from(&[Shift(State::AnnotationS3)]),
_ => vec![],
}
}
fn action_annotationopt_s11(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::Name => Vec::from(&[Shift(State::NameS20)]),
_ => vec![],
}
}
fn action_terminalrule_s12(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::STOP => Vec::from(&[Reduce(PK::TerminalRule1P2, 1usize)]),
TK::Name => Vec::from(&[Reduce(PK::TerminalRule1P2, 1usize)]),
TK::Annotation => Vec::from(&[Reduce(PK::TerminalRule1P2, 1usize)]),
_ => vec![],
}
}
fn action_strconst_s13(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::Import => Vec::from(&[Reduce(PK::ImportStmP1, 2usize)]),
TK::As => Vec::from(&[Shift(State::AsS21)]),
TK::Name => Vec::from(&[Reduce(PK::ImportStmP1, 2usize)]),
TK::Annotation => Vec::from(&[Reduce(PK::ImportStmP1, 2usize)]),
_ => vec![],
}
}
fn action_terminals_s14(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::Name => Vec::from(&[Reduce(PK::AnnotationOptP2, 0usize)]),
TK::Annotation => Vec::from(&[Shift(State::AnnotationS3)]),
_ => vec![],
}
}
fn action_grammarrule_s15(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::STOP => Vec::from(&[Reduce(PK::GrammarRule1P1, 2usize)]),
TK::Terminals => Vec::from(&[Reduce(PK::GrammarRule1P1, 2usize)]),
TK::Name => Vec::from(&[Reduce(PK::GrammarRule1P1, 2usize)]),
TK::Annotation => Vec::from(&[Reduce(PK::GrammarRule1P1, 2usize)]),
_ => vec![],
}
}
fn action_grammarrule1_s16(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::STOP => Vec::from(&[Reduce(PK::FileP2, 2usize)]),
TK::Terminals => Vec::from(&[Shift(State::TerminalsS23)]),
TK::Name => Vec::from(&[Reduce(PK::AnnotationOptP2, 0usize)]),
TK::Annotation => Vec::from(&[Shift(State::AnnotationS3)]),
_ => vec![],
}
}
fn action_importstm_s17(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::Import => Vec::from(&[Reduce(PK::ImportStm1P1, 2usize)]),
TK::Name => Vec::from(&[Reduce(PK::ImportStm1P1, 2usize)]),
TK::Annotation => Vec::from(&[Reduce(PK::ImportStm1P1, 2usize)]),
_ => vec![],
}
}
fn action_name_s18(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::Colon => Vec::from(&[Shift(State::ColonS24)]),
TK::OBrace => Vec::from(&[Shift(State::OBraceS25)]),
_ => vec![],
}
}
fn action_terminalrule_s19(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::STOP => Vec::from(&[Reduce(PK::TerminalRule1P1, 2usize)]),
TK::Name => Vec::from(&[Reduce(PK::TerminalRule1P1, 2usize)]),
TK::Annotation => Vec::from(&[Reduce(PK::TerminalRule1P1, 2usize)]),
_ => vec![],
}
}
fn action_name_s20(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::Colon => Vec::from(&[Shift(State::ColonS26)]),
_ => vec![],
}
}
fn action_as_s21(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::Name => Vec::from(&[Shift(State::NameS27)]),
_ => vec![],
}
}
fn action_terminalrule1_s22(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::STOP => Vec::from(&[Reduce(PK::FileP3, 3usize)]),
TK::Name => Vec::from(&[Reduce(PK::AnnotationOptP2, 0usize)]),
TK::Annotation => Vec::from(&[Shift(State::AnnotationS3)]),
_ => vec![],
}
}
fn action_terminals_s23(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::Name => Vec::from(&[Reduce(PK::AnnotationOptP2, 0usize)]),
TK::Annotation => Vec::from(&[Shift(State::AnnotationS3)]),
_ => vec![],
}
}
fn action_colon_s24(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::OBracket => Vec::from(&[Shift(State::OBracketS29)]),
TK::Name => Vec::from(&[Shift(State::NameS30)]),
TK::StrConst => Vec::from(&[Shift(State::StrConstS31)]),
_ => vec![],
}
}
fn action_obrace_s25(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::Left => Vec::from(&[Shift(State::LeftS41)]),
TK::Right => Vec::from(&[Shift(State::RightS42)]),
TK::Reduce => Vec::from(&[Shift(State::ReduceS43)]),
TK::Shift => Vec::from(&[Shift(State::ShiftS44)]),
TK::Dynamic => Vec::from(&[Shift(State::DynamicS45)]),
TK::NOPS => Vec::from(&[Shift(State::NOPSS46)]),
TK::NOPSE => Vec::from(&[Shift(State::NOPSES47)]),
TK::Name => Vec::from(&[Shift(State::NameS48)]),
TK::IntConst => Vec::from(&[Shift(State::IntConstS49)]),
_ => vec![],
}
}
fn action_colon_s26(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::SemiColon => Vec::from(&[Shift(State::SemiColonS54)]),
TK::OBrace => Vec::from(&[Shift(State::OBraceS55)]),
TK::RegexTerm => Vec::from(&[Shift(State::RegexTermS56)]),
TK::StrConst => Vec::from(&[Shift(State::StrConstS57)]),
_ => vec![],
}
}
fn action_name_s27(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::Import => Vec::from(&[Reduce(PK::ImportStmP2, 4usize)]),
TK::Name => Vec::from(&[Reduce(PK::ImportStmP2, 4usize)]),
TK::Annotation => Vec::from(&[Reduce(PK::ImportStmP2, 4usize)]),
_ => vec![],
}
}
fn action_terminalrule1_s28(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::STOP => Vec::from(&[Reduce(PK::FileP4, 4usize)]),
TK::Name => Vec::from(&[Reduce(PK::AnnotationOptP2, 0usize)]),
TK::Annotation => Vec::from(&[Shift(State::AnnotationS3)]),
_ => vec![],
}
}
fn action_obracket_s29(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::OBracket => Vec::from(&[Shift(State::OBracketS29)]),
TK::Name => Vec::from(&[Shift(State::NameS30)]),
TK::StrConst => Vec::from(&[Shift(State::StrConstS31)]),
_ => vec![],
}
}
fn action_name_s30(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::SemiColon => Vec::from(&[Reduce(PK::GrammarSymbolP1, 1usize)]),
TK::OBrace => Vec::from(&[Reduce(PK::GrammarSymbolP1, 1usize)]),
TK::OBracket => Vec::from(&[Reduce(PK::GrammarSymbolP1, 1usize)]),
TK::CBracket => Vec::from(&[Reduce(PK::GrammarSymbolP1, 1usize)]),
TK::Choice => Vec::from(&[Reduce(PK::GrammarSymbolP1, 1usize)]),
TK::ZeroOrMore => Vec::from(&[Reduce(PK::GrammarSymbolP1, 1usize)]),
TK::ZeroOrMoreGreedy => Vec::from(&[Reduce(PK::GrammarSymbolP1, 1usize)]),
TK::OneOrMore => Vec::from(&[Reduce(PK::GrammarSymbolP1, 1usize)]),
TK::OneOrMoreGreedy => Vec::from(&[Reduce(PK::GrammarSymbolP1, 1usize)]),
TK::Optional => Vec::from(&[Reduce(PK::GrammarSymbolP1, 1usize)]),
TK::OptionalGreedy => Vec::from(&[Reduce(PK::GrammarSymbolP1, 1usize)]),
TK::Equals => Vec::from(&[Shift(State::EqualsS60)]),
TK::QEquals => Vec::from(&[Shift(State::QEqualsS61)]),
TK::Name => Vec::from(&[Reduce(PK::GrammarSymbolP1, 1usize)]),
TK::StrConst => Vec::from(&[Reduce(PK::GrammarSymbolP1, 1usize)]),
_ => vec![],
}
}
fn action_strconst_s31(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::SemiColon => Vec::from(&[Reduce(PK::GrammarSymbolP2, 1usize)]),
TK::OBrace => Vec::from(&[Reduce(PK::GrammarSymbolP2, 1usize)]),
TK::OBracket => Vec::from(&[Reduce(PK::GrammarSymbolP2, 1usize)]),
TK::CBracket => Vec::from(&[Reduce(PK::GrammarSymbolP2, 1usize)]),
TK::Choice => Vec::from(&[Reduce(PK::GrammarSymbolP2, 1usize)]),
TK::ZeroOrMore => Vec::from(&[Reduce(PK::GrammarSymbolP2, 1usize)]),
TK::ZeroOrMoreGreedy => Vec::from(&[Reduce(PK::GrammarSymbolP2, 1usize)]),
TK::OneOrMore => Vec::from(&[Reduce(PK::GrammarSymbolP2, 1usize)]),
TK::OneOrMoreGreedy => Vec::from(&[Reduce(PK::GrammarSymbolP2, 1usize)]),
TK::Optional => Vec::from(&[Reduce(PK::GrammarSymbolP2, 1usize)]),
TK::OptionalGreedy => Vec::from(&[Reduce(PK::GrammarSymbolP2, 1usize)]),
TK::Name => Vec::from(&[Reduce(PK::GrammarSymbolP2, 1usize)]),
TK::StrConst => Vec::from(&[Reduce(PK::GrammarSymbolP2, 1usize)]),
_ => vec![],
}
}
fn action_grammarrulerhs_s32(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::SemiColon => Vec::from(&[Shift(State::SemiColonS62)]),
TK::Choice => Vec::from(&[Shift(State::ChoiceS63)]),
_ => vec![],
}
}
fn action_production_s33(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::SemiColon => Vec::from(&[Reduce(PK::GrammarRuleRHSP2, 1usize)]),
TK::CBracket => Vec::from(&[Reduce(PK::GrammarRuleRHSP2, 1usize)]),
TK::Choice => Vec::from(&[Reduce(PK::GrammarRuleRHSP2, 1usize)]),
_ => vec![],
}
}
fn action_assignment1_s34(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::SemiColon => Vec::from(&[Reduce(PK::ProductionP1, 1usize)]),
TK::OBrace => Vec::from(&[Shift(State::OBraceS64)]),
TK::OBracket => Vec::from(&[Shift(State::OBracketS29)]),
TK::CBracket => Vec::from(&[Reduce(PK::ProductionP1, 1usize)]),
TK::Choice => Vec::from(&[Reduce(PK::ProductionP1, 1usize)]),
TK::Name => Vec::from(&[Shift(State::NameS30)]),
TK::StrConst => Vec::from(&[Shift(State::StrConstS31)]),
_ => vec![],
}
}
fn action_assignment_s35(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::SemiColon => Vec::from(&[Reduce(PK::Assignment1P2, 1usize)]),
TK::OBrace => Vec::from(&[Reduce(PK::Assignment1P2, 1usize)]),
TK::OBracket => Vec::from(&[Reduce(PK::Assignment1P2, 1usize)]),
TK::CBracket => Vec::from(&[Reduce(PK::Assignment1P2, 1usize)]),
TK::Choice => Vec::from(&[Reduce(PK::Assignment1P2, 1usize)]),
TK::Name => Vec::from(&[Reduce(PK::Assignment1P2, 1usize)]),
TK::StrConst => Vec::from(&[Reduce(PK::Assignment1P2, 1usize)]),
_ => vec![],
}
}
fn action_plainassignment_s36(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::SemiColon => Vec::from(&[Reduce(PK::AssignmentP1, 1usize)]),
TK::OBrace => Vec::from(&[Reduce(PK::AssignmentP1, 1usize)]),
TK::OBracket => Vec::from(&[Reduce(PK::AssignmentP1, 1usize)]),
TK::CBracket => Vec::from(&[Reduce(PK::AssignmentP1, 1usize)]),
TK::Choice => Vec::from(&[Reduce(PK::AssignmentP1, 1usize)]),
TK::Name => Vec::from(&[Reduce(PK::AssignmentP1, 1usize)]),
TK::StrConst => Vec::from(&[Reduce(PK::AssignmentP1, 1usize)]),
_ => vec![],
}
}
fn action_boolassignment_s37(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::SemiColon => Vec::from(&[Reduce(PK::AssignmentP2, 1usize)]),
TK::OBrace => Vec::from(&[Reduce(PK::AssignmentP2, 1usize)]),
TK::OBracket => Vec::from(&[Reduce(PK::AssignmentP2, 1usize)]),
TK::CBracket => Vec::from(&[Reduce(PK::AssignmentP2, 1usize)]),
TK::Choice => Vec::from(&[Reduce(PK::AssignmentP2, 1usize)]),
TK::Name => Vec::from(&[Reduce(PK::AssignmentP2, 1usize)]),
TK::StrConst => Vec::from(&[Reduce(PK::AssignmentP2, 1usize)]),
_ => vec![],
}
}
fn action_productiongroup_s38(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::SemiColon => Vec::from(&[Reduce(PK::RepetitionOperatorOptP2, 0usize)]),
TK::OBrace => Vec::from(&[Reduce(PK::RepetitionOperatorOptP2, 0usize)]),
TK::OBracket => Vec::from(&[Reduce(PK::RepetitionOperatorOptP2, 0usize)]),
TK::CBracket => Vec::from(&[Reduce(PK::RepetitionOperatorOptP2, 0usize)]),
TK::Choice => Vec::from(&[Reduce(PK::RepetitionOperatorOptP2, 0usize)]),
TK::ZeroOrMore => Vec::from(&[Shift(State::ZeroOrMoreS66)]),
TK::ZeroOrMoreGreedy => Vec::from(&[Shift(State::ZeroOrMoreGreedyS67)]),
TK::OneOrMore => Vec::from(&[Shift(State::OneOrMoreS68)]),
TK::OneOrMoreGreedy => Vec::from(&[Shift(State::OneOrMoreGreedyS69)]),
TK::Optional => Vec::from(&[Shift(State::OptionalS70)]),
TK::OptionalGreedy => Vec::from(&[Shift(State::OptionalGreedyS71)]),
TK::Name => Vec::from(&[Reduce(PK::RepetitionOperatorOptP2, 0usize)]),
TK::StrConst => Vec::from(&[Reduce(PK::RepetitionOperatorOptP2, 0usize)]),
_ => vec![],
}
}
fn action_grammarsymbolref_s39(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::SemiColon => Vec::from(&[Reduce(PK::AssignmentP3, 1usize)]),
TK::OBrace => Vec::from(&[Reduce(PK::AssignmentP3, 1usize)]),
TK::OBracket => Vec::from(&[Reduce(PK::AssignmentP3, 1usize)]),
TK::CBracket => Vec::from(&[Reduce(PK::AssignmentP3, 1usize)]),
TK::Choice => Vec::from(&[Reduce(PK::AssignmentP3, 1usize)]),
TK::Name => Vec::from(&[Reduce(PK::AssignmentP3, 1usize)]),
TK::StrConst => Vec::from(&[Reduce(PK::AssignmentP3, 1usize)]),
_ => vec![],
}
}
fn action_grammarsymbol_s40(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::SemiColon => Vec::from(&[Reduce(PK::RepetitionOperatorOptP2, 0usize)]),
TK::OBrace => Vec::from(&[Reduce(PK::RepetitionOperatorOptP2, 0usize)]),
TK::OBracket => Vec::from(&[Reduce(PK::RepetitionOperatorOptP2, 0usize)]),
TK::CBracket => Vec::from(&[Reduce(PK::RepetitionOperatorOptP2, 0usize)]),
TK::Choice => Vec::from(&[Reduce(PK::RepetitionOperatorOptP2, 0usize)]),
TK::ZeroOrMore => Vec::from(&[Shift(State::ZeroOrMoreS66)]),
TK::ZeroOrMoreGreedy => Vec::from(&[Shift(State::ZeroOrMoreGreedyS67)]),
TK::OneOrMore => Vec::from(&[Shift(State::OneOrMoreS68)]),
TK::OneOrMoreGreedy => Vec::from(&[Shift(State::OneOrMoreGreedyS69)]),
TK::Optional => Vec::from(&[Shift(State::OptionalS70)]),
TK::OptionalGreedy => Vec::from(&[Shift(State::OptionalGreedyS71)]),
TK::Name => Vec::from(&[Reduce(PK::RepetitionOperatorOptP2, 0usize)]),
TK::StrConst => Vec::from(&[Reduce(PK::RepetitionOperatorOptP2, 0usize)]),
_ => vec![],
}
}
fn action_left_s41(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::Comma => Vec::from(&[Reduce(PK::ProdMetaDataLeft, 1usize)]),
TK::CBrace => Vec::from(&[Reduce(PK::ProdMetaDataLeft, 1usize)]),
_ => vec![],
}
}
fn action_right_s42(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::Comma => Vec::from(&[Reduce(PK::ProdMetaDataRight, 1usize)]),
TK::CBrace => Vec::from(&[Reduce(PK::ProdMetaDataRight, 1usize)]),
_ => vec![],
}
}
fn action_reduce_s43(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::Comma => Vec::from(&[Reduce(PK::ProdMetaDataReduce, 1usize)]),
TK::CBrace => Vec::from(&[Reduce(PK::ProdMetaDataReduce, 1usize)]),
_ => vec![],
}
}
fn action_shift_s44(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::Comma => Vec::from(&[Reduce(PK::ProdMetaDataShift, 1usize)]),
TK::CBrace => Vec::from(&[Reduce(PK::ProdMetaDataShift, 1usize)]),
_ => vec![],
}
}
fn action_dynamic_s45(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::Comma => Vec::from(&[Reduce(PK::ProdMetaDataDynamic, 1usize)]),
TK::CBrace => Vec::from(&[Reduce(PK::ProdMetaDataDynamic, 1usize)]),
_ => vec![],
}
}
fn action_nops_s46(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::Comma => Vec::from(&[Reduce(PK::ProdMetaDataNOPS, 1usize)]),
TK::CBrace => Vec::from(&[Reduce(PK::ProdMetaDataNOPS, 1usize)]),
_ => vec![],
}
}
fn action_nopse_s47(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::Comma => Vec::from(&[Reduce(PK::ProdMetaDataNOPSE, 1usize)]),
TK::CBrace => Vec::from(&[Reduce(PK::ProdMetaDataNOPSE, 1usize)]),
_ => vec![],
}
}
fn action_name_s48(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::Colon => Vec::from(&[Shift(State::ColonS76)]),
TK::Comma => Vec::from(&[Reduce(PK::ProdKindP1, 1usize)]),
TK::CBrace => Vec::from(&[Reduce(PK::ProdKindP1, 1usize)]),
_ => vec![],
}
}
fn action_intconst_s49(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::Comma => Vec::from(&[Reduce(PK::ProdMetaDataPriority, 1usize)]),
TK::CBrace => Vec::from(&[Reduce(PK::ProdMetaDataPriority, 1usize)]),
_ => vec![],
}
}
fn action_prodmetadata_s50(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::Comma => Vec::from(&[Reduce(PK::ProdMetaDatasP2, 1usize)]),
TK::CBrace => Vec::from(&[Reduce(PK::ProdMetaDatasP2, 1usize)]),
_ => vec![],
}
}
fn action_prodmetadatas_s51(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::Comma => Vec::from(&[Shift(State::CommaS77)]),
TK::CBrace => Vec::from(&[Shift(State::CBraceS78)]),
_ => vec![],
}
}
fn action_usermetadata_s52(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::Comma => Vec::from(&[Reduce(PK::ProdMetaDataP9, 1usize)]),
TK::CBrace => Vec::from(&[Reduce(PK::ProdMetaDataP9, 1usize)]),
_ => vec![],
}
}
fn action_prodkind_s53(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::Comma => Vec::from(&[Reduce(PK::ProdMetaDataP10, 1usize)]),
TK::CBrace => Vec::from(&[Reduce(PK::ProdMetaDataP10, 1usize)]),
_ => vec![],
}
}
fn action_semicolon_s54(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::STOP => Vec::from(&[Reduce(PK::TerminalRuleP2, 4usize)]),
TK::Name => Vec::from(&[Reduce(PK::TerminalRuleP2, 4usize)]),
TK::Annotation => Vec::from(&[Reduce(PK::TerminalRuleP2, 4usize)]),
_ => vec![],
}
}
fn action_obrace_s55(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::Left => Vec::from(&[Shift(State::LeftS79)]),
TK::Right => Vec::from(&[Shift(State::RightS80)]),
TK::Reduce => Vec::from(&[Shift(State::ReduceS81)]),
TK::Shift => Vec::from(&[Shift(State::ShiftS82)]),
TK::Dynamic => Vec::from(&[Shift(State::DynamicS83)]),
TK::Prefer => Vec::from(&[Shift(State::PreferS84)]),
TK::Finish => Vec::from(&[Shift(State::FinishS85)]),
TK::NoFinish => Vec::from(&[Shift(State::NoFinishS86)]),
TK::Name => Vec::from(&[Shift(State::NameS87)]),
TK::IntConst => Vec::from(&[Shift(State::IntConstS88)]),
_ => vec![],
}
}
fn action_regexterm_s56(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::SemiColon => Vec::from(&[Reduce(PK::RecognizerP2, 1usize)]),
TK::OBrace => Vec::from(&[Reduce(PK::RecognizerP2, 1usize)]),
_ => vec![],
}
}
fn action_strconst_s57(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::SemiColon => Vec::from(&[Reduce(PK::RecognizerP1, 1usize)]),
TK::OBrace => Vec::from(&[Reduce(PK::RecognizerP1, 1usize)]),
_ => vec![],
}
}
fn action_recognizer_s58(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::SemiColon => Vec::from(&[Shift(State::SemiColonS92)]),
TK::OBrace => Vec::from(&[Shift(State::OBraceS93)]),
_ => vec![],
}
}
fn action_grammarrulerhs_s59(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::CBracket => Vec::from(&[Shift(State::CBracketS94)]),
TK::Choice => Vec::from(&[Shift(State::ChoiceS63)]),
_ => vec![],
}
}
fn action_equals_s60(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::OBracket => Vec::from(&[Shift(State::OBracketS29)]),
TK::Name => Vec::from(&[Shift(State::NameS95)]),
TK::StrConst => Vec::from(&[Shift(State::StrConstS31)]),
_ => vec![],
}
}
fn action_qequals_s61(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::OBracket => Vec::from(&[Shift(State::OBracketS29)]),
TK::Name => Vec::from(&[Shift(State::NameS95)]),
TK::StrConst => Vec::from(&[Shift(State::StrConstS31)]),
_ => vec![],
}
}
fn action_semicolon_s62(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::STOP => Vec::from(&[Reduce(PK::GrammarRuleP1, 5usize)]),
TK::Terminals => Vec::from(&[Reduce(PK::GrammarRuleP1, 5usize)]),
TK::Name => Vec::from(&[Reduce(PK::GrammarRuleP1, 5usize)]),
TK::Annotation => Vec::from(&[Reduce(PK::GrammarRuleP1, 5usize)]),
_ => vec![],
}
}
fn action_choice_s63(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::OBracket => Vec::from(&[Shift(State::OBracketS29)]),
TK::Name => Vec::from(&[Shift(State::NameS30)]),
TK::StrConst => Vec::from(&[Shift(State::StrConstS31)]),
_ => vec![],
}
}
fn action_obrace_s64(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::Left => Vec::from(&[Shift(State::LeftS41)]),
TK::Right => Vec::from(&[Shift(State::RightS42)]),
TK::Reduce => Vec::from(&[Shift(State::ReduceS43)]),
TK::Shift => Vec::from(&[Shift(State::ShiftS44)]),
TK::Dynamic => Vec::from(&[Shift(State::DynamicS45)]),
TK::NOPS => Vec::from(&[Shift(State::NOPSS46)]),
TK::NOPSE => Vec::from(&[Shift(State::NOPSES47)]),
TK::Name => Vec::from(&[Shift(State::NameS48)]),
TK::IntConst => Vec::from(&[Shift(State::IntConstS49)]),
_ => vec![],
}
}
fn action_assignment_s65(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::SemiColon => Vec::from(&[Reduce(PK::Assignment1P1, 2usize)]),
TK::OBrace => Vec::from(&[Reduce(PK::Assignment1P1, 2usize)]),
TK::OBracket => Vec::from(&[Reduce(PK::Assignment1P1, 2usize)]),
TK::CBracket => Vec::from(&[Reduce(PK::Assignment1P1, 2usize)]),
TK::Choice => Vec::from(&[Reduce(PK::Assignment1P1, 2usize)]),
TK::Name => Vec::from(&[Reduce(PK::Assignment1P1, 2usize)]),
TK::StrConst => Vec::from(&[Reduce(PK::Assignment1P1, 2usize)]),
_ => vec![],
}
}
fn action_zeroormore_s66(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::SemiColon => Vec::from(&[Reduce(PK::RepetitionOperatorOpZeroOrMore, 1usize)]),
TK::OBrace => Vec::from(&[Reduce(PK::RepetitionOperatorOpZeroOrMore, 1usize)]),
TK::OBracket => Vec::from(&[Reduce(PK::RepetitionOperatorOpZeroOrMore, 1usize)]),
TK::CBracket => Vec::from(&[Reduce(PK::RepetitionOperatorOpZeroOrMore, 1usize)]),
TK::OSBracket => Vec::from(&[Reduce(PK::RepetitionOperatorOpZeroOrMore, 1usize)]),
TK::Choice => Vec::from(&[Reduce(PK::RepetitionOperatorOpZeroOrMore, 1usize)]),
TK::Name => Vec::from(&[Reduce(PK::RepetitionOperatorOpZeroOrMore, 1usize)]),
TK::StrConst => Vec::from(&[Reduce(PK::RepetitionOperatorOpZeroOrMore, 1usize)]),
_ => vec![],
}
}
fn action_zeroormoregreedy_s67(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::SemiColon => {
Vec::from(&[Reduce(PK::RepetitionOperatorOpZeroOrMoreGreedy, 1usize)])
}
TK::OBrace => {
Vec::from(&[Reduce(PK::RepetitionOperatorOpZeroOrMoreGreedy, 1usize)])
}
TK::OBracket => {
Vec::from(&[Reduce(PK::RepetitionOperatorOpZeroOrMoreGreedy, 1usize)])
}
TK::CBracket => {
Vec::from(&[Reduce(PK::RepetitionOperatorOpZeroOrMoreGreedy, 1usize)])
}
TK::OSBracket => {
Vec::from(&[Reduce(PK::RepetitionOperatorOpZeroOrMoreGreedy, 1usize)])
}
TK::Choice => {
Vec::from(&[Reduce(PK::RepetitionOperatorOpZeroOrMoreGreedy, 1usize)])
}
TK::Name => {
Vec::from(&[Reduce(PK::RepetitionOperatorOpZeroOrMoreGreedy, 1usize)])
}
TK::StrConst => {
Vec::from(&[Reduce(PK::RepetitionOperatorOpZeroOrMoreGreedy, 1usize)])
}
_ => vec![],
}
}
fn action_oneormore_s68(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::SemiColon => Vec::from(&[Reduce(PK::RepetitionOperatorOpOneOrMore, 1usize)]),
TK::OBrace => Vec::from(&[Reduce(PK::RepetitionOperatorOpOneOrMore, 1usize)]),
TK::OBracket => Vec::from(&[Reduce(PK::RepetitionOperatorOpOneOrMore, 1usize)]),
TK::CBracket => Vec::from(&[Reduce(PK::RepetitionOperatorOpOneOrMore, 1usize)]),
TK::OSBracket => Vec::from(&[Reduce(PK::RepetitionOperatorOpOneOrMore, 1usize)]),
TK::Choice => Vec::from(&[Reduce(PK::RepetitionOperatorOpOneOrMore, 1usize)]),
TK::Name => Vec::from(&[Reduce(PK::RepetitionOperatorOpOneOrMore, 1usize)]),
TK::StrConst => Vec::from(&[Reduce(PK::RepetitionOperatorOpOneOrMore, 1usize)]),
_ => vec![],
}
}
fn action_oneormoregreedy_s69(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::SemiColon => {
Vec::from(&[Reduce(PK::RepetitionOperatorOpOneOrMoreGreedy, 1usize)])
}
TK::OBrace => {
Vec::from(&[Reduce(PK::RepetitionOperatorOpOneOrMoreGreedy, 1usize)])
}
TK::OBracket => {
Vec::from(&[Reduce(PK::RepetitionOperatorOpOneOrMoreGreedy, 1usize)])
}
TK::CBracket => {
Vec::from(&[Reduce(PK::RepetitionOperatorOpOneOrMoreGreedy, 1usize)])
}
TK::OSBracket => {
Vec::from(&[Reduce(PK::RepetitionOperatorOpOneOrMoreGreedy, 1usize)])
}
TK::Choice => {
Vec::from(&[Reduce(PK::RepetitionOperatorOpOneOrMoreGreedy, 1usize)])
}
TK::Name => Vec::from(&[Reduce(PK::RepetitionOperatorOpOneOrMoreGreedy, 1usize)]),
TK::StrConst => {
Vec::from(&[Reduce(PK::RepetitionOperatorOpOneOrMoreGreedy, 1usize)])
}
_ => vec![],
}
}
fn action_optional_s70(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::SemiColon => Vec::from(&[Reduce(PK::RepetitionOperatorOpOptional, 1usize)]),
TK::OBrace => Vec::from(&[Reduce(PK::RepetitionOperatorOpOptional, 1usize)]),
TK::OBracket => Vec::from(&[Reduce(PK::RepetitionOperatorOpOptional, 1usize)]),
TK::CBracket => Vec::from(&[Reduce(PK::RepetitionOperatorOpOptional, 1usize)]),
TK::OSBracket => Vec::from(&[Reduce(PK::RepetitionOperatorOpOptional, 1usize)]),
TK::Choice => Vec::from(&[Reduce(PK::RepetitionOperatorOpOptional, 1usize)]),
TK::Name => Vec::from(&[Reduce(PK::RepetitionOperatorOpOptional, 1usize)]),
TK::StrConst => Vec::from(&[Reduce(PK::RepetitionOperatorOpOptional, 1usize)]),
_ => vec![],
}
}
fn action_optionalgreedy_s71(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::SemiColon => {
Vec::from(&[Reduce(PK::RepetitionOperatorOpOptionalGreedy, 1usize)])
}
TK::OBrace => {
Vec::from(&[Reduce(PK::RepetitionOperatorOpOptionalGreedy, 1usize)])
}
TK::OBracket => {
Vec::from(&[Reduce(PK::RepetitionOperatorOpOptionalGreedy, 1usize)])
}
TK::CBracket => {
Vec::from(&[Reduce(PK::RepetitionOperatorOpOptionalGreedy, 1usize)])
}
TK::OSBracket => {
Vec::from(&[Reduce(PK::RepetitionOperatorOpOptionalGreedy, 1usize)])
}
TK::Choice => {
Vec::from(&[Reduce(PK::RepetitionOperatorOpOptionalGreedy, 1usize)])
}
TK::Name => Vec::from(&[Reduce(PK::RepetitionOperatorOpOptionalGreedy, 1usize)]),
TK::StrConst => {
Vec::from(&[Reduce(PK::RepetitionOperatorOpOptionalGreedy, 1usize)])
}
_ => vec![],
}
}
fn action_repetitionoperatoropt_s72(
token_kind: TokenKind,
) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::SemiColon => Vec::from(&[Reduce(PK::GrammarSymbolRefP2, 2usize)]),
TK::OBrace => Vec::from(&[Reduce(PK::GrammarSymbolRefP2, 2usize)]),
TK::OBracket => Vec::from(&[Reduce(PK::GrammarSymbolRefP2, 2usize)]),
TK::CBracket => Vec::from(&[Reduce(PK::GrammarSymbolRefP2, 2usize)]),
TK::Choice => Vec::from(&[Reduce(PK::GrammarSymbolRefP2, 2usize)]),
TK::Name => Vec::from(&[Reduce(PK::GrammarSymbolRefP2, 2usize)]),
TK::StrConst => Vec::from(&[Reduce(PK::GrammarSymbolRefP2, 2usize)]),
_ => vec![],
}
}
fn action_repetitionoperator_s73(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::SemiColon => Vec::from(&[Reduce(PK::RepetitionOperatorOptP1, 1usize)]),
TK::OBrace => Vec::from(&[Reduce(PK::RepetitionOperatorOptP1, 1usize)]),
TK::OBracket => Vec::from(&[Reduce(PK::RepetitionOperatorOptP1, 1usize)]),
TK::CBracket => Vec::from(&[Reduce(PK::RepetitionOperatorOptP1, 1usize)]),
TK::Choice => Vec::from(&[Reduce(PK::RepetitionOperatorOptP1, 1usize)]),
TK::Name => Vec::from(&[Reduce(PK::RepetitionOperatorOptP1, 1usize)]),
TK::StrConst => Vec::from(&[Reduce(PK::RepetitionOperatorOptP1, 1usize)]),
_ => vec![],
}
}
fn action_repetitionoperatorop_s74(
token_kind: TokenKind,
) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::SemiColon => Vec::from(&[Reduce(PK::RepetitionModifiersOptP2, 0usize)]),
TK::OBrace => Vec::from(&[Reduce(PK::RepetitionModifiersOptP2, 0usize)]),
TK::OBracket => Vec::from(&[Reduce(PK::RepetitionModifiersOptP2, 0usize)]),
TK::CBracket => Vec::from(&[Reduce(PK::RepetitionModifiersOptP2, 0usize)]),
TK::OSBracket => Vec::from(&[Shift(State::OSBracketS100)]),
TK::Choice => Vec::from(&[Reduce(PK::RepetitionModifiersOptP2, 0usize)]),
TK::Name => Vec::from(&[Reduce(PK::RepetitionModifiersOptP2, 0usize)]),
TK::StrConst => Vec::from(&[Reduce(PK::RepetitionModifiersOptP2, 0usize)]),
_ => vec![],
}
}
fn action_repetitionoperatoropt_s75(
token_kind: TokenKind,
) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::SemiColon => Vec::from(&[Reduce(PK::GrammarSymbolRefP1, 2usize)]),
TK::OBrace => Vec::from(&[Reduce(PK::GrammarSymbolRefP1, 2usize)]),
TK::OBracket => Vec::from(&[Reduce(PK::GrammarSymbolRefP1, 2usize)]),
TK::CBracket => Vec::from(&[Reduce(PK::GrammarSymbolRefP1, 2usize)]),
TK::Choice => Vec::from(&[Reduce(PK::GrammarSymbolRefP1, 2usize)]),
TK::Name => Vec::from(&[Reduce(PK::GrammarSymbolRefP1, 2usize)]),
TK::StrConst => Vec::from(&[Reduce(PK::GrammarSymbolRefP1, 2usize)]),
_ => vec![],
}
}
fn action_colon_s76(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::IntConst => Vec::from(&[Shift(State::IntConstS103)]),
TK::FloatConst => Vec::from(&[Shift(State::FloatConstS104)]),
TK::BoolConst => Vec::from(&[Shift(State::BoolConstS105)]),
TK::StrConst => Vec::from(&[Shift(State::StrConstS106)]),
_ => vec![],
}
}
fn action_comma_s77(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::Left => Vec::from(&[Shift(State::LeftS41)]),
TK::Right => Vec::from(&[Shift(State::RightS42)]),
TK::Reduce => Vec::from(&[Shift(State::ReduceS43)]),
TK::Shift => Vec::from(&[Shift(State::ShiftS44)]),
TK::Dynamic => Vec::from(&[Shift(State::DynamicS45)]),
TK::NOPS => Vec::from(&[Shift(State::NOPSS46)]),
TK::NOPSE => Vec::from(&[Shift(State::NOPSES47)]),
TK::Name => Vec::from(&[Shift(State::NameS48)]),
TK::IntConst => Vec::from(&[Shift(State::IntConstS49)]),
_ => vec![],
}
}
fn action_cbrace_s78(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::Colon => Vec::from(&[Shift(State::ColonS109)]),
_ => vec![],
}
}
fn action_left_s79(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::Comma => Vec::from(&[Reduce(PK::TermMetaDataLeft, 1usize)]),
TK::CBrace => Vec::from(&[Reduce(PK::TermMetaDataLeft, 1usize)]),
_ => vec![],
}
}
fn action_right_s80(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::Comma => Vec::from(&[Reduce(PK::TermMetaDataRight, 1usize)]),
TK::CBrace => Vec::from(&[Reduce(PK::TermMetaDataRight, 1usize)]),
_ => vec![],
}
}
fn action_reduce_s81(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::Comma => Vec::from(&[Reduce(PK::TermMetaDataReduce, 1usize)]),
TK::CBrace => Vec::from(&[Reduce(PK::TermMetaDataReduce, 1usize)]),
_ => vec![],
}
}
fn action_shift_s82(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::Comma => Vec::from(&[Reduce(PK::TermMetaDataShift, 1usize)]),
TK::CBrace => Vec::from(&[Reduce(PK::TermMetaDataShift, 1usize)]),
_ => vec![],
}
}
fn action_dynamic_s83(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::Comma => Vec::from(&[Reduce(PK::TermMetaDataDynamic, 1usize)]),
TK::CBrace => Vec::from(&[Reduce(PK::TermMetaDataDynamic, 1usize)]),
_ => vec![],
}
}
fn action_prefer_s84(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::Comma => Vec::from(&[Reduce(PK::TermMetaDataPrefer, 1usize)]),
TK::CBrace => Vec::from(&[Reduce(PK::TermMetaDataPrefer, 1usize)]),
_ => vec![],
}
}
fn action_finish_s85(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::Comma => Vec::from(&[Reduce(PK::TermMetaDataFinish, 1usize)]),
TK::CBrace => Vec::from(&[Reduce(PK::TermMetaDataFinish, 1usize)]),
_ => vec![],
}
}
fn action_nofinish_s86(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::Comma => Vec::from(&[Reduce(PK::TermMetaDataNoFinish, 1usize)]),
TK::CBrace => Vec::from(&[Reduce(PK::TermMetaDataNoFinish, 1usize)]),
_ => vec![],
}
}
fn action_name_s87(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::Colon => Vec::from(&[Shift(State::ColonS76)]),
_ => vec![],
}
}
fn action_intconst_s88(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::Comma => Vec::from(&[Reduce(PK::TermMetaDataPriority, 1usize)]),
TK::CBrace => Vec::from(&[Reduce(PK::TermMetaDataPriority, 1usize)]),
_ => vec![],
}
}
fn action_termmetadata_s89(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::Comma => Vec::from(&[Reduce(PK::TermMetaDatasP2, 1usize)]),
TK::CBrace => Vec::from(&[Reduce(PK::TermMetaDatasP2, 1usize)]),
_ => vec![],
}
}
fn action_termmetadatas_s90(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::Comma => Vec::from(&[Shift(State::CommaS110)]),
TK::CBrace => Vec::from(&[Shift(State::CBraceS111)]),
_ => vec![],
}
}
fn action_usermetadata_s91(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::Comma => Vec::from(&[Reduce(PK::TermMetaDataP10, 1usize)]),
TK::CBrace => Vec::from(&[Reduce(PK::TermMetaDataP10, 1usize)]),
_ => vec![],
}
}
fn action_semicolon_s92(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::STOP => Vec::from(&[Reduce(PK::TerminalRuleP1, 5usize)]),
TK::Name => Vec::from(&[Reduce(PK::TerminalRuleP1, 5usize)]),
TK::Annotation => Vec::from(&[Reduce(PK::TerminalRuleP1, 5usize)]),
_ => vec![],
}
}
fn action_obrace_s93(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::Left => Vec::from(&[Shift(State::LeftS79)]),
TK::Right => Vec::from(&[Shift(State::RightS80)]),
TK::Reduce => Vec::from(&[Shift(State::ReduceS81)]),
TK::Shift => Vec::from(&[Shift(State::ShiftS82)]),
TK::Dynamic => Vec::from(&[Shift(State::DynamicS83)]),
TK::Prefer => Vec::from(&[Shift(State::PreferS84)]),
TK::Finish => Vec::from(&[Shift(State::FinishS85)]),
TK::NoFinish => Vec::from(&[Shift(State::NoFinishS86)]),
TK::Name => Vec::from(&[Shift(State::NameS87)]),
TK::IntConst => Vec::from(&[Shift(State::IntConstS88)]),
_ => vec![],
}
}
fn action_cbracket_s94(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::SemiColon => Vec::from(&[Reduce(PK::ProductionGroupP1, 3usize)]),
TK::OBrace => Vec::from(&[Reduce(PK::ProductionGroupP1, 3usize)]),
TK::OBracket => Vec::from(&[Reduce(PK::ProductionGroupP1, 3usize)]),
TK::CBracket => Vec::from(&[Reduce(PK::ProductionGroupP1, 3usize)]),
TK::Choice => Vec::from(&[Reduce(PK::ProductionGroupP1, 3usize)]),
TK::ZeroOrMore => Vec::from(&[Reduce(PK::ProductionGroupP1, 3usize)]),
TK::ZeroOrMoreGreedy => Vec::from(&[Reduce(PK::ProductionGroupP1, 3usize)]),
TK::OneOrMore => Vec::from(&[Reduce(PK::ProductionGroupP1, 3usize)]),
TK::OneOrMoreGreedy => Vec::from(&[Reduce(PK::ProductionGroupP1, 3usize)]),
TK::Optional => Vec::from(&[Reduce(PK::ProductionGroupP1, 3usize)]),
TK::OptionalGreedy => Vec::from(&[Reduce(PK::ProductionGroupP1, 3usize)]),
TK::Name => Vec::from(&[Reduce(PK::ProductionGroupP1, 3usize)]),
TK::StrConst => Vec::from(&[Reduce(PK::ProductionGroupP1, 3usize)]),
_ => vec![],
}
}
fn action_name_s95(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::SemiColon => Vec::from(&[Reduce(PK::GrammarSymbolP1, 1usize)]),
TK::OBrace => Vec::from(&[Reduce(PK::GrammarSymbolP1, 1usize)]),
TK::OBracket => Vec::from(&[Reduce(PK::GrammarSymbolP1, 1usize)]),
TK::CBracket => Vec::from(&[Reduce(PK::GrammarSymbolP1, 1usize)]),
TK::Choice => Vec::from(&[Reduce(PK::GrammarSymbolP1, 1usize)]),
TK::ZeroOrMore => Vec::from(&[Reduce(PK::GrammarSymbolP1, 1usize)]),
TK::ZeroOrMoreGreedy => Vec::from(&[Reduce(PK::GrammarSymbolP1, 1usize)]),
TK::OneOrMore => Vec::from(&[Reduce(PK::GrammarSymbolP1, 1usize)]),
TK::OneOrMoreGreedy => Vec::from(&[Reduce(PK::GrammarSymbolP1, 1usize)]),
TK::Optional => Vec::from(&[Reduce(PK::GrammarSymbolP1, 1usize)]),
TK::OptionalGreedy => Vec::from(&[Reduce(PK::GrammarSymbolP1, 1usize)]),
TK::Name => Vec::from(&[Reduce(PK::GrammarSymbolP1, 1usize)]),
TK::StrConst => Vec::from(&[Reduce(PK::GrammarSymbolP1, 1usize)]),
_ => vec![],
}
}
fn action_grammarsymbolref_s96(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::SemiColon => Vec::from(&[Reduce(PK::PlainAssignmentP1, 3usize)]),
TK::OBrace => Vec::from(&[Reduce(PK::PlainAssignmentP1, 3usize)]),
TK::OBracket => Vec::from(&[Reduce(PK::PlainAssignmentP1, 3usize)]),
TK::CBracket => Vec::from(&[Reduce(PK::PlainAssignmentP1, 3usize)]),
TK::Choice => Vec::from(&[Reduce(PK::PlainAssignmentP1, 3usize)]),
TK::Name => Vec::from(&[Reduce(PK::PlainAssignmentP1, 3usize)]),
TK::StrConst => Vec::from(&[Reduce(PK::PlainAssignmentP1, 3usize)]),
_ => vec![],
}
}
fn action_grammarsymbolref_s97(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::SemiColon => Vec::from(&[Reduce(PK::BoolAssignmentP1, 3usize)]),
TK::OBrace => Vec::from(&[Reduce(PK::BoolAssignmentP1, 3usize)]),
TK::OBracket => Vec::from(&[Reduce(PK::BoolAssignmentP1, 3usize)]),
TK::CBracket => Vec::from(&[Reduce(PK::BoolAssignmentP1, 3usize)]),
TK::Choice => Vec::from(&[Reduce(PK::BoolAssignmentP1, 3usize)]),
TK::Name => Vec::from(&[Reduce(PK::BoolAssignmentP1, 3usize)]),
TK::StrConst => Vec::from(&[Reduce(PK::BoolAssignmentP1, 3usize)]),
_ => vec![],
}
}
fn action_production_s98(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::SemiColon => Vec::from(&[Reduce(PK::GrammarRuleRHSP1, 3usize)]),
TK::CBracket => Vec::from(&[Reduce(PK::GrammarRuleRHSP1, 3usize)]),
TK::Choice => Vec::from(&[Reduce(PK::GrammarRuleRHSP1, 3usize)]),
_ => vec![],
}
}
fn action_prodmetadatas_s99(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::Comma => Vec::from(&[Shift(State::CommaS77)]),
TK::CBrace => Vec::from(&[Shift(State::CBraceS113)]),
_ => vec![],
}
}
fn action_osbracket_s100(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::Name => Vec::from(&[Shift(State::NameS114)]),
_ => vec![],
}
}
fn action_repetitionmodifiersopt_s101(
token_kind: TokenKind,
) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::SemiColon => Vec::from(&[Reduce(PK::RepetitionOperatorP1, 2usize)]),
TK::OBrace => Vec::from(&[Reduce(PK::RepetitionOperatorP1, 2usize)]),
TK::OBracket => Vec::from(&[Reduce(PK::RepetitionOperatorP1, 2usize)]),
TK::CBracket => Vec::from(&[Reduce(PK::RepetitionOperatorP1, 2usize)]),
TK::Choice => Vec::from(&[Reduce(PK::RepetitionOperatorP1, 2usize)]),
TK::Name => Vec::from(&[Reduce(PK::RepetitionOperatorP1, 2usize)]),
TK::StrConst => Vec::from(&[Reduce(PK::RepetitionOperatorP1, 2usize)]),
_ => vec![],
}
}
fn action_repetitionmodifiers_s102(
token_kind: TokenKind,
) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::SemiColon => Vec::from(&[Reduce(PK::RepetitionModifiersOptP1, 1usize)]),
TK::OBrace => Vec::from(&[Reduce(PK::RepetitionModifiersOptP1, 1usize)]),
TK::OBracket => Vec::from(&[Reduce(PK::RepetitionModifiersOptP1, 1usize)]),
TK::CBracket => Vec::from(&[Reduce(PK::RepetitionModifiersOptP1, 1usize)]),
TK::Choice => Vec::from(&[Reduce(PK::RepetitionModifiersOptP1, 1usize)]),
TK::Name => Vec::from(&[Reduce(PK::RepetitionModifiersOptP1, 1usize)]),
TK::StrConst => Vec::from(&[Reduce(PK::RepetitionModifiersOptP1, 1usize)]),
_ => vec![],
}
}
fn action_intconst_s103(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::Comma => Vec::from(&[Reduce(PK::ConstValP1, 1usize)]),
TK::CBrace => Vec::from(&[Reduce(PK::ConstValP1, 1usize)]),
_ => vec![],
}
}
fn action_floatconst_s104(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::Comma => Vec::from(&[Reduce(PK::ConstValP2, 1usize)]),
TK::CBrace => Vec::from(&[Reduce(PK::ConstValP2, 1usize)]),
_ => vec![],
}
}
fn action_boolconst_s105(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::Comma => Vec::from(&[Reduce(PK::ConstValP3, 1usize)]),
TK::CBrace => Vec::from(&[Reduce(PK::ConstValP3, 1usize)]),
_ => vec![],
}
}
fn action_strconst_s106(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::Comma => Vec::from(&[Reduce(PK::ConstValP4, 1usize)]),
TK::CBrace => Vec::from(&[Reduce(PK::ConstValP4, 1usize)]),
_ => vec![],
}
}
fn action_constval_s107(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::Comma => Vec::from(&[Reduce(PK::UserMetaDataP1, 3usize)]),
TK::CBrace => Vec::from(&[Reduce(PK::UserMetaDataP1, 3usize)]),
_ => vec![],
}
}
fn action_prodmetadata_s108(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::Comma => Vec::from(&[Reduce(PK::ProdMetaDatasP1, 3usize)]),
TK::CBrace => Vec::from(&[Reduce(PK::ProdMetaDatasP1, 3usize)]),
_ => vec![],
}
}
fn action_colon_s109(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::OBracket => Vec::from(&[Shift(State::OBracketS29)]),
TK::Name => Vec::from(&[Shift(State::NameS30)]),
TK::StrConst => Vec::from(&[Shift(State::StrConstS31)]),
_ => vec![],
}
}
fn action_comma_s110(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::Left => Vec::from(&[Shift(State::LeftS79)]),
TK::Right => Vec::from(&[Shift(State::RightS80)]),
TK::Reduce => Vec::from(&[Shift(State::ReduceS81)]),
TK::Shift => Vec::from(&[Shift(State::ShiftS82)]),
TK::Dynamic => Vec::from(&[Shift(State::DynamicS83)]),
TK::Prefer => Vec::from(&[Shift(State::PreferS84)]),
TK::Finish => Vec::from(&[Shift(State::FinishS85)]),
TK::NoFinish => Vec::from(&[Shift(State::NoFinishS86)]),
TK::Name => Vec::from(&[Shift(State::NameS87)]),
TK::IntConst => Vec::from(&[Shift(State::IntConstS88)]),
_ => vec![],
}
}
fn action_cbrace_s111(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::SemiColon => Vec::from(&[Shift(State::SemiColonS119)]),
_ => vec![],
}
}
fn action_termmetadatas_s112(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::Comma => Vec::from(&[Shift(State::CommaS110)]),
TK::CBrace => Vec::from(&[Shift(State::CBraceS120)]),
_ => vec![],
}
}
fn action_cbrace_s113(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::SemiColon => Vec::from(&[Reduce(PK::ProductionP2, 4usize)]),
TK::CBracket => Vec::from(&[Reduce(PK::ProductionP2, 4usize)]),
TK::Choice => Vec::from(&[Reduce(PK::ProductionP2, 4usize)]),
_ => vec![],
}
}
fn action_name_s114(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::Comma => Vec::from(&[Reduce(PK::RepetitionModifierP1, 1usize)]),
TK::CSBracket => Vec::from(&[Reduce(PK::RepetitionModifierP1, 1usize)]),
_ => vec![],
}
}
fn action_repetitionmodifier1_s115(
token_kind: TokenKind,
) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::Comma => Vec::from(&[Shift(State::CommaS121)]),
TK::CSBracket => Vec::from(&[Shift(State::CSBracketS122)]),
_ => vec![],
}
}
fn action_repetitionmodifier_s116(
token_kind: TokenKind,
) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::Comma => Vec::from(&[Reduce(PK::RepetitionModifier1P2, 1usize)]),
TK::CSBracket => Vec::from(&[Reduce(PK::RepetitionModifier1P2, 1usize)]),
_ => vec![],
}
}
fn action_grammarrulerhs_s117(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::SemiColon => Vec::from(&[Shift(State::SemiColonS123)]),
TK::Choice => Vec::from(&[Shift(State::ChoiceS63)]),
_ => vec![],
}
}
fn action_termmetadata_s118(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::Comma => Vec::from(&[Reduce(PK::TermMetaDatasP1, 3usize)]),
TK::CBrace => Vec::from(&[Reduce(PK::TermMetaDatasP1, 3usize)]),
_ => vec![],
}
}
fn action_semicolon_s119(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::STOP => Vec::from(&[Reduce(PK::TerminalRuleP4, 7usize)]),
TK::Name => Vec::from(&[Reduce(PK::TerminalRuleP4, 7usize)]),
TK::Annotation => Vec::from(&[Reduce(PK::TerminalRuleP4, 7usize)]),
_ => vec![],
}
}
fn action_cbrace_s120(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::SemiColon => Vec::from(&[Shift(State::SemiColonS124)]),
_ => vec![],
}
}
fn action_comma_s121(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::Name => Vec::from(&[Shift(State::NameS114)]),
_ => vec![],
}
}
fn action_csbracket_s122(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::SemiColon => Vec::from(&[Reduce(PK::RepetitionModifiersP1, 3usize)]),
TK::OBrace => Vec::from(&[Reduce(PK::RepetitionModifiersP1, 3usize)]),
TK::OBracket => Vec::from(&[Reduce(PK::RepetitionModifiersP1, 3usize)]),
TK::CBracket => Vec::from(&[Reduce(PK::RepetitionModifiersP1, 3usize)]),
TK::Choice => Vec::from(&[Reduce(PK::RepetitionModifiersP1, 3usize)]),
TK::Name => Vec::from(&[Reduce(PK::RepetitionModifiersP1, 3usize)]),
TK::StrConst => Vec::from(&[Reduce(PK::RepetitionModifiersP1, 3usize)]),
_ => vec![],
}
}
fn action_semicolon_s123(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::STOP => Vec::from(&[Reduce(PK::GrammarRuleP2, 8usize)]),
TK::Terminals => Vec::from(&[Reduce(PK::GrammarRuleP2, 8usize)]),
TK::Name => Vec::from(&[Reduce(PK::GrammarRuleP2, 8usize)]),
TK::Annotation => Vec::from(&[Reduce(PK::GrammarRuleP2, 8usize)]),
_ => vec![],
}
}
fn action_semicolon_s124(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::STOP => Vec::from(&[Reduce(PK::TerminalRuleP3, 8usize)]),
TK::Name => Vec::from(&[Reduce(PK::TerminalRuleP3, 8usize)]),
TK::Annotation => Vec::from(&[Reduce(PK::TerminalRuleP3, 8usize)]),
_ => vec![],
}
}
fn action_repetitionmodifier_s125(
token_kind: TokenKind,
) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::Comma => Vec::from(&[Reduce(PK::RepetitionModifier1P1, 3usize)]),
TK::CSBracket => Vec::from(&[Reduce(PK::RepetitionModifier1P1, 3usize)]),
_ => vec![],
}
}
fn action_augl_s126(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::STOP => Vec::from(&[Reduce(PK::LayoutItem0P2, 0usize)]),
TK::OComment => Vec::from(&[Shift(State::OCommentS127)]),
TK::WS => Vec::from(&[Shift(State::WSS128)]),
TK::CommentLine => Vec::from(&[Shift(State::CommentLineS129)]),
_ => vec![],
}
}
fn action_ocomment_s127(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::OComment => Vec::from(&[Shift(State::OCommentS127)]),
TK::CComment => Vec::from(&[Reduce(PK::Cornc0P2, 0usize)]),
TK::WS => Vec::from(&[Shift(State::WSS135)]),
TK::CommentLine => Vec::from(&[Shift(State::CommentLineS129)]),
TK::NotComment => Vec::from(&[Shift(State::NotCommentS136)]),
_ => vec![],
}
}
fn action_ws_s128(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::STOP => Vec::from(&[Reduce(PK::LayoutItemP1, 1usize)]),
TK::OComment => Vec::from(&[Reduce(PK::LayoutItemP1, 1usize)]),
TK::WS => Vec::from(&[Reduce(PK::LayoutItemP1, 1usize)]),
TK::CommentLine => Vec::from(&[Reduce(PK::LayoutItemP1, 1usize)]),
_ => vec![],
}
}
fn action_commentline_s129(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::STOP => Vec::from(&[Reduce(PK::CommentP2, 1usize)]),
TK::OComment => Vec::from(&[Reduce(PK::CommentP2, 1usize)]),
TK::CComment => Vec::from(&[Reduce(PK::CommentP2, 1usize)]),
TK::WS => Vec::from(&[Reduce(PK::CommentP2, 1usize)]),
TK::CommentLine => Vec::from(&[Reduce(PK::CommentP2, 1usize)]),
TK::NotComment => Vec::from(&[Reduce(PK::CommentP2, 1usize)]),
_ => vec![],
}
}
fn action_layout_s130(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::STOP => Vec::from(&[Accept]),
_ => vec![],
}
}
fn action_layoutitem1_s131(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::STOP => Vec::from(&[Reduce(PK::LayoutItem0P1, 1usize)]),
TK::OComment => Vec::from(&[Shift(State::OCommentS127)]),
TK::WS => Vec::from(&[Shift(State::WSS128)]),
TK::CommentLine => Vec::from(&[Shift(State::CommentLineS129)]),
_ => vec![],
}
}
fn action_layoutitem0_s132(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::STOP => Vec::from(&[Reduce(PK::LayoutP1, 1usize)]),
_ => vec![],
}
}
fn action_layoutitem_s133(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::STOP => Vec::from(&[Reduce(PK::LayoutItem1P2, 1usize)]),
TK::OComment => Vec::from(&[Reduce(PK::LayoutItem1P2, 1usize)]),
TK::WS => Vec::from(&[Reduce(PK::LayoutItem1P2, 1usize)]),
TK::CommentLine => Vec::from(&[Reduce(PK::LayoutItem1P2, 1usize)]),
_ => vec![],
}
}
fn action_comment_s134(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::STOP => Vec::from(&[Reduce(PK::LayoutItemP2, 1usize)]),
TK::OComment => Vec::from(&[Reduce(PK::LayoutItemP2, 1usize)]),
TK::WS => Vec::from(&[Reduce(PK::LayoutItemP2, 1usize)]),
TK::CommentLine => Vec::from(&[Reduce(PK::LayoutItemP2, 1usize)]),
_ => vec![],
}
}
fn action_ws_s135(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::OComment => Vec::from(&[Reduce(PK::CorncP3, 1usize)]),
TK::CComment => Vec::from(&[Reduce(PK::CorncP3, 1usize)]),
TK::WS => Vec::from(&[Reduce(PK::CorncP3, 1usize)]),
TK::CommentLine => Vec::from(&[Reduce(PK::CorncP3, 1usize)]),
TK::NotComment => Vec::from(&[Reduce(PK::CorncP3, 1usize)]),
_ => vec![],
}
}
fn action_notcomment_s136(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::OComment => Vec::from(&[Reduce(PK::CorncP2, 1usize)]),
TK::CComment => Vec::from(&[Reduce(PK::CorncP2, 1usize)]),
TK::WS => Vec::from(&[Reduce(PK::CorncP2, 1usize)]),
TK::CommentLine => Vec::from(&[Reduce(PK::CorncP2, 1usize)]),
TK::NotComment => Vec::from(&[Reduce(PK::CorncP2, 1usize)]),
_ => vec![],
}
}
fn action_comment_s137(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::OComment => Vec::from(&[Reduce(PK::CorncP1, 1usize)]),
TK::CComment => Vec::from(&[Reduce(PK::CorncP1, 1usize)]),
TK::WS => Vec::from(&[Reduce(PK::CorncP1, 1usize)]),
TK::CommentLine => Vec::from(&[Reduce(PK::CorncP1, 1usize)]),
TK::NotComment => Vec::from(&[Reduce(PK::CorncP1, 1usize)]),
_ => vec![],
}
}
fn action_corncs_s138(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::CComment => Vec::from(&[Shift(State::CCommentS143)]),
_ => vec![],
}
}
fn action_cornc1_s139(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::OComment => Vec::from(&[Shift(State::OCommentS127)]),
TK::CComment => Vec::from(&[Reduce(PK::Cornc0P1, 1usize)]),
TK::WS => Vec::from(&[Shift(State::WSS135)]),
TK::CommentLine => Vec::from(&[Shift(State::CommentLineS129)]),
TK::NotComment => Vec::from(&[Shift(State::NotCommentS136)]),
_ => vec![],
}
}
fn action_cornc0_s140(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::CComment => Vec::from(&[Reduce(PK::CorncsP1, 1usize)]),
_ => vec![],
}
}
fn action_cornc_s141(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::OComment => Vec::from(&[Reduce(PK::Cornc1P2, 1usize)]),
TK::CComment => Vec::from(&[Reduce(PK::Cornc1P2, 1usize)]),
TK::WS => Vec::from(&[Reduce(PK::Cornc1P2, 1usize)]),
TK::CommentLine => Vec::from(&[Reduce(PK::Cornc1P2, 1usize)]),
TK::NotComment => Vec::from(&[Reduce(PK::Cornc1P2, 1usize)]),
_ => vec![],
}
}
fn action_layoutitem_s142(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::STOP => Vec::from(&[Reduce(PK::LayoutItem1P1, 2usize)]),
TK::OComment => Vec::from(&[Reduce(PK::LayoutItem1P1, 2usize)]),
TK::WS => Vec::from(&[Reduce(PK::LayoutItem1P1, 2usize)]),
TK::CommentLine => Vec::from(&[Reduce(PK::LayoutItem1P1, 2usize)]),
_ => vec![],
}
}
fn action_ccomment_s143(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::STOP => Vec::from(&[Reduce(PK::CommentP1, 3usize)]),
TK::OComment => Vec::from(&[Reduce(PK::CommentP1, 3usize)]),
TK::CComment => Vec::from(&[Reduce(PK::CommentP1, 3usize)]),
TK::WS => Vec::from(&[Reduce(PK::CommentP1, 3usize)]),
TK::CommentLine => Vec::from(&[Reduce(PK::CommentP1, 3usize)]),
TK::NotComment => Vec::from(&[Reduce(PK::CommentP1, 3usize)]),
_ => vec![],
}
}
fn action_cornc_s144(token_kind: TokenKind) -> Vec<Action<State, ProdKind>> {
match token_kind {
TK::OComment => Vec::from(&[Reduce(PK::Cornc1P1, 2usize)]),
TK::CComment => Vec::from(&[Reduce(PK::Cornc1P1, 2usize)]),
TK::WS => Vec::from(&[Reduce(PK::Cornc1P1, 2usize)]),
TK::CommentLine => Vec::from(&[Reduce(PK::Cornc1P1, 2usize)]),
TK::NotComment => Vec::from(&[Reduce(PK::Cornc1P1, 2usize)]),
_ => vec![],
}
}
fn goto_aug_s0(nonterm_kind: NonTermKind) -> State {
match nonterm_kind {
NonTermKind::File => State::FileS4,
NonTermKind::GrammarRule1 => State::GrammarRule1S5,
NonTermKind::ImportStm1 => State::ImportStm1S6,
NonTermKind::ImportStm => State::ImportStmS7,
NonTermKind::GrammarRule => State::GrammarRuleS8,
NonTermKind::AnnotationOpt => State::AnnotationOptS9,
_ => {
panic!(
"Invalid terminal kind ({nonterm_kind:?}) for GOTO state ({:?}).",
State::AUGS0
)
}
}
}
fn goto_terminals_s1(nonterm_kind: NonTermKind) -> State {
match nonterm_kind {
NonTermKind::TerminalRule1 => State::TerminalRule1S10,
NonTermKind::AnnotationOpt => State::AnnotationOptS11,
NonTermKind::TerminalRule => State::TerminalRuleS12,
_ => {
panic!(
"Invalid terminal kind ({nonterm_kind:?}) for GOTO state ({:?}).",
State::TerminalsS1
)
}
}
}
fn goto_grammarrule1_s5(nonterm_kind: NonTermKind) -> State {
match nonterm_kind {
NonTermKind::GrammarRule => State::GrammarRuleS15,
NonTermKind::AnnotationOpt => State::AnnotationOptS9,
_ => {
panic!(
"Invalid terminal kind ({nonterm_kind:?}) for GOTO state ({:?}).",
State::GrammarRule1S5
)
}
}
}
fn goto_importstm1_s6(nonterm_kind: NonTermKind) -> State {
match nonterm_kind {
NonTermKind::GrammarRule1 => State::GrammarRule1S16,
NonTermKind::ImportStm => State::ImportStmS17,
NonTermKind::GrammarRule => State::GrammarRuleS8,
NonTermKind::AnnotationOpt => State::AnnotationOptS9,
_ => {
panic!(
"Invalid terminal kind ({nonterm_kind:?}) for GOTO state ({:?}).",
State::ImportStm1S6
)
}
}
}
fn goto_terminalrule1_s10(nonterm_kind: NonTermKind) -> State {
match nonterm_kind {
NonTermKind::AnnotationOpt => State::AnnotationOptS11,
NonTermKind::TerminalRule => State::TerminalRuleS19,
_ => {
panic!(
"Invalid terminal kind ({nonterm_kind:?}) for GOTO state ({:?}).",
State::TerminalRule1S10
)
}
}
}
fn goto_terminals_s14(nonterm_kind: NonTermKind) -> State {
match nonterm_kind {
NonTermKind::TerminalRule1 => State::TerminalRule1S22,
NonTermKind::AnnotationOpt => State::AnnotationOptS11,
NonTermKind::TerminalRule => State::TerminalRuleS12,
_ => {
panic!(
"Invalid terminal kind ({nonterm_kind:?}) for GOTO state ({:?}).",
State::TerminalsS14
)
}
}
}
fn goto_grammarrule1_s16(nonterm_kind: NonTermKind) -> State {
match nonterm_kind {
NonTermKind::GrammarRule => State::GrammarRuleS15,
NonTermKind::AnnotationOpt => State::AnnotationOptS9,
_ => {
panic!(
"Invalid terminal kind ({nonterm_kind:?}) for GOTO state ({:?}).",
State::GrammarRule1S16
)
}
}
}
fn goto_terminalrule1_s22(nonterm_kind: NonTermKind) -> State {
match nonterm_kind {
NonTermKind::AnnotationOpt => State::AnnotationOptS11,
NonTermKind::TerminalRule => State::TerminalRuleS19,
_ => {
panic!(
"Invalid terminal kind ({nonterm_kind:?}) for GOTO state ({:?}).",
State::TerminalRule1S22
)
}
}
}
fn goto_terminals_s23(nonterm_kind: NonTermKind) -> State {
match nonterm_kind {
NonTermKind::TerminalRule1 => State::TerminalRule1S28,
NonTermKind::AnnotationOpt => State::AnnotationOptS11,
NonTermKind::TerminalRule => State::TerminalRuleS12,
_ => {
panic!(
"Invalid terminal kind ({nonterm_kind:?}) for GOTO state ({:?}).",
State::TerminalsS23
)
}
}
}
fn goto_colon_s24(nonterm_kind: NonTermKind) -> State {
match nonterm_kind {
NonTermKind::GrammarRuleRHS => State::GrammarRuleRHSS32,
NonTermKind::Production => State::ProductionS33,
NonTermKind::Assignment1 => State::Assignment1S34,
NonTermKind::Assignment => State::AssignmentS35,
NonTermKind::PlainAssignment => State::PlainAssignmentS36,
NonTermKind::BoolAssignment => State::BoolAssignmentS37,
NonTermKind::ProductionGroup => State::ProductionGroupS38,
NonTermKind::GrammarSymbolRef => State::GrammarSymbolRefS39,
NonTermKind::GrammarSymbol => State::GrammarSymbolS40,
_ => {
panic!(
"Invalid terminal kind ({nonterm_kind:?}) for GOTO state ({:?}).",
State::ColonS24
)
}
}
}
fn goto_obrace_s25(nonterm_kind: NonTermKind) -> State {
match nonterm_kind {
NonTermKind::ProdMetaData => State::ProdMetaDataS50,
NonTermKind::ProdMetaDatas => State::ProdMetaDatasS51,
NonTermKind::UserMetaData => State::UserMetaDataS52,
NonTermKind::ProdKind => State::ProdKindS53,
_ => {
panic!(
"Invalid terminal kind ({nonterm_kind:?}) for GOTO state ({:?}).",
State::OBraceS25
)
}
}
}
fn goto_colon_s26(nonterm_kind: NonTermKind) -> State {
match nonterm_kind {
NonTermKind::Recognizer => State::RecognizerS58,
_ => {
panic!(
"Invalid terminal kind ({nonterm_kind:?}) for GOTO state ({:?}).",
State::ColonS26
)
}
}
}
fn goto_terminalrule1_s28(nonterm_kind: NonTermKind) -> State {
match nonterm_kind {
NonTermKind::AnnotationOpt => State::AnnotationOptS11,
NonTermKind::TerminalRule => State::TerminalRuleS19,
_ => {
panic!(
"Invalid terminal kind ({nonterm_kind:?}) for GOTO state ({:?}).",
State::TerminalRule1S28
)
}
}
}
fn goto_obracket_s29(nonterm_kind: NonTermKind) -> State {
match nonterm_kind {
NonTermKind::GrammarRuleRHS => State::GrammarRuleRHSS59,
NonTermKind::Production => State::ProductionS33,
NonTermKind::Assignment1 => State::Assignment1S34,
NonTermKind::Assignment => State::AssignmentS35,
NonTermKind::PlainAssignment => State::PlainAssignmentS36,
NonTermKind::BoolAssignment => State::BoolAssignmentS37,
NonTermKind::ProductionGroup => State::ProductionGroupS38,
NonTermKind::GrammarSymbolRef => State::GrammarSymbolRefS39,
NonTermKind::GrammarSymbol => State::GrammarSymbolS40,
_ => {
panic!(
"Invalid terminal kind ({nonterm_kind:?}) for GOTO state ({:?}).",
State::OBracketS29
)
}
}
}
fn goto_assignment1_s34(nonterm_kind: NonTermKind) -> State {
match nonterm_kind {
NonTermKind::Assignment => State::AssignmentS65,
NonTermKind::PlainAssignment => State::PlainAssignmentS36,
NonTermKind::BoolAssignment => State::BoolAssignmentS37,
NonTermKind::ProductionGroup => State::ProductionGroupS38,
NonTermKind::GrammarSymbolRef => State::GrammarSymbolRefS39,
NonTermKind::GrammarSymbol => State::GrammarSymbolS40,
_ => {
panic!(
"Invalid terminal kind ({nonterm_kind:?}) for GOTO state ({:?}).",
State::Assignment1S34
)
}
}
}
fn goto_productiongroup_s38(nonterm_kind: NonTermKind) -> State {
match nonterm_kind {
NonTermKind::RepetitionOperatorOpt => State::RepetitionOperatorOptS72,
NonTermKind::RepetitionOperator => State::RepetitionOperatorS73,
NonTermKind::RepetitionOperatorOp => State::RepetitionOperatorOpS74,
_ => {
panic!(
"Invalid terminal kind ({nonterm_kind:?}) for GOTO state ({:?}).",
State::ProductionGroupS38
)
}
}
}
fn goto_grammarsymbol_s40(nonterm_kind: NonTermKind) -> State {
match nonterm_kind {
NonTermKind::RepetitionOperatorOpt => State::RepetitionOperatorOptS75,
NonTermKind::RepetitionOperator => State::RepetitionOperatorS73,
NonTermKind::RepetitionOperatorOp => State::RepetitionOperatorOpS74,
_ => {
panic!(
"Invalid terminal kind ({nonterm_kind:?}) for GOTO state ({:?}).",
State::GrammarSymbolS40
)
}
}
}
fn goto_obrace_s55(nonterm_kind: NonTermKind) -> State {
match nonterm_kind {
NonTermKind::TermMetaData => State::TermMetaDataS89,
NonTermKind::TermMetaDatas => State::TermMetaDatasS90,
NonTermKind::UserMetaData => State::UserMetaDataS91,
_ => {
panic!(
"Invalid terminal kind ({nonterm_kind:?}) for GOTO state ({:?}).",
State::OBraceS55
)
}
}
}
fn goto_equals_s60(nonterm_kind: NonTermKind) -> State {
match nonterm_kind {
NonTermKind::ProductionGroup => State::ProductionGroupS38,
NonTermKind::GrammarSymbolRef => State::GrammarSymbolRefS96,
NonTermKind::GrammarSymbol => State::GrammarSymbolS40,
_ => {
panic!(
"Invalid terminal kind ({nonterm_kind:?}) for GOTO state ({:?}).",
State::EqualsS60
)
}
}
}
fn goto_qequals_s61(nonterm_kind: NonTermKind) -> State {
match nonterm_kind {
NonTermKind::ProductionGroup => State::ProductionGroupS38,
NonTermKind::GrammarSymbolRef => State::GrammarSymbolRefS97,
NonTermKind::GrammarSymbol => State::GrammarSymbolS40,
_ => {
panic!(
"Invalid terminal kind ({nonterm_kind:?}) for GOTO state ({:?}).",
State::QEqualsS61
)
}
}
}
fn goto_choice_s63(nonterm_kind: NonTermKind) -> State {
match nonterm_kind {
NonTermKind::Production => State::ProductionS98,
NonTermKind::Assignment1 => State::Assignment1S34,
NonTermKind::Assignment => State::AssignmentS35,
NonTermKind::PlainAssignment => State::PlainAssignmentS36,
NonTermKind::BoolAssignment => State::BoolAssignmentS37,
NonTermKind::ProductionGroup => State::ProductionGroupS38,
NonTermKind::GrammarSymbolRef => State::GrammarSymbolRefS39,
NonTermKind::GrammarSymbol => State::GrammarSymbolS40,
_ => {
panic!(
"Invalid terminal kind ({nonterm_kind:?}) for GOTO state ({:?}).",
State::ChoiceS63
)
}
}
}
fn goto_obrace_s64(nonterm_kind: NonTermKind) -> State {
match nonterm_kind {
NonTermKind::ProdMetaData => State::ProdMetaDataS50,
NonTermKind::ProdMetaDatas => State::ProdMetaDatasS99,
NonTermKind::UserMetaData => State::UserMetaDataS52,
NonTermKind::ProdKind => State::ProdKindS53,
_ => {
panic!(
"Invalid terminal kind ({nonterm_kind:?}) for GOTO state ({:?}).",
State::OBraceS64
)
}
}
}
fn goto_repetitionoperatorop_s74(nonterm_kind: NonTermKind) -> State {
match nonterm_kind {
NonTermKind::RepetitionModifiersOpt => State::RepetitionModifiersOptS101,
NonTermKind::RepetitionModifiers => State::RepetitionModifiersS102,
_ => {
panic!(
"Invalid terminal kind ({nonterm_kind:?}) for GOTO state ({:?}).",
State::RepetitionOperatorOpS74
)
}
}
}
fn goto_colon_s76(nonterm_kind: NonTermKind) -> State {
match nonterm_kind {
NonTermKind::ConstVal => State::ConstValS107,
_ => {
panic!(
"Invalid terminal kind ({nonterm_kind:?}) for GOTO state ({:?}).",
State::ColonS76
)
}
}
}
fn goto_comma_s77(nonterm_kind: NonTermKind) -> State {
match nonterm_kind {
NonTermKind::ProdMetaData => State::ProdMetaDataS108,
NonTermKind::UserMetaData => State::UserMetaDataS52,
NonTermKind::ProdKind => State::ProdKindS53,
_ => {
panic!(
"Invalid terminal kind ({nonterm_kind:?}) for GOTO state ({:?}).",
State::CommaS77
)
}
}
}
fn goto_obrace_s93(nonterm_kind: NonTermKind) -> State {
match nonterm_kind {
NonTermKind::TermMetaData => State::TermMetaDataS89,
NonTermKind::TermMetaDatas => State::TermMetaDatasS112,
NonTermKind::UserMetaData => State::UserMetaDataS91,
_ => {
panic!(
"Invalid terminal kind ({nonterm_kind:?}) for GOTO state ({:?}).",
State::OBraceS93
)
}
}
}
fn goto_osbracket_s100(nonterm_kind: NonTermKind) -> State {
match nonterm_kind {
NonTermKind::RepetitionModifier1 => State::RepetitionModifier1S115,
NonTermKind::RepetitionModifier => State::RepetitionModifierS116,
_ => {
panic!(
"Invalid terminal kind ({nonterm_kind:?}) for GOTO state ({:?}).",
State::OSBracketS100
)
}
}
}
fn goto_colon_s109(nonterm_kind: NonTermKind) -> State {
match nonterm_kind {
NonTermKind::GrammarRuleRHS => State::GrammarRuleRHSS117,
NonTermKind::Production => State::ProductionS33,
NonTermKind::Assignment1 => State::Assignment1S34,
NonTermKind::Assignment => State::AssignmentS35,
NonTermKind::PlainAssignment => State::PlainAssignmentS36,
NonTermKind::BoolAssignment => State::BoolAssignmentS37,
NonTermKind::ProductionGroup => State::ProductionGroupS38,
NonTermKind::GrammarSymbolRef => State::GrammarSymbolRefS39,
NonTermKind::GrammarSymbol => State::GrammarSymbolS40,
_ => {
panic!(
"Invalid terminal kind ({nonterm_kind:?}) for GOTO state ({:?}).",
State::ColonS109
)
}
}
}
fn goto_comma_s110(nonterm_kind: NonTermKind) -> State {
match nonterm_kind {
NonTermKind::TermMetaData => State::TermMetaDataS118,
NonTermKind::UserMetaData => State::UserMetaDataS91,
_ => {
panic!(
"Invalid terminal kind ({nonterm_kind:?}) for GOTO state ({:?}).",
State::CommaS110
)
}
}
}
fn goto_comma_s121(nonterm_kind: NonTermKind) -> State {
match nonterm_kind {
NonTermKind::RepetitionModifier => State::RepetitionModifierS125,
_ => {
panic!(
"Invalid terminal kind ({nonterm_kind:?}) for GOTO state ({:?}).",
State::CommaS121
)
}
}
}
fn goto_augl_s126(nonterm_kind: NonTermKind) -> State {
match nonterm_kind {
NonTermKind::Layout => State::LayoutS130,
NonTermKind::LayoutItem1 => State::LayoutItem1S131,
NonTermKind::LayoutItem0 => State::LayoutItem0S132,
NonTermKind::LayoutItem => State::LayoutItemS133,
NonTermKind::Comment => State::CommentS134,
_ => {
panic!(
"Invalid terminal kind ({nonterm_kind:?}) for GOTO state ({:?}).",
State::AUGLS126
)
}
}
}
fn goto_ocomment_s127(nonterm_kind: NonTermKind) -> State {
match nonterm_kind {
NonTermKind::Comment => State::CommentS137,
NonTermKind::Corncs => State::CorncsS138,
NonTermKind::Cornc1 => State::Cornc1S139,
NonTermKind::Cornc0 => State::Cornc0S140,
NonTermKind::Cornc => State::CorncS141,
_ => {
panic!(
"Invalid terminal kind ({nonterm_kind:?}) for GOTO state ({:?}).",
State::OCommentS127
)
}
}
}
fn goto_layoutitem1_s131(nonterm_kind: NonTermKind) -> State {
match nonterm_kind {
NonTermKind::LayoutItem => State::LayoutItemS142,
NonTermKind::Comment => State::CommentS134,
_ => {
panic!(
"Invalid terminal kind ({nonterm_kind:?}) for GOTO state ({:?}).",
State::LayoutItem1S131
)
}
}
}
fn goto_cornc1_s139(nonterm_kind: NonTermKind) -> State {
match nonterm_kind {
NonTermKind::Comment => State::CommentS137,
NonTermKind::Cornc => State::CorncS144,
_ => {
panic!(
"Invalid terminal kind ({nonterm_kind:?}) for GOTO state ({:?}).",
State::Cornc1S139
)
}
}
}
fn goto_invalid(_nonterm_kind: NonTermKind) -> State {
panic!("Invalid GOTO entry!");
}
pub(crate) static PARSER_DEFINITION: RustemoParserDefinition = RustemoParserDefinition {
actions: [
action_aug_s0,
action_terminals_s1,
action_import_s2,
action_annotation_s3,
action_file_s4,
action_grammarrule1_s5,
action_importstm1_s6,
action_importstm_s7,
action_grammarrule_s8,
action_annotationopt_s9,
action_terminalrule1_s10,
action_annotationopt_s11,
action_terminalrule_s12,
action_strconst_s13,
action_terminals_s14,
action_grammarrule_s15,
action_grammarrule1_s16,
action_importstm_s17,
action_name_s18,
action_terminalrule_s19,
action_name_s20,
action_as_s21,
action_terminalrule1_s22,
action_terminals_s23,
action_colon_s24,
action_obrace_s25,
action_colon_s26,
action_name_s27,
action_terminalrule1_s28,
action_obracket_s29,
action_name_s30,
action_strconst_s31,
action_grammarrulerhs_s32,
action_production_s33,
action_assignment1_s34,
action_assignment_s35,
action_plainassignment_s36,
action_boolassignment_s37,
action_productiongroup_s38,
action_grammarsymbolref_s39,
action_grammarsymbol_s40,
action_left_s41,
action_right_s42,
action_reduce_s43,
action_shift_s44,
action_dynamic_s45,
action_nops_s46,
action_nopse_s47,
action_name_s48,
action_intconst_s49,
action_prodmetadata_s50,
action_prodmetadatas_s51,
action_usermetadata_s52,
action_prodkind_s53,
action_semicolon_s54,
action_obrace_s55,
action_regexterm_s56,
action_strconst_s57,
action_recognizer_s58,
action_grammarrulerhs_s59,
action_equals_s60,
action_qequals_s61,
action_semicolon_s62,
action_choice_s63,
action_obrace_s64,
action_assignment_s65,
action_zeroormore_s66,
action_zeroormoregreedy_s67,
action_oneormore_s68,
action_oneormoregreedy_s69,
action_optional_s70,
action_optionalgreedy_s71,
action_repetitionoperatoropt_s72,
action_repetitionoperator_s73,
action_repetitionoperatorop_s74,
action_repetitionoperatoropt_s75,
action_colon_s76,
action_comma_s77,
action_cbrace_s78,
action_left_s79,
action_right_s80,
action_reduce_s81,
action_shift_s82,
action_dynamic_s83,
action_prefer_s84,
action_finish_s85,
action_nofinish_s86,
action_name_s87,
action_intconst_s88,
action_termmetadata_s89,
action_termmetadatas_s90,
action_usermetadata_s91,
action_semicolon_s92,
action_obrace_s93,
action_cbracket_s94,
action_name_s95,
action_grammarsymbolref_s96,
action_grammarsymbolref_s97,
action_production_s98,
action_prodmetadatas_s99,
action_osbracket_s100,
action_repetitionmodifiersopt_s101,
action_repetitionmodifiers_s102,
action_intconst_s103,
action_floatconst_s104,
action_boolconst_s105,
action_strconst_s106,
action_constval_s107,
action_prodmetadata_s108,
action_colon_s109,
action_comma_s110,
action_cbrace_s111,
action_termmetadatas_s112,
action_cbrace_s113,
action_name_s114,
action_repetitionmodifier1_s115,
action_repetitionmodifier_s116,
action_grammarrulerhs_s117,
action_termmetadata_s118,
action_semicolon_s119,
action_cbrace_s120,
action_comma_s121,
action_csbracket_s122,
action_semicolon_s123,
action_semicolon_s124,
action_repetitionmodifier_s125,
action_augl_s126,
action_ocomment_s127,
action_ws_s128,
action_commentline_s129,
action_layout_s130,
action_layoutitem1_s131,
action_layoutitem0_s132,
action_layoutitem_s133,
action_comment_s134,
action_ws_s135,
action_notcomment_s136,
action_comment_s137,
action_corncs_s138,
action_cornc1_s139,
action_cornc0_s140,
action_cornc_s141,
action_layoutitem_s142,
action_ccomment_s143,
action_cornc_s144,
],
gotos: [
goto_aug_s0,
goto_terminals_s1,
goto_invalid,
goto_invalid,
goto_invalid,
goto_grammarrule1_s5,
goto_importstm1_s6,
goto_invalid,
goto_invalid,
goto_invalid,
goto_terminalrule1_s10,
goto_invalid,
goto_invalid,
goto_invalid,
goto_terminals_s14,
goto_invalid,
goto_grammarrule1_s16,
goto_invalid,
goto_invalid,
goto_invalid,
goto_invalid,
goto_invalid,
goto_terminalrule1_s22,
goto_terminals_s23,
goto_colon_s24,
goto_obrace_s25,
goto_colon_s26,
goto_invalid,
goto_terminalrule1_s28,
goto_obracket_s29,
goto_invalid,
goto_invalid,
goto_invalid,
goto_invalid,
goto_assignment1_s34,
goto_invalid,
goto_invalid,
goto_invalid,
goto_productiongroup_s38,
goto_invalid,
goto_grammarsymbol_s40,
goto_invalid,
goto_invalid,
goto_invalid,
goto_invalid,
goto_invalid,
goto_invalid,
goto_invalid,
goto_invalid,
goto_invalid,
goto_invalid,
goto_invalid,
goto_invalid,
goto_invalid,
goto_invalid,
goto_obrace_s55,
goto_invalid,
goto_invalid,
goto_invalid,
goto_invalid,
goto_equals_s60,
goto_qequals_s61,
goto_invalid,
goto_choice_s63,
goto_obrace_s64,
goto_invalid,
goto_invalid,
goto_invalid,
goto_invalid,
goto_invalid,
goto_invalid,
goto_invalid,
goto_invalid,
goto_invalid,
goto_repetitionoperatorop_s74,
goto_invalid,
goto_colon_s76,
goto_comma_s77,
goto_invalid,
goto_invalid,
goto_invalid,
goto_invalid,
goto_invalid,
goto_invalid,
goto_invalid,
goto_invalid,
goto_invalid,
goto_invalid,
goto_invalid,
goto_invalid,
goto_invalid,
goto_invalid,
goto_invalid,
goto_obrace_s93,
goto_invalid,
goto_invalid,
goto_invalid,
goto_invalid,
goto_invalid,
goto_invalid,
goto_osbracket_s100,
goto_invalid,
goto_invalid,
goto_invalid,
goto_invalid,
goto_invalid,
goto_invalid,
goto_invalid,
goto_invalid,
goto_colon_s109,
goto_comma_s110,
goto_invalid,
goto_invalid,
goto_invalid,
goto_invalid,
goto_invalid,
goto_invalid,
goto_invalid,
goto_invalid,
goto_invalid,
goto_invalid,
goto_comma_s121,
goto_invalid,
goto_invalid,
goto_invalid,
goto_invalid,
goto_augl_s126,
goto_ocomment_s127,
goto_invalid,
goto_invalid,
goto_invalid,
goto_layoutitem1_s131,
goto_invalid,
goto_invalid,
goto_invalid,
goto_invalid,
goto_invalid,
goto_invalid,
goto_invalid,
goto_cornc1_s139,
goto_invalid,
goto_invalid,
goto_invalid,
goto_invalid,
goto_invalid,
],
token_kinds: [
[
Some((TK::Terminals, true)),
Some((TK::Import, true)),
Some((TK::Name, false)),
Some((TK::Annotation, false)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::Name, false)),
Some((TK::Annotation, false)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::StrConst, false)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::Name, false)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::STOP, false)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::STOP, true)),
Some((TK::Terminals, true)),
Some((TK::Name, false)),
Some((TK::Annotation, false)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::Import, true)),
Some((TK::Name, false)),
Some((TK::Annotation, false)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::Import, true)),
Some((TK::Name, false)),
Some((TK::Annotation, false)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::STOP, true)),
Some((TK::Terminals, true)),
Some((TK::Name, false)),
Some((TK::Annotation, false)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::Name, false)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::STOP, true)),
Some((TK::Name, false)),
Some((TK::Annotation, false)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::Name, false)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::STOP, true)),
Some((TK::Name, false)),
Some((TK::Annotation, false)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::Import, true)),
Some((TK::As, true)),
Some((TK::Name, false)),
Some((TK::Annotation, false)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::Name, false)),
Some((TK::Annotation, false)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::STOP, true)),
Some((TK::Terminals, true)),
Some((TK::Name, false)),
Some((TK::Annotation, false)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::STOP, true)),
Some((TK::Terminals, true)),
Some((TK::Name, false)),
Some((TK::Annotation, false)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::Import, true)),
Some((TK::Name, false)),
Some((TK::Annotation, false)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::Colon, true)),
Some((TK::OBrace, true)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::STOP, true)),
Some((TK::Name, false)),
Some((TK::Annotation, false)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::Colon, true)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::Name, false)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::STOP, true)),
Some((TK::Name, false)),
Some((TK::Annotation, false)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::Name, false)),
Some((TK::Annotation, false)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::OBracket, true)),
Some((TK::Name, false)),
Some((TK::StrConst, false)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::Dynamic, true)),
Some((TK::Reduce, true)),
Some((TK::Right, true)),
Some((TK::Shift, true)),
Some((TK::NOPSE, true)),
Some((TK::Left, true)),
Some((TK::NOPS, true)),
Some((TK::Name, false)),
Some((TK::IntConst, false)),
None,
None,
None,
None,
None,
None,
],
[
Some((TK::SemiColon, true)),
Some((TK::OBrace, true)),
Some((TK::RegexTerm, false)),
Some((TK::StrConst, false)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::Import, true)),
Some((TK::Name, false)),
Some((TK::Annotation, false)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::STOP, true)),
Some((TK::Name, false)),
Some((TK::Annotation, false)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::OBracket, true)),
Some((TK::Name, false)),
Some((TK::StrConst, false)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::ZeroOrMoreGreedy, true)),
Some((TK::OneOrMoreGreedy, true)),
Some((TK::OptionalGreedy, true)),
Some((TK::QEquals, true)),
Some((TK::SemiColon, true)),
Some((TK::OBrace, true)),
Some((TK::OBracket, true)),
Some((TK::CBracket, true)),
Some((TK::Choice, true)),
Some((TK::ZeroOrMore, true)),
Some((TK::OneOrMore, true)),
Some((TK::Optional, true)),
Some((TK::Equals, true)),
Some((TK::Name, false)),
Some((TK::StrConst, false)),
],
[
Some((TK::ZeroOrMoreGreedy, true)),
Some((TK::OneOrMoreGreedy, true)),
Some((TK::OptionalGreedy, true)),
Some((TK::SemiColon, true)),
Some((TK::OBrace, true)),
Some((TK::OBracket, true)),
Some((TK::CBracket, true)),
Some((TK::Choice, true)),
Some((TK::ZeroOrMore, true)),
Some((TK::OneOrMore, true)),
Some((TK::Optional, true)),
Some((TK::Name, false)),
Some((TK::StrConst, false)),
None,
None,
],
[
Some((TK::SemiColon, true)),
Some((TK::Choice, true)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::SemiColon, true)),
Some((TK::CBracket, true)),
Some((TK::Choice, true)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::SemiColon, true)),
Some((TK::OBrace, true)),
Some((TK::OBracket, true)),
Some((TK::CBracket, true)),
Some((TK::Choice, true)),
Some((TK::Name, false)),
Some((TK::StrConst, false)),
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::SemiColon, true)),
Some((TK::OBrace, true)),
Some((TK::OBracket, true)),
Some((TK::CBracket, true)),
Some((TK::Choice, true)),
Some((TK::Name, false)),
Some((TK::StrConst, false)),
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::SemiColon, true)),
Some((TK::OBrace, true)),
Some((TK::OBracket, true)),
Some((TK::CBracket, true)),
Some((TK::Choice, true)),
Some((TK::Name, false)),
Some((TK::StrConst, false)),
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::SemiColon, true)),
Some((TK::OBrace, true)),
Some((TK::OBracket, true)),
Some((TK::CBracket, true)),
Some((TK::Choice, true)),
Some((TK::Name, false)),
Some((TK::StrConst, false)),
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::ZeroOrMoreGreedy, true)),
Some((TK::OneOrMoreGreedy, true)),
Some((TK::OptionalGreedy, true)),
Some((TK::SemiColon, true)),
Some((TK::OBrace, true)),
Some((TK::OBracket, true)),
Some((TK::CBracket, true)),
Some((TK::Choice, true)),
Some((TK::ZeroOrMore, true)),
Some((TK::OneOrMore, true)),
Some((TK::Optional, true)),
Some((TK::Name, false)),
Some((TK::StrConst, false)),
None,
None,
],
[
Some((TK::SemiColon, true)),
Some((TK::OBrace, true)),
Some((TK::OBracket, true)),
Some((TK::CBracket, true)),
Some((TK::Choice, true)),
Some((TK::Name, false)),
Some((TK::StrConst, false)),
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::ZeroOrMoreGreedy, true)),
Some((TK::OneOrMoreGreedy, true)),
Some((TK::OptionalGreedy, true)),
Some((TK::SemiColon, true)),
Some((TK::OBrace, true)),
Some((TK::OBracket, true)),
Some((TK::CBracket, true)),
Some((TK::Choice, true)),
Some((TK::ZeroOrMore, true)),
Some((TK::OneOrMore, true)),
Some((TK::Optional, true)),
Some((TK::Name, false)),
Some((TK::StrConst, false)),
None,
None,
],
[
Some((TK::Comma, true)),
Some((TK::CBrace, true)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::Comma, true)),
Some((TK::CBrace, true)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::Comma, true)),
Some((TK::CBrace, true)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::Comma, true)),
Some((TK::CBrace, true)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::Comma, true)),
Some((TK::CBrace, true)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::Comma, true)),
Some((TK::CBrace, true)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::Comma, true)),
Some((TK::CBrace, true)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::Colon, true)),
Some((TK::Comma, true)),
Some((TK::CBrace, true)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::Comma, true)),
Some((TK::CBrace, true)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::Comma, true)),
Some((TK::CBrace, true)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::Comma, true)),
Some((TK::CBrace, true)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::Comma, true)),
Some((TK::CBrace, true)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::Comma, true)),
Some((TK::CBrace, true)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::STOP, true)),
Some((TK::Name, false)),
Some((TK::Annotation, false)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::NoFinish, true)),
Some((TK::Dynamic, true)),
Some((TK::Reduce, true)),
Some((TK::Prefer, true)),
Some((TK::Finish, true)),
Some((TK::Right, true)),
Some((TK::Shift, true)),
Some((TK::Left, true)),
Some((TK::Name, false)),
Some((TK::IntConst, false)),
None,
None,
None,
None,
None,
],
[
Some((TK::SemiColon, true)),
Some((TK::OBrace, true)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::SemiColon, true)),
Some((TK::OBrace, true)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::SemiColon, true)),
Some((TK::OBrace, true)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::CBracket, true)),
Some((TK::Choice, true)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::OBracket, true)),
Some((TK::Name, false)),
Some((TK::StrConst, false)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::OBracket, true)),
Some((TK::Name, false)),
Some((TK::StrConst, false)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::STOP, true)),
Some((TK::Terminals, true)),
Some((TK::Name, false)),
Some((TK::Annotation, false)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::OBracket, true)),
Some((TK::Name, false)),
Some((TK::StrConst, false)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::Dynamic, true)),
Some((TK::Reduce, true)),
Some((TK::Right, true)),
Some((TK::Shift, true)),
Some((TK::NOPSE, true)),
Some((TK::Left, true)),
Some((TK::NOPS, true)),
Some((TK::Name, false)),
Some((TK::IntConst, false)),
None,
None,
None,
None,
None,
None,
],
[
Some((TK::SemiColon, true)),
Some((TK::OBrace, true)),
Some((TK::OBracket, true)),
Some((TK::CBracket, true)),
Some((TK::Choice, true)),
Some((TK::Name, false)),
Some((TK::StrConst, false)),
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::SemiColon, true)),
Some((TK::OBrace, true)),
Some((TK::OBracket, true)),
Some((TK::CBracket, true)),
Some((TK::OSBracket, true)),
Some((TK::Choice, true)),
Some((TK::Name, false)),
Some((TK::StrConst, false)),
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::SemiColon, true)),
Some((TK::OBrace, true)),
Some((TK::OBracket, true)),
Some((TK::CBracket, true)),
Some((TK::OSBracket, true)),
Some((TK::Choice, true)),
Some((TK::Name, false)),
Some((TK::StrConst, false)),
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::SemiColon, true)),
Some((TK::OBrace, true)),
Some((TK::OBracket, true)),
Some((TK::CBracket, true)),
Some((TK::OSBracket, true)),
Some((TK::Choice, true)),
Some((TK::Name, false)),
Some((TK::StrConst, false)),
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::SemiColon, true)),
Some((TK::OBrace, true)),
Some((TK::OBracket, true)),
Some((TK::CBracket, true)),
Some((TK::OSBracket, true)),
Some((TK::Choice, true)),
Some((TK::Name, false)),
Some((TK::StrConst, false)),
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::SemiColon, true)),
Some((TK::OBrace, true)),
Some((TK::OBracket, true)),
Some((TK::CBracket, true)),
Some((TK::OSBracket, true)),
Some((TK::Choice, true)),
Some((TK::Name, false)),
Some((TK::StrConst, false)),
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::SemiColon, true)),
Some((TK::OBrace, true)),
Some((TK::OBracket, true)),
Some((TK::CBracket, true)),
Some((TK::OSBracket, true)),
Some((TK::Choice, true)),
Some((TK::Name, false)),
Some((TK::StrConst, false)),
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::SemiColon, true)),
Some((TK::OBrace, true)),
Some((TK::OBracket, true)),
Some((TK::CBracket, true)),
Some((TK::Choice, true)),
Some((TK::Name, false)),
Some((TK::StrConst, false)),
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::SemiColon, true)),
Some((TK::OBrace, true)),
Some((TK::OBracket, true)),
Some((TK::CBracket, true)),
Some((TK::Choice, true)),
Some((TK::Name, false)),
Some((TK::StrConst, false)),
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::SemiColon, true)),
Some((TK::OBrace, true)),
Some((TK::OBracket, true)),
Some((TK::CBracket, true)),
Some((TK::OSBracket, true)),
Some((TK::Choice, true)),
Some((TK::Name, false)),
Some((TK::StrConst, false)),
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::SemiColon, true)),
Some((TK::OBrace, true)),
Some((TK::OBracket, true)),
Some((TK::CBracket, true)),
Some((TK::Choice, true)),
Some((TK::Name, false)),
Some((TK::StrConst, false)),
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::IntConst, false)),
Some((TK::FloatConst, false)),
Some((TK::BoolConst, false)),
Some((TK::StrConst, false)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::Dynamic, true)),
Some((TK::Reduce, true)),
Some((TK::Right, true)),
Some((TK::Shift, true)),
Some((TK::NOPSE, true)),
Some((TK::Left, true)),
Some((TK::NOPS, true)),
Some((TK::Name, false)),
Some((TK::IntConst, false)),
None,
None,
None,
None,
None,
None,
],
[
Some((TK::Colon, true)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::Comma, true)),
Some((TK::CBrace, true)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::Comma, true)),
Some((TK::CBrace, true)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::Comma, true)),
Some((TK::CBrace, true)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::Comma, true)),
Some((TK::CBrace, true)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::Comma, true)),
Some((TK::CBrace, true)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::Comma, true)),
Some((TK::CBrace, true)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::Comma, true)),
Some((TK::CBrace, true)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::Comma, true)),
Some((TK::CBrace, true)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::Colon, true)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::Comma, true)),
Some((TK::CBrace, true)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::Comma, true)),
Some((TK::CBrace, true)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::Comma, true)),
Some((TK::CBrace, true)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::Comma, true)),
Some((TK::CBrace, true)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::STOP, true)),
Some((TK::Name, false)),
Some((TK::Annotation, false)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::NoFinish, true)),
Some((TK::Dynamic, true)),
Some((TK::Reduce, true)),
Some((TK::Prefer, true)),
Some((TK::Finish, true)),
Some((TK::Right, true)),
Some((TK::Shift, true)),
Some((TK::Left, true)),
Some((TK::Name, false)),
Some((TK::IntConst, false)),
None,
None,
None,
None,
None,
],
[
Some((TK::ZeroOrMoreGreedy, true)),
Some((TK::OneOrMoreGreedy, true)),
Some((TK::OptionalGreedy, true)),
Some((TK::SemiColon, true)),
Some((TK::OBrace, true)),
Some((TK::OBracket, true)),
Some((TK::CBracket, true)),
Some((TK::Choice, true)),
Some((TK::ZeroOrMore, true)),
Some((TK::OneOrMore, true)),
Some((TK::Optional, true)),
Some((TK::Name, false)),
Some((TK::StrConst, false)),
None,
None,
],
[
Some((TK::ZeroOrMoreGreedy, true)),
Some((TK::OneOrMoreGreedy, true)),
Some((TK::OptionalGreedy, true)),
Some((TK::SemiColon, true)),
Some((TK::OBrace, true)),
Some((TK::OBracket, true)),
Some((TK::CBracket, true)),
Some((TK::Choice, true)),
Some((TK::ZeroOrMore, true)),
Some((TK::OneOrMore, true)),
Some((TK::Optional, true)),
Some((TK::Name, false)),
Some((TK::StrConst, false)),
None,
None,
],
[
Some((TK::SemiColon, true)),
Some((TK::OBrace, true)),
Some((TK::OBracket, true)),
Some((TK::CBracket, true)),
Some((TK::Choice, true)),
Some((TK::Name, false)),
Some((TK::StrConst, false)),
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::SemiColon, true)),
Some((TK::OBrace, true)),
Some((TK::OBracket, true)),
Some((TK::CBracket, true)),
Some((TK::Choice, true)),
Some((TK::Name, false)),
Some((TK::StrConst, false)),
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::SemiColon, true)),
Some((TK::CBracket, true)),
Some((TK::Choice, true)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::Comma, true)),
Some((TK::CBrace, true)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::Name, false)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::SemiColon, true)),
Some((TK::OBrace, true)),
Some((TK::OBracket, true)),
Some((TK::CBracket, true)),
Some((TK::Choice, true)),
Some((TK::Name, false)),
Some((TK::StrConst, false)),
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::SemiColon, true)),
Some((TK::OBrace, true)),
Some((TK::OBracket, true)),
Some((TK::CBracket, true)),
Some((TK::Choice, true)),
Some((TK::Name, false)),
Some((TK::StrConst, false)),
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::Comma, true)),
Some((TK::CBrace, true)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::Comma, true)),
Some((TK::CBrace, true)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::Comma, true)),
Some((TK::CBrace, true)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::Comma, true)),
Some((TK::CBrace, true)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::Comma, true)),
Some((TK::CBrace, true)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::Comma, true)),
Some((TK::CBrace, true)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::OBracket, true)),
Some((TK::Name, false)),
Some((TK::StrConst, false)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::NoFinish, true)),
Some((TK::Dynamic, true)),
Some((TK::Reduce, true)),
Some((TK::Prefer, true)),
Some((TK::Finish, true)),
Some((TK::Right, true)),
Some((TK::Shift, true)),
Some((TK::Left, true)),
Some((TK::Name, false)),
Some((TK::IntConst, false)),
None,
None,
None,
None,
None,
],
[
Some((TK::SemiColon, true)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::Comma, true)),
Some((TK::CBrace, true)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::SemiColon, true)),
Some((TK::CBracket, true)),
Some((TK::Choice, true)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::Comma, true)),
Some((TK::CSBracket, true)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::Comma, true)),
Some((TK::CSBracket, true)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::Comma, true)),
Some((TK::CSBracket, true)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::SemiColon, true)),
Some((TK::Choice, true)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::Comma, true)),
Some((TK::CBrace, true)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::STOP, true)),
Some((TK::Name, false)),
Some((TK::Annotation, false)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::SemiColon, true)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::Name, false)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::SemiColon, true)),
Some((TK::OBrace, true)),
Some((TK::OBracket, true)),
Some((TK::CBracket, true)),
Some((TK::Choice, true)),
Some((TK::Name, false)),
Some((TK::StrConst, false)),
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::STOP, true)),
Some((TK::Terminals, true)),
Some((TK::Name, false)),
Some((TK::Annotation, false)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::STOP, true)),
Some((TK::Name, false)),
Some((TK::Annotation, false)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::Comma, true)),
Some((TK::CSBracket, true)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::STOP, true)),
Some((TK::OComment, true)),
Some((TK::WS, false)),
Some((TK::CommentLine, false)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::OComment, true)),
Some((TK::CComment, true)),
Some((TK::WS, false)),
Some((TK::CommentLine, false)),
Some((TK::NotComment, false)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::STOP, true)),
Some((TK::OComment, true)),
Some((TK::WS, false)),
Some((TK::CommentLine, false)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::STOP, true)),
Some((TK::OComment, true)),
Some((TK::CComment, true)),
Some((TK::WS, false)),
Some((TK::CommentLine, false)),
Some((TK::NotComment, false)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::STOP, false)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::STOP, true)),
Some((TK::OComment, true)),
Some((TK::WS, false)),
Some((TK::CommentLine, false)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::STOP, false)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::STOP, true)),
Some((TK::OComment, true)),
Some((TK::WS, false)),
Some((TK::CommentLine, false)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::STOP, true)),
Some((TK::OComment, true)),
Some((TK::WS, false)),
Some((TK::CommentLine, false)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::OComment, true)),
Some((TK::CComment, true)),
Some((TK::WS, false)),
Some((TK::CommentLine, false)),
Some((TK::NotComment, false)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::OComment, true)),
Some((TK::CComment, true)),
Some((TK::WS, false)),
Some((TK::CommentLine, false)),
Some((TK::NotComment, false)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::OComment, true)),
Some((TK::CComment, true)),
Some((TK::WS, false)),
Some((TK::CommentLine, false)),
Some((TK::NotComment, false)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::CComment, true)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::OComment, true)),
Some((TK::CComment, true)),
Some((TK::WS, false)),
Some((TK::CommentLine, false)),
Some((TK::NotComment, false)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::CComment, true)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::OComment, true)),
Some((TK::CComment, true)),
Some((TK::WS, false)),
Some((TK::CommentLine, false)),
Some((TK::NotComment, false)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::STOP, true)),
Some((TK::OComment, true)),
Some((TK::WS, false)),
Some((TK::CommentLine, false)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::STOP, true)),
Some((TK::OComment, true)),
Some((TK::CComment, true)),
Some((TK::WS, false)),
Some((TK::CommentLine, false)),
Some((TK::NotComment, false)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
[
Some((TK::OComment, true)),
Some((TK::CComment, true)),
Some((TK::WS, false)),
Some((TK::CommentLine, false)),
Some((TK::NotComment, false)),
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
],
],
};
impl ParserDefinition<State, ProdKind, TokenKind, NonTermKind>
for RustemoParserDefinition {
fn actions(&self, state: State, token: TokenKind) -> Vec<Action<State, ProdKind>> {
PARSER_DEFINITION.actions[state as usize](token)
}
fn goto(&self, state: State, nonterm: NonTermKind) -> State {
PARSER_DEFINITION.gotos[state as usize](nonterm)
}
fn expected_token_kinds(&self, state: State) -> Vec<(TokenKind, bool)> {
PARSER_DEFINITION.token_kinds[state as usize].iter().map_while(|t| *t).collect()
}
fn longest_match() -> bool {
true
}
fn grammar_order() -> bool {
true
}
}
pub(crate) type Context<'i, I> = LRContext<'i, I, State, TokenKind>;
pub struct RustemoParser<
'i,
I: InputT + ?Sized,
L: Lexer<'i, Context<'i, I>, State, TokenKind, Input = I>,
B,
>(
LRParser<
'i,
Context<'i, I>,
State,
ProdKind,
TokenKind,
NonTermKind,
RustemoParserDefinition,
L,
B,
I,
>,
);
#[allow(dead_code)]
impl<
'i,
> RustemoParser<
'i,
Input,
StringLexer<Context<'i, Input>, State, TokenKind, TokenRecognizer, TERMINAL_COUNT>,
DefaultBuilder,
> {
pub fn new() -> Self {
Self(
LRParser::new(
&PARSER_DEFINITION,
State::default(),
false,
true,
StringLexer::new(false, &RECOGNIZERS),
DefaultBuilder::new(),
),
)
}
}
#[allow(dead_code)]
impl<'i, I, L, B> Parser<'i, I, Context<'i, I>, State, TokenKind>
for RustemoParser<'i, I, L, B>
where
I: InputT + ?Sized + Debug,
L: Lexer<'i, Context<'i, I>, State, TokenKind, Input = I>,
B: LRBuilder<'i, I, Context<'i, I>, State, ProdKind, TokenKind>,
{
type Output = B::Output;
fn parse(&self, input: &'i I) -> Result<Self::Output> {
self.0.parse(input)
}
fn parse_with_context(
&self,
context: &mut Context<'i, I>,
input: &'i I,
) -> Result<Self::Output> {
self.0.parse_with_context(context, input)
}
fn parse_file<'a, F: AsRef<std::path::Path>>(
&'a mut self,
file: F,
) -> Result<Self::Output>
where
'a: 'i,
{
self.0.parse_file(file)
}
}
#[allow(dead_code)]
#[derive(Debug)]
pub enum Recognizer {
Stop,
StrMatch(&'static str),
RegexMatch(Lazy<Regex>),
}
#[allow(dead_code)]
#[derive(Debug)]
pub struct TokenRecognizer(TokenKind, Recognizer);
impl<'i> TokenRecognizerT<'i> for TokenRecognizer {
fn recognize(&self, input: &'i str) -> Option<&'i str> {
match &self {
#[allow(unused_variables)]
TokenRecognizer(token_kind, Recognizer::StrMatch(s)) => {
logn!("{} {:?} -- ", " Recognizing".green(), token_kind);
if input.starts_with(s) {
log!("{}", "recognized".bold().green());
Some(s)
} else {
log!("{}", "not recognized".red());
None
}
}
#[allow(unused_variables)]
TokenRecognizer(token_kind, Recognizer::RegexMatch(r)) => {
logn!("{} {:?} -- ", " Recognizing".green(), token_kind);
let match_str = r.find(input);
match match_str {
Some(x) => {
let x_str = x.as_str();
log!("{} '{}'", "recognized".bold().green(), x_str);
Some(x_str)
}
_ => {
log!("{}", "not recognized".red());
None
}
}
}
TokenRecognizer(_, Recognizer::Stop) => {
logn!("{} STOP -- ", " Recognizing".green());
if input.is_empty() {
log!("{}", "recognized".bold().green());
Some("")
} else {
log!("{}", "not recognized".red());
None
}
}
}
}
}
pub(crate) static RECOGNIZERS: [TokenRecognizer; TERMINAL_COUNT] = [
TokenRecognizer(TokenKind::STOP, Recognizer::Stop),
TokenRecognizer(TokenKind::Terminals, Recognizer::StrMatch("terminals")),
TokenRecognizer(TokenKind::Import, Recognizer::StrMatch("import")),
TokenRecognizer(TokenKind::As, Recognizer::StrMatch("as")),
TokenRecognizer(TokenKind::Colon, Recognizer::StrMatch(":")),
TokenRecognizer(TokenKind::SemiColon, Recognizer::StrMatch(";")),
TokenRecognizer(TokenKind::Comma, Recognizer::StrMatch(",")),
TokenRecognizer(TokenKind::OBrace, Recognizer::StrMatch("{")),
TokenRecognizer(TokenKind::CBrace, Recognizer::StrMatch("}")),
TokenRecognizer(TokenKind::OBracket, Recognizer::StrMatch("(")),
TokenRecognizer(TokenKind::CBracket, Recognizer::StrMatch(")")),
TokenRecognizer(TokenKind::OSBracket, Recognizer::StrMatch("[")),
TokenRecognizer(TokenKind::CSBracket, Recognizer::StrMatch("]")),
TokenRecognizer(TokenKind::Choice, Recognizer::StrMatch("|")),
TokenRecognizer(TokenKind::ZeroOrMore, Recognizer::StrMatch("*")),
TokenRecognizer(TokenKind::ZeroOrMoreGreedy, Recognizer::StrMatch("*!")),
TokenRecognizer(TokenKind::OneOrMore, Recognizer::StrMatch("+")),
TokenRecognizer(TokenKind::OneOrMoreGreedy, Recognizer::StrMatch("+!")),
TokenRecognizer(TokenKind::Optional, Recognizer::StrMatch("?")),
TokenRecognizer(TokenKind::OptionalGreedy, Recognizer::StrMatch("?!")),
TokenRecognizer(TokenKind::Equals, Recognizer::StrMatch("=")),
TokenRecognizer(TokenKind::QEquals, Recognizer::StrMatch("?=")),
TokenRecognizer(TokenKind::Left, Recognizer::StrMatch("left")),
TokenRecognizer(TokenKind::Right, Recognizer::StrMatch("right")),
TokenRecognizer(TokenKind::Reduce, Recognizer::StrMatch("reduce")),
TokenRecognizer(TokenKind::Shift, Recognizer::StrMatch("shift")),
TokenRecognizer(TokenKind::Dynamic, Recognizer::StrMatch("dynamic")),
TokenRecognizer(TokenKind::NOPS, Recognizer::StrMatch("nops")),
TokenRecognizer(TokenKind::NOPSE, Recognizer::StrMatch("nopse")),
TokenRecognizer(TokenKind::Prefer, Recognizer::StrMatch("prefer")),
TokenRecognizer(TokenKind::Finish, Recognizer::StrMatch("finish")),
TokenRecognizer(TokenKind::NoFinish, Recognizer::StrMatch("nofinish")),
TokenRecognizer(TokenKind::OComment, Recognizer::StrMatch("/*")),
TokenRecognizer(TokenKind::CComment, Recognizer::StrMatch("*/")),
TokenRecognizer(
TokenKind::Name,
Recognizer::RegexMatch(
Lazy::new(|| {
Regex::new(concat!("^", "[a-zA-Z_][a-zA-Z0-9_\\.]*")).unwrap()
}),
),
),
TokenRecognizer(
TokenKind::RegexTerm,
Recognizer::RegexMatch(
Lazy::new(|| { Regex::new(concat!("^", "/(\\\\.|[^/\\\\])*/")).unwrap() }),
),
),
TokenRecognizer(
TokenKind::IntConst,
Recognizer::RegexMatch(
Lazy::new(|| { Regex::new(concat!("^", "\\d+")).unwrap() }),
),
),
TokenRecognizer(
TokenKind::FloatConst,
Recognizer::RegexMatch(
Lazy::new(|| {
Regex::new(concat!("^", "[+-]?[0-9]+[.][0-9]*([e][+-]?[0-9]+)?"))
.unwrap()
}),
),
),
TokenRecognizer(
TokenKind::BoolConst,
Recognizer::RegexMatch(
Lazy::new(|| { Regex::new(concat!("^", "true|false")).unwrap() }),
),
),
TokenRecognizer(
TokenKind::StrConst,
Recognizer::RegexMatch(
Lazy::new(|| {
Regex::new(
concat!(
"^",
"(?s)(^'[^'\\\\]*(?:\\\\.[^'\\\\]*)*')|(^\"[^\"\\\\]*(?:\\\\.[^\"\\\\]*)*\")"
),
)
.unwrap()
}),
),
),
TokenRecognizer(
TokenKind::Annotation,
Recognizer::RegexMatch(
Lazy::new(|| { Regex::new(concat!("^", "@[a-zA-Z0-9_]+")).unwrap() }),
),
),
TokenRecognizer(
TokenKind::WS,
Recognizer::RegexMatch(
Lazy::new(|| { Regex::new(concat!("^", "\\s+")).unwrap() }),
),
),
TokenRecognizer(
TokenKind::CommentLine,
Recognizer::RegexMatch(
Lazy::new(|| { Regex::new(concat!("^", "//.*")).unwrap() }),
),
),
TokenRecognizer(
TokenKind::NotComment,
Recognizer::RegexMatch(
Lazy::new(|| {
Regex::new(concat!("^", "((\\*[^/])|[^\\s*/]|/[^\\*])+")).unwrap()
}),
),
),
];
pub struct DefaultBuilder {
res_stack: Vec<Symbol>,
}
impl DefaultBuilder {
#[allow(dead_code)]
pub fn new() -> Self {
Self { res_stack: vec![] }
}
}
impl Builder for DefaultBuilder {
type Output = rustemo_actions::File;
fn get_result(&mut self) -> Self::Output {
match self.res_stack.pop().unwrap() {
Symbol::NonTerminal(NonTerminal::File(r)) => r,
_ => panic!("Invalid result on the parse stack!"),
}
}
}
impl<'i> LRBuilder<'i, Input, Context<'i, Input>, State, ProdKind, TokenKind>
for DefaultBuilder {
#![allow(unused_variables)]
fn shift_action(
&mut self,
context: &Context<'i, Input>,
token: Token<'i, Input, TokenKind>,
) {
let val = match token.kind {
TokenKind::STOP => panic!("Cannot shift STOP token!"),
TokenKind::Terminals => Terminal::Terminals,
TokenKind::Import => Terminal::Import,
TokenKind::As => Terminal::As,
TokenKind::Colon => Terminal::Colon,
TokenKind::SemiColon => Terminal::SemiColon,
TokenKind::Comma => Terminal::Comma,
TokenKind::OBrace => Terminal::OBrace,
TokenKind::CBrace => Terminal::CBrace,
TokenKind::OBracket => Terminal::OBracket,
TokenKind::CBracket => Terminal::CBracket,
TokenKind::OSBracket => Terminal::OSBracket,
TokenKind::CSBracket => Terminal::CSBracket,
TokenKind::Choice => Terminal::Choice,
TokenKind::ZeroOrMore => Terminal::ZeroOrMore,
TokenKind::ZeroOrMoreGreedy => Terminal::ZeroOrMoreGreedy,
TokenKind::OneOrMore => Terminal::OneOrMore,
TokenKind::OneOrMoreGreedy => Terminal::OneOrMoreGreedy,
TokenKind::Optional => Terminal::Optional,
TokenKind::OptionalGreedy => Terminal::OptionalGreedy,
TokenKind::Equals => Terminal::Equals,
TokenKind::QEquals => Terminal::QEquals,
TokenKind::Left => Terminal::Left,
TokenKind::Right => Terminal::Right,
TokenKind::Reduce => Terminal::Reduce,
TokenKind::Shift => Terminal::Shift,
TokenKind::Dynamic => Terminal::Dynamic,
TokenKind::NOPS => Terminal::NOPS,
TokenKind::NOPSE => Terminal::NOPSE,
TokenKind::Prefer => Terminal::Prefer,
TokenKind::Finish => Terminal::Finish,
TokenKind::NoFinish => Terminal::NoFinish,
TokenKind::Name => Terminal::Name(rustemo_actions::name(context, token)),
TokenKind::RegexTerm => {
Terminal::RegexTerm(rustemo_actions::regex_term(context, token))
}
TokenKind::IntConst => {
Terminal::IntConst(rustemo_actions::int_const(context, token))
}
TokenKind::FloatConst => {
Terminal::FloatConst(rustemo_actions::float_const(context, token))
}
TokenKind::BoolConst => {
Terminal::BoolConst(rustemo_actions::bool_const(context, token))
}
TokenKind::StrConst => {
Terminal::StrConst(rustemo_actions::str_const(context, token))
}
TokenKind::Annotation => {
Terminal::Annotation(rustemo_actions::annotation(context, token))
}
_ => panic!("Shift of unreachable terminal!"),
};
self.res_stack.push(Symbol::Terminal(val));
}
fn reduce_action(
&mut self,
context: &Context<'i, Input>,
prod: ProdKind,
prod_len: usize,
) {
let prod = match prod {
ProdKind::FileP1 => {
let mut i = self
.res_stack
.split_off(self.res_stack.len() - 1usize)
.into_iter();
match i.next().unwrap() {
Symbol::NonTerminal(NonTerminal::GrammarRule1(p0)) => {
NonTerminal::File(
rustemo_actions::file_grammar_rule1(context, p0),
)
}
_ => panic!("Invalid symbol parse stack data."),
}
}
ProdKind::GrammarRule1P1 => {
let mut i = self
.res_stack
.split_off(self.res_stack.len() - 2usize)
.into_iter();
match (i.next().unwrap(), i.next().unwrap()) {
(
Symbol::NonTerminal(NonTerminal::GrammarRule1(p0)),
Symbol::NonTerminal(NonTerminal::GrammarRule(p1)),
) => {
NonTerminal::GrammarRule1(
rustemo_actions::grammar_rule1_c1(context, p0, p1),
)
}
_ => panic!("Invalid symbol parse stack data."),
}
}
ProdKind::GrammarRule1P2 => {
let mut i = self
.res_stack
.split_off(self.res_stack.len() - 1usize)
.into_iter();
match i.next().unwrap() {
Symbol::NonTerminal(NonTerminal::GrammarRule(p0)) => {
NonTerminal::GrammarRule1(
rustemo_actions::grammar_rule1_grammar_rule(context, p0),
)
}
_ => panic!("Invalid symbol parse stack data."),
}
}
ProdKind::FileP2 => {
let mut i = self
.res_stack
.split_off(self.res_stack.len() - 2usize)
.into_iter();
match (i.next().unwrap(), i.next().unwrap()) {
(
Symbol::NonTerminal(NonTerminal::ImportStm1(p0)),
Symbol::NonTerminal(NonTerminal::GrammarRule1(p1)),
) => NonTerminal::File(rustemo_actions::file_c2(context, p0, p1)),
_ => panic!("Invalid symbol parse stack data."),
}
}
ProdKind::ImportStm1P1 => {
let mut i = self
.res_stack
.split_off(self.res_stack.len() - 2usize)
.into_iter();
match (i.next().unwrap(), i.next().unwrap()) {
(
Symbol::NonTerminal(NonTerminal::ImportStm1(p0)),
Symbol::NonTerminal(NonTerminal::ImportStm(p1)),
) => {
NonTerminal::ImportStm1(
rustemo_actions::import_stm1_c1(context, p0, p1),
)
}
_ => panic!("Invalid symbol parse stack data."),
}
}
ProdKind::ImportStm1P2 => {
let mut i = self
.res_stack
.split_off(self.res_stack.len() - 1usize)
.into_iter();
match i.next().unwrap() {
Symbol::NonTerminal(NonTerminal::ImportStm(p0)) => {
NonTerminal::ImportStm1(
rustemo_actions::import_stm1_import_stm(context, p0),
)
}
_ => panic!("Invalid symbol parse stack data."),
}
}
ProdKind::FileP3 => {
let mut i = self
.res_stack
.split_off(self.res_stack.len() - 3usize)
.into_iter();
match (i.next().unwrap(), i.next().unwrap(), i.next().unwrap()) {
(
Symbol::NonTerminal(NonTerminal::GrammarRule1(p0)),
_,
Symbol::NonTerminal(NonTerminal::TerminalRule1(p1)),
) => NonTerminal::File(rustemo_actions::file_c3(context, p0, p1)),
_ => panic!("Invalid symbol parse stack data."),
}
}
ProdKind::TerminalRule1P1 => {
let mut i = self
.res_stack
.split_off(self.res_stack.len() - 2usize)
.into_iter();
match (i.next().unwrap(), i.next().unwrap()) {
(
Symbol::NonTerminal(NonTerminal::TerminalRule1(p0)),
Symbol::NonTerminal(NonTerminal::TerminalRule(p1)),
) => {
NonTerminal::TerminalRule1(
rustemo_actions::terminal_rule1_c1(context, p0, p1),
)
}
_ => panic!("Invalid symbol parse stack data."),
}
}
ProdKind::TerminalRule1P2 => {
let mut i = self
.res_stack
.split_off(self.res_stack.len() - 1usize)
.into_iter();
match i.next().unwrap() {
Symbol::NonTerminal(NonTerminal::TerminalRule(p0)) => {
NonTerminal::TerminalRule1(
rustemo_actions::terminal_rule1_terminal_rule(context, p0),
)
}
_ => panic!("Invalid symbol parse stack data."),
}
}
ProdKind::FileP4 => {
let mut i = self
.res_stack
.split_off(self.res_stack.len() - 4usize)
.into_iter();
match (
i.next().unwrap(),
i.next().unwrap(),
i.next().unwrap(),
i.next().unwrap(),
) {
(
Symbol::NonTerminal(NonTerminal::ImportStm1(p0)),
Symbol::NonTerminal(NonTerminal::GrammarRule1(p1)),
_,
Symbol::NonTerminal(NonTerminal::TerminalRule1(p2)),
) => NonTerminal::File(rustemo_actions::file_c4(context, p0, p1, p2)),
_ => panic!("Invalid symbol parse stack data."),
}
}
ProdKind::FileP5 => {
let mut i = self
.res_stack
.split_off(self.res_stack.len() - 2usize)
.into_iter();
match (i.next().unwrap(), i.next().unwrap()) {
(_, Symbol::NonTerminal(NonTerminal::TerminalRule1(p0))) => {
NonTerminal::File(
rustemo_actions::file_terminal_rule1(context, p0),
)
}
_ => panic!("Invalid symbol parse stack data."),
}
}
ProdKind::ImportStmP1 => {
let mut i = self
.res_stack
.split_off(self.res_stack.len() - 2usize)
.into_iter();
match (i.next().unwrap(), i.next().unwrap()) {
(_, Symbol::Terminal(Terminal::StrConst(p0))) => {
NonTerminal::ImportStm(
rustemo_actions::import_stm_c1(context, p0),
)
}
_ => panic!("Invalid symbol parse stack data."),
}
}
ProdKind::ImportStmP2 => {
let mut i = self
.res_stack
.split_off(self.res_stack.len() - 4usize)
.into_iter();
match (
i.next().unwrap(),
i.next().unwrap(),
i.next().unwrap(),
i.next().unwrap(),
) {
(
_,
Symbol::Terminal(Terminal::StrConst(p0)),
_,
Symbol::Terminal(Terminal::Name(p1)),
) => {
NonTerminal::ImportStm(
rustemo_actions::import_stm_c2(context, p0, p1),
)
}
_ => panic!("Invalid symbol parse stack data."),
}
}
ProdKind::GrammarRuleP1 => {
let mut i = self
.res_stack
.split_off(self.res_stack.len() - 5usize)
.into_iter();
match (
i.next().unwrap(),
i.next().unwrap(),
i.next().unwrap(),
i.next().unwrap(),
i.next().unwrap(),
) {
(
Symbol::NonTerminal(NonTerminal::AnnotationOpt(p0)),
Symbol::Terminal(Terminal::Name(p1)),
_,
Symbol::NonTerminal(NonTerminal::GrammarRuleRHS(p2)),
_,
) => {
NonTerminal::GrammarRule(
rustemo_actions::grammar_rule_c1(context, p0, p1, p2),
)
}
_ => panic!("Invalid symbol parse stack data."),
}
}
ProdKind::AnnotationOptP1 => {
let mut i = self
.res_stack
.split_off(self.res_stack.len() - 1usize)
.into_iter();
match i.next().unwrap() {
Symbol::Terminal(Terminal::Annotation(p0)) => {
NonTerminal::AnnotationOpt(
rustemo_actions::annotation_opt_annotation(context, p0),
)
}
_ => panic!("Invalid symbol parse stack data."),
}
}
ProdKind::AnnotationOptP2 => {
NonTerminal::AnnotationOpt(
rustemo_actions::annotation_opt_empty(context),
)
}
ProdKind::GrammarRuleP2 => {
let mut i = self
.res_stack
.split_off(self.res_stack.len() - 8usize)
.into_iter();
match (
i.next().unwrap(),
i.next().unwrap(),
i.next().unwrap(),
i.next().unwrap(),
i.next().unwrap(),
i.next().unwrap(),
i.next().unwrap(),
i.next().unwrap(),
) {
(
Symbol::NonTerminal(NonTerminal::AnnotationOpt(p0)),
Symbol::Terminal(Terminal::Name(p1)),
_,
Symbol::NonTerminal(NonTerminal::ProdMetaDatas(p2)),
_,
_,
Symbol::NonTerminal(NonTerminal::GrammarRuleRHS(p3)),
_,
) => {
NonTerminal::GrammarRule(
rustemo_actions::grammar_rule_c2(context, p0, p1, p2, p3),
)
}
_ => panic!("Invalid symbol parse stack data."),
}
}
ProdKind::GrammarRuleRHSP1 => {
let mut i = self
.res_stack
.split_off(self.res_stack.len() - 3usize)
.into_iter();
match (i.next().unwrap(), i.next().unwrap(), i.next().unwrap()) {
(
Symbol::NonTerminal(NonTerminal::GrammarRuleRHS(p0)),
_,
Symbol::NonTerminal(NonTerminal::Production(p1)),
) => {
NonTerminal::GrammarRuleRHS(
rustemo_actions::grammar_rule_rhs_c1(context, p0, p1),
)
}
_ => panic!("Invalid symbol parse stack data."),
}
}
ProdKind::GrammarRuleRHSP2 => {
let mut i = self
.res_stack
.split_off(self.res_stack.len() - 1usize)
.into_iter();
match i.next().unwrap() {
Symbol::NonTerminal(NonTerminal::Production(p0)) => {
NonTerminal::GrammarRuleRHS(
rustemo_actions::grammar_rule_rhs_production(context, p0),
)
}
_ => panic!("Invalid symbol parse stack data."),
}
}
ProdKind::ProductionP1 => {
let mut i = self
.res_stack
.split_off(self.res_stack.len() - 1usize)
.into_iter();
match i.next().unwrap() {
Symbol::NonTerminal(NonTerminal::Assignment1(p0)) => {
NonTerminal::Production(
rustemo_actions::production_assignment1(context, p0),
)
}
_ => panic!("Invalid symbol parse stack data."),
}
}
ProdKind::Assignment1P1 => {
let mut i = self
.res_stack
.split_off(self.res_stack.len() - 2usize)
.into_iter();
match (i.next().unwrap(), i.next().unwrap()) {
(
Symbol::NonTerminal(NonTerminal::Assignment1(p0)),
Symbol::NonTerminal(NonTerminal::Assignment(p1)),
) => {
NonTerminal::Assignment1(
rustemo_actions::assignment1_c1(context, p0, p1),
)
}
_ => panic!("Invalid symbol parse stack data."),
}
}
ProdKind::Assignment1P2 => {
let mut i = self
.res_stack
.split_off(self.res_stack.len() - 1usize)
.into_iter();
match i.next().unwrap() {
Symbol::NonTerminal(NonTerminal::Assignment(p0)) => {
NonTerminal::Assignment1(
rustemo_actions::assignment1_assignment(context, p0),
)
}
_ => panic!("Invalid symbol parse stack data."),
}
}
ProdKind::ProductionP2 => {
let mut i = self
.res_stack
.split_off(self.res_stack.len() - 4usize)
.into_iter();
match (
i.next().unwrap(),
i.next().unwrap(),
i.next().unwrap(),
i.next().unwrap(),
) {
(
Symbol::NonTerminal(NonTerminal::Assignment1(p0)),
_,
Symbol::NonTerminal(NonTerminal::ProdMetaDatas(p1)),
_,
) => {
NonTerminal::Production(
rustemo_actions::production_c2(context, p0, p1),
)
}
_ => panic!("Invalid symbol parse stack data."),
}
}
ProdKind::TerminalRuleP1 => {
let mut i = self
.res_stack
.split_off(self.res_stack.len() - 5usize)
.into_iter();
match (
i.next().unwrap(),
i.next().unwrap(),
i.next().unwrap(),
i.next().unwrap(),
i.next().unwrap(),
) {
(
Symbol::NonTerminal(NonTerminal::AnnotationOpt(p0)),
Symbol::Terminal(Terminal::Name(p1)),
_,
Symbol::NonTerminal(NonTerminal::Recognizer(p2)),
_,
) => {
NonTerminal::TerminalRule(
rustemo_actions::terminal_rule_c1(context, p0, p1, p2),
)
}
_ => panic!("Invalid symbol parse stack data."),
}
}
ProdKind::TerminalRuleP2 => {
let mut i = self
.res_stack
.split_off(self.res_stack.len() - 4usize)
.into_iter();
match (
i.next().unwrap(),
i.next().unwrap(),
i.next().unwrap(),
i.next().unwrap(),
) {
(
Symbol::NonTerminal(NonTerminal::AnnotationOpt(p0)),
Symbol::Terminal(Terminal::Name(p1)),
_,
_,
) => {
NonTerminal::TerminalRule(
rustemo_actions::terminal_rule_c2(context, p0, p1),
)
}
_ => panic!("Invalid symbol parse stack data."),
}
}
ProdKind::TerminalRuleP3 => {
let mut i = self
.res_stack
.split_off(self.res_stack.len() - 8usize)
.into_iter();
match (
i.next().unwrap(),
i.next().unwrap(),
i.next().unwrap(),
i.next().unwrap(),
i.next().unwrap(),
i.next().unwrap(),
i.next().unwrap(),
i.next().unwrap(),
) {
(
Symbol::NonTerminal(NonTerminal::AnnotationOpt(p0)),
Symbol::Terminal(Terminal::Name(p1)),
_,
Symbol::NonTerminal(NonTerminal::Recognizer(p2)),
_,
Symbol::NonTerminal(NonTerminal::TermMetaDatas(p3)),
_,
_,
) => {
NonTerminal::TerminalRule(
rustemo_actions::terminal_rule_c3(context, p0, p1, p2, p3),
)
}
_ => panic!("Invalid symbol parse stack data."),
}
}
ProdKind::TerminalRuleP4 => {
let mut i = self
.res_stack
.split_off(self.res_stack.len() - 7usize)
.into_iter();
match (
i.next().unwrap(),
i.next().unwrap(),
i.next().unwrap(),
i.next().unwrap(),
i.next().unwrap(),
i.next().unwrap(),
i.next().unwrap(),
) {
(
Symbol::NonTerminal(NonTerminal::AnnotationOpt(p0)),
Symbol::Terminal(Terminal::Name(p1)),
_,
_,
Symbol::NonTerminal(NonTerminal::TermMetaDatas(p2)),
_,
_,
) => {
NonTerminal::TerminalRule(
rustemo_actions::terminal_rule_c4(context, p0, p1, p2),
)
}
_ => panic!("Invalid symbol parse stack data."),
}
}
ProdKind::ProdMetaDataLeft => {
let _ = self
.res_stack
.split_off(self.res_stack.len() - 1usize)
.into_iter();
NonTerminal::ProdMetaData(rustemo_actions::prod_meta_data_left(context))
}
ProdKind::ProdMetaDataReduce => {
let _ = self
.res_stack
.split_off(self.res_stack.len() - 1usize)
.into_iter();
NonTerminal::ProdMetaData(
rustemo_actions::prod_meta_data_reduce(context),
)
}
ProdKind::ProdMetaDataRight => {
let _ = self
.res_stack
.split_off(self.res_stack.len() - 1usize)
.into_iter();
NonTerminal::ProdMetaData(rustemo_actions::prod_meta_data_right(context))
}
ProdKind::ProdMetaDataShift => {
let _ = self
.res_stack
.split_off(self.res_stack.len() - 1usize)
.into_iter();
NonTerminal::ProdMetaData(rustemo_actions::prod_meta_data_shift(context))
}
ProdKind::ProdMetaDataDynamic => {
let _ = self
.res_stack
.split_off(self.res_stack.len() - 1usize)
.into_iter();
NonTerminal::ProdMetaData(
rustemo_actions::prod_meta_data_dynamic(context),
)
}
ProdKind::ProdMetaDataNOPS => {
let _ = self
.res_stack
.split_off(self.res_stack.len() - 1usize)
.into_iter();
NonTerminal::ProdMetaData(rustemo_actions::prod_meta_data_nops(context))
}
ProdKind::ProdMetaDataNOPSE => {
let _ = self
.res_stack
.split_off(self.res_stack.len() - 1usize)
.into_iter();
NonTerminal::ProdMetaData(rustemo_actions::prod_meta_data_nopse(context))
}
ProdKind::ProdMetaDataPriority => {
let mut i = self
.res_stack
.split_off(self.res_stack.len() - 1usize)
.into_iter();
match i.next().unwrap() {
Symbol::Terminal(Terminal::IntConst(p0)) => {
NonTerminal::ProdMetaData(
rustemo_actions::prod_meta_data_priority(context, p0),
)
}
_ => panic!("Invalid symbol parse stack data."),
}
}
ProdKind::ProdMetaDataP9 => {
let mut i = self
.res_stack
.split_off(self.res_stack.len() - 1usize)
.into_iter();
match i.next().unwrap() {
Symbol::NonTerminal(NonTerminal::UserMetaData(p0)) => {
NonTerminal::ProdMetaData(
rustemo_actions::prod_meta_data_user_meta_data(context, p0),
)
}
_ => panic!("Invalid symbol parse stack data."),
}
}
ProdKind::ProdMetaDataP10 => {
let mut i = self
.res_stack
.split_off(self.res_stack.len() - 1usize)
.into_iter();
match i.next().unwrap() {
Symbol::NonTerminal(NonTerminal::ProdKind(p0)) => {
NonTerminal::ProdMetaData(
rustemo_actions::prod_meta_data_prod_kind(context, p0),
)
}
_ => panic!("Invalid symbol parse stack data."),
}
}
ProdKind::ProdMetaDatasP1 => {
let mut i = self
.res_stack
.split_off(self.res_stack.len() - 3usize)
.into_iter();
match (i.next().unwrap(), i.next().unwrap(), i.next().unwrap()) {
(
Symbol::NonTerminal(NonTerminal::ProdMetaDatas(p0)),
_,
Symbol::NonTerminal(NonTerminal::ProdMetaData(p1)),
) => {
NonTerminal::ProdMetaDatas(
rustemo_actions::prod_meta_datas_c1(context, p0, p1),
)
}
_ => panic!("Invalid symbol parse stack data."),
}
}
ProdKind::ProdMetaDatasP2 => {
let mut i = self
.res_stack
.split_off(self.res_stack.len() - 1usize)
.into_iter();
match i.next().unwrap() {
Symbol::NonTerminal(NonTerminal::ProdMetaData(p0)) => {
NonTerminal::ProdMetaDatas(
rustemo_actions::prod_meta_datas_c2(context, p0),
)
}
_ => panic!("Invalid symbol parse stack data."),
}
}
ProdKind::TermMetaDataPrefer => {
let _ = self
.res_stack
.split_off(self.res_stack.len() - 1usize)
.into_iter();
NonTerminal::TermMetaData(
rustemo_actions::term_meta_data_prefer(context),
)
}
ProdKind::TermMetaDataFinish => {
let _ = self
.res_stack
.split_off(self.res_stack.len() - 1usize)
.into_iter();
NonTerminal::TermMetaData(
rustemo_actions::term_meta_data_finish(context),
)
}
ProdKind::TermMetaDataNoFinish => {
let _ = self
.res_stack
.split_off(self.res_stack.len() - 1usize)
.into_iter();
NonTerminal::TermMetaData(
rustemo_actions::term_meta_data_no_finish(context),
)
}
ProdKind::TermMetaDataLeft => {
let _ = self
.res_stack
.split_off(self.res_stack.len() - 1usize)
.into_iter();
NonTerminal::TermMetaData(rustemo_actions::term_meta_data_left(context))
}
ProdKind::TermMetaDataReduce => {
let _ = self
.res_stack
.split_off(self.res_stack.len() - 1usize)
.into_iter();
NonTerminal::TermMetaData(
rustemo_actions::term_meta_data_reduce(context),
)
}
ProdKind::TermMetaDataRight => {
let _ = self
.res_stack
.split_off(self.res_stack.len() - 1usize)
.into_iter();
NonTerminal::TermMetaData(rustemo_actions::term_meta_data_right(context))
}
ProdKind::TermMetaDataShift => {
let _ = self
.res_stack
.split_off(self.res_stack.len() - 1usize)
.into_iter();
NonTerminal::TermMetaData(rustemo_actions::term_meta_data_shift(context))
}
ProdKind::TermMetaDataDynamic => {
let _ = self
.res_stack
.split_off(self.res_stack.len() - 1usize)
.into_iter();
NonTerminal::TermMetaData(
rustemo_actions::term_meta_data_dynamic(context),
)
}
ProdKind::TermMetaDataPriority => {
let mut i = self
.res_stack
.split_off(self.res_stack.len() - 1usize)
.into_iter();
match i.next().unwrap() {
Symbol::Terminal(Terminal::IntConst(p0)) => {
NonTerminal::TermMetaData(
rustemo_actions::term_meta_data_priority(context, p0),
)
}
_ => panic!("Invalid symbol parse stack data."),
}
}
ProdKind::TermMetaDataP10 => {
let mut i = self
.res_stack
.split_off(self.res_stack.len() - 1usize)
.into_iter();
match i.next().unwrap() {
Symbol::NonTerminal(NonTerminal::UserMetaData(p0)) => {
NonTerminal::TermMetaData(
rustemo_actions::term_meta_data_user_meta_data(context, p0),
)
}
_ => panic!("Invalid symbol parse stack data."),
}
}
ProdKind::TermMetaDatasP1 => {
let mut i = self
.res_stack
.split_off(self.res_stack.len() - 3usize)
.into_iter();
match (i.next().unwrap(), i.next().unwrap(), i.next().unwrap()) {
(
Symbol::NonTerminal(NonTerminal::TermMetaDatas(p0)),
_,
Symbol::NonTerminal(NonTerminal::TermMetaData(p1)),
) => {
NonTerminal::TermMetaDatas(
rustemo_actions::term_meta_datas_c1(context, p0, p1),
)
}
_ => panic!("Invalid symbol parse stack data."),
}
}
ProdKind::TermMetaDatasP2 => {
let mut i = self
.res_stack
.split_off(self.res_stack.len() - 1usize)
.into_iter();
match i.next().unwrap() {
Symbol::NonTerminal(NonTerminal::TermMetaData(p0)) => {
NonTerminal::TermMetaDatas(
rustemo_actions::term_meta_datas_c2(context, p0),
)
}
_ => panic!("Invalid symbol parse stack data."),
}
}
ProdKind::UserMetaDataP1 => {
let mut i = self
.res_stack
.split_off(self.res_stack.len() - 3usize)
.into_iter();
match (i.next().unwrap(), i.next().unwrap(), i.next().unwrap()) {
(
Symbol::Terminal(Terminal::Name(p0)),
_,
Symbol::NonTerminal(NonTerminal::ConstVal(p1)),
) => {
NonTerminal::UserMetaData(
rustemo_actions::user_meta_data_c1(context, p0, p1),
)
}
_ => panic!("Invalid symbol parse stack data."),
}
}
ProdKind::ProdKindP1 => {
let mut i = self
.res_stack
.split_off(self.res_stack.len() - 1usize)
.into_iter();
match i.next().unwrap() {
Symbol::Terminal(Terminal::Name(p0)) => {
NonTerminal::ProdKind(
rustemo_actions::prod_kind_name(context, p0),
)
}
_ => panic!("Invalid symbol parse stack data."),
}
}
ProdKind::ConstValP1 => {
let mut i = self
.res_stack
.split_off(self.res_stack.len() - 1usize)
.into_iter();
match i.next().unwrap() {
Symbol::Terminal(Terminal::IntConst(p0)) => {
NonTerminal::ConstVal(
rustemo_actions::const_val_int_const(context, p0),
)
}
_ => panic!("Invalid symbol parse stack data."),
}
}
ProdKind::ConstValP2 => {
let mut i = self
.res_stack
.split_off(self.res_stack.len() - 1usize)
.into_iter();
match i.next().unwrap() {
Symbol::Terminal(Terminal::FloatConst(p0)) => {
NonTerminal::ConstVal(
rustemo_actions::const_val_float_const(context, p0),
)
}
_ => panic!("Invalid symbol parse stack data."),
}
}
ProdKind::ConstValP3 => {
let mut i = self
.res_stack
.split_off(self.res_stack.len() - 1usize)
.into_iter();
match i.next().unwrap() {
Symbol::Terminal(Terminal::BoolConst(p0)) => {
NonTerminal::ConstVal(
rustemo_actions::const_val_bool_const(context, p0),
)
}
_ => panic!("Invalid symbol parse stack data."),
}
}
ProdKind::ConstValP4 => {
let mut i = self
.res_stack
.split_off(self.res_stack.len() - 1usize)
.into_iter();
match i.next().unwrap() {
Symbol::Terminal(Terminal::StrConst(p0)) => {
NonTerminal::ConstVal(
rustemo_actions::const_val_str_const(context, p0),
)
}
_ => panic!("Invalid symbol parse stack data."),
}
}
ProdKind::AssignmentP1 => {
let mut i = self
.res_stack
.split_off(self.res_stack.len() - 1usize)
.into_iter();
match i.next().unwrap() {
Symbol::NonTerminal(NonTerminal::PlainAssignment(p0)) => {
NonTerminal::Assignment(
rustemo_actions::assignment_plain_assignment(context, p0),
)
}
_ => panic!("Invalid symbol parse stack data."),
}
}
ProdKind::AssignmentP2 => {
let mut i = self
.res_stack
.split_off(self.res_stack.len() - 1usize)
.into_iter();
match i.next().unwrap() {
Symbol::NonTerminal(NonTerminal::BoolAssignment(p0)) => {
NonTerminal::Assignment(
rustemo_actions::assignment_bool_assignment(context, p0),
)
}
_ => panic!("Invalid symbol parse stack data."),
}
}
ProdKind::AssignmentP3 => {
let mut i = self
.res_stack
.split_off(self.res_stack.len() - 1usize)
.into_iter();
match i.next().unwrap() {
Symbol::NonTerminal(NonTerminal::GrammarSymbolRef(p0)) => {
NonTerminal::Assignment(
rustemo_actions::assignment_grammar_symbol_ref(context, p0),
)
}
_ => panic!("Invalid symbol parse stack data."),
}
}
ProdKind::PlainAssignmentP1 => {
let mut i = self
.res_stack
.split_off(self.res_stack.len() - 3usize)
.into_iter();
match (i.next().unwrap(), i.next().unwrap(), i.next().unwrap()) {
(
Symbol::Terminal(Terminal::Name(p0)),
_,
Symbol::NonTerminal(NonTerminal::GrammarSymbolRef(p1)),
) => {
NonTerminal::PlainAssignment(
rustemo_actions::plain_assignment_c1(context, p0, p1),
)
}
_ => panic!("Invalid symbol parse stack data."),
}
}
ProdKind::BoolAssignmentP1 => {
let mut i = self
.res_stack
.split_off(self.res_stack.len() - 3usize)
.into_iter();
match (i.next().unwrap(), i.next().unwrap(), i.next().unwrap()) {
(
Symbol::Terminal(Terminal::Name(p0)),
_,
Symbol::NonTerminal(NonTerminal::GrammarSymbolRef(p1)),
) => {
NonTerminal::BoolAssignment(
rustemo_actions::bool_assignment_c1(context, p0, p1),
)
}
_ => panic!("Invalid symbol parse stack data."),
}
}
ProdKind::ProductionGroupP1 => {
let mut i = self
.res_stack
.split_off(self.res_stack.len() - 3usize)
.into_iter();
match (i.next().unwrap(), i.next().unwrap(), i.next().unwrap()) {
(_, Symbol::NonTerminal(NonTerminal::GrammarRuleRHS(p0)), _) => {
NonTerminal::ProductionGroup(
rustemo_actions::production_group_c1(context, p0),
)
}
_ => panic!("Invalid symbol parse stack data."),
}
}
ProdKind::GrammarSymbolRefP1 => {
let mut i = self
.res_stack
.split_off(self.res_stack.len() - 2usize)
.into_iter();
match (i.next().unwrap(), i.next().unwrap()) {
(
Symbol::NonTerminal(NonTerminal::GrammarSymbol(p0)),
Symbol::NonTerminal(NonTerminal::RepetitionOperatorOpt(p1)),
) => {
NonTerminal::GrammarSymbolRef(
rustemo_actions::grammar_symbol_ref_c1(context, p0, p1),
)
}
_ => panic!("Invalid symbol parse stack data."),
}
}
ProdKind::RepetitionOperatorOptP1 => {
let mut i = self
.res_stack
.split_off(self.res_stack.len() - 1usize)
.into_iter();
match i.next().unwrap() {
Symbol::NonTerminal(NonTerminal::RepetitionOperator(p0)) => {
NonTerminal::RepetitionOperatorOpt(
rustemo_actions::repetition_operator_opt_repetition_operator(
context,
p0,
),
)
}
_ => panic!("Invalid symbol parse stack data."),
}
}
ProdKind::RepetitionOperatorOptP2 => {
NonTerminal::RepetitionOperatorOpt(
rustemo_actions::repetition_operator_opt_empty(context),
)
}
ProdKind::GrammarSymbolRefP2 => {
let mut i = self
.res_stack
.split_off(self.res_stack.len() - 2usize)
.into_iter();
match (i.next().unwrap(), i.next().unwrap()) {
(
Symbol::NonTerminal(NonTerminal::ProductionGroup(p0)),
Symbol::NonTerminal(NonTerminal::RepetitionOperatorOpt(p1)),
) => {
NonTerminal::GrammarSymbolRef(
rustemo_actions::grammar_symbol_ref_c2(context, p0, p1),
)
}
_ => panic!("Invalid symbol parse stack data."),
}
}
ProdKind::RepetitionOperatorP1 => {
let mut i = self
.res_stack
.split_off(self.res_stack.len() - 2usize)
.into_iter();
match (i.next().unwrap(), i.next().unwrap()) {
(
Symbol::NonTerminal(NonTerminal::RepetitionOperatorOp(p0)),
Symbol::NonTerminal(NonTerminal::RepetitionModifiersOpt(p1)),
) => {
NonTerminal::RepetitionOperator(
rustemo_actions::repetition_operator_c1(context, p0, p1),
)
}
_ => panic!("Invalid symbol parse stack data."),
}
}
ProdKind::RepetitionModifiersOptP1 => {
let mut i = self
.res_stack
.split_off(self.res_stack.len() - 1usize)
.into_iter();
match i.next().unwrap() {
Symbol::NonTerminal(NonTerminal::RepetitionModifiers(p0)) => {
NonTerminal::RepetitionModifiersOpt(
rustemo_actions::repetition_modifiers_opt_repetition_modifiers(
context,
p0,
),
)
}
_ => panic!("Invalid symbol parse stack data."),
}
}
ProdKind::RepetitionModifiersOptP2 => {
NonTerminal::RepetitionModifiersOpt(
rustemo_actions::repetition_modifiers_opt_empty(context),
)
}
ProdKind::RepetitionOperatorOpZeroOrMore => {
let _ = self
.res_stack
.split_off(self.res_stack.len() - 1usize)
.into_iter();
NonTerminal::RepetitionOperatorOp(
rustemo_actions::repetition_operator_op_zero_or_more(context),
)
}
ProdKind::RepetitionOperatorOpZeroOrMoreGreedy => {
let _ = self
.res_stack
.split_off(self.res_stack.len() - 1usize)
.into_iter();
NonTerminal::RepetitionOperatorOp(
rustemo_actions::repetition_operator_op_zero_or_more_greedy(context),
)
}
ProdKind::RepetitionOperatorOpOneOrMore => {
let _ = self
.res_stack
.split_off(self.res_stack.len() - 1usize)
.into_iter();
NonTerminal::RepetitionOperatorOp(
rustemo_actions::repetition_operator_op_one_or_more(context),
)
}
ProdKind::RepetitionOperatorOpOneOrMoreGreedy => {
let _ = self
.res_stack
.split_off(self.res_stack.len() - 1usize)
.into_iter();
NonTerminal::RepetitionOperatorOp(
rustemo_actions::repetition_operator_op_one_or_more_greedy(context),
)
}
ProdKind::RepetitionOperatorOpOptional => {
let _ = self
.res_stack
.split_off(self.res_stack.len() - 1usize)
.into_iter();
NonTerminal::RepetitionOperatorOp(
rustemo_actions::repetition_operator_op_optional(context),
)
}
ProdKind::RepetitionOperatorOpOptionalGreedy => {
let _ = self
.res_stack
.split_off(self.res_stack.len() - 1usize)
.into_iter();
NonTerminal::RepetitionOperatorOp(
rustemo_actions::repetition_operator_op_optional_greedy(context),
)
}
ProdKind::RepetitionModifiersP1 => {
let mut i = self
.res_stack
.split_off(self.res_stack.len() - 3usize)
.into_iter();
match (i.next().unwrap(), i.next().unwrap(), i.next().unwrap()) {
(_, Symbol::NonTerminal(NonTerminal::RepetitionModifier1(p0)), _) => {
NonTerminal::RepetitionModifiers(
rustemo_actions::repetition_modifiers_repetition_modifier1(
context,
p0,
),
)
}
_ => panic!("Invalid symbol parse stack data."),
}
}
ProdKind::RepetitionModifier1P1 => {
let mut i = self
.res_stack
.split_off(self.res_stack.len() - 3usize)
.into_iter();
match (i.next().unwrap(), i.next().unwrap(), i.next().unwrap()) {
(
Symbol::NonTerminal(NonTerminal::RepetitionModifier1(p0)),
_,
Symbol::NonTerminal(NonTerminal::RepetitionModifier(p1)),
) => {
NonTerminal::RepetitionModifier1(
rustemo_actions::repetition_modifier1_c1(context, p0, p1),
)
}
_ => panic!("Invalid symbol parse stack data."),
}
}
ProdKind::RepetitionModifier1P2 => {
let mut i = self
.res_stack
.split_off(self.res_stack.len() - 1usize)
.into_iter();
match i.next().unwrap() {
Symbol::NonTerminal(NonTerminal::RepetitionModifier(p0)) => {
NonTerminal::RepetitionModifier1(
rustemo_actions::repetition_modifier1_repetition_modifier(
context,
p0,
),
)
}
_ => panic!("Invalid symbol parse stack data."),
}
}
ProdKind::RepetitionModifierP1 => {
let mut i = self
.res_stack
.split_off(self.res_stack.len() - 1usize)
.into_iter();
match i.next().unwrap() {
Symbol::Terminal(Terminal::Name(p0)) => {
NonTerminal::RepetitionModifier(
rustemo_actions::repetition_modifier_name(context, p0),
)
}
_ => panic!("Invalid symbol parse stack data."),
}
}
ProdKind::GrammarSymbolP1 => {
let mut i = self
.res_stack
.split_off(self.res_stack.len() - 1usize)
.into_iter();
match i.next().unwrap() {
Symbol::Terminal(Terminal::Name(p0)) => {
NonTerminal::GrammarSymbol(
rustemo_actions::grammar_symbol_name(context, p0),
)
}
_ => panic!("Invalid symbol parse stack data."),
}
}
ProdKind::GrammarSymbolP2 => {
let mut i = self
.res_stack
.split_off(self.res_stack.len() - 1usize)
.into_iter();
match i.next().unwrap() {
Symbol::Terminal(Terminal::StrConst(p0)) => {
NonTerminal::GrammarSymbol(
rustemo_actions::grammar_symbol_str_const(context, p0),
)
}
_ => panic!("Invalid symbol parse stack data."),
}
}
ProdKind::RecognizerP1 => {
let mut i = self
.res_stack
.split_off(self.res_stack.len() - 1usize)
.into_iter();
match i.next().unwrap() {
Symbol::Terminal(Terminal::StrConst(p0)) => {
NonTerminal::Recognizer(
rustemo_actions::recognizer_str_const(context, p0),
)
}
_ => panic!("Invalid symbol parse stack data."),
}
}
ProdKind::RecognizerP2 => {
let mut i = self
.res_stack
.split_off(self.res_stack.len() - 1usize)
.into_iter();
match i.next().unwrap() {
Symbol::Terminal(Terminal::RegexTerm(p0)) => {
NonTerminal::Recognizer(
rustemo_actions::recognizer_regex_term(context, p0),
)
}
_ => panic!("Invalid symbol parse stack data."),
}
}
_ => panic!("Reduce of unreachable nonterminal!"),
};
self.res_stack.push(Symbol::NonTerminal(prod));
}
}