diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/fexpr/grammar.lalrpop | 10 | ||||
| -rw-r--r-- | src/fexpr/mod.rs | 2 | 
2 files changed, 12 insertions, 0 deletions
| diff --git a/src/fexpr/grammar.lalrpop b/src/fexpr/grammar.lalrpop index 580fa1b..bca7691 100644 --- a/src/fexpr/grammar.lalrpop +++ b/src/fexpr/grammar.lalrpop @@ -68,6 +68,7 @@ LogPredicate: Box<dyn filters::log::LogFilter> = {      "-fractal" => filters::log::game_mode([GameMode::Fractal].into()),      "-strike" => filters::log::game_mode([GameMode::Strike].into()),      "-wvw" => filters::log::game_mode([GameMode::WvW].into()), +    "-gamemode" <Comma<GameMode>> => filters::log::game_mode(<>),      "-include" => filters::constant(true),      "-exclude" => filters::constant(false), @@ -155,6 +156,15 @@ Encounter: Encounter = {      }),  } +GameMode: GameMode = { +    <l:@L> <w:word> =>? w.parse().map_err(|_| ParseError::User { +        error: FError { +            location: l, +            kind: FErrorKind::GameMode, +        } +    }), +} +  PlayerClass: PlayerClass = {      <l:@L> <w:word> =>? w.parse().map_err(|_| ParseError::User {          error: FError { diff --git a/src/fexpr/mod.rs b/src/fexpr/mod.rs index 0fe2acf..6eeb753 100644 --- a/src/fexpr/mod.rs +++ b/src/fexpr/mod.rs @@ -51,6 +51,8 @@ pub enum FErrorKind {      Boss,      #[error("invalid class name")]      Class, +    #[error("invalid game mode")] +    GameMode,  }  /// Shortcut to create a new parser and parse the given input. | 
