ByMCParser

Struct ByMCParser 

Source
pub struct ByMCParser;
Expand description

Parser for the ByMC format

This parser implements the ParseToTA trait and can be used to parse threshold automata given in the ByMC format as introduced by BYMC.

Implementations§

Source§

impl ByMCParser

Source

pub fn new() -> Self

Source

fn parse_ta_and_return_left_pair<'a>( &self, input: &'a str, ) -> Result<(GeneralThresholdAutomaton, Pairs<'a, Rule>, ByMCParsingContext<'a>), Error>

Source

fn handle_local_vars<'a>( pairs: &mut Pairs<'a, Rule>, pair: Pair<'a, Rule>, builder: GeneralThresholdAutomatonBuilder, err_msg: &str, ) -> (GeneralThresholdAutomatonBuilder, Pair<'a, Rule>)

Handle potential local variables of the threshold automaton and return next pair

NOTE: Local variables are currently simply skipped

Source

fn parse_shared_variables<'a>( pairs: &mut Pairs<'a, Rule>, pair: Pair<'a, Rule>, builder: GeneralThresholdAutomatonBuilder, err_msg: &str, ) -> Result<(GeneralThresholdAutomatonBuilder, Pair<'a, Rule>), BuilderError>

Parse shared variables and add them to the builder

This function checks whether the current pair is a shared variable list, parses the shared variable names and adds them to the builder. Afterwards, it computes the next pair to be processed.

If that pair is a again a shared variable list, the function continues to parse until the next pair is not a shared variable list and returns that pair and the modified builder.

Source

fn parse_and_add_parameters<'a>( pairs: &mut Pairs<'a, Rule>, pair: Pair<'a, Rule>, builder: GeneralThresholdAutomatonBuilder, ) -> Result<(GeneralThresholdAutomatonBuilder, Pair<'a, Rule>), BuilderError>

Parse the list of parameters and add them to the builder

A parameter list must exist by the grammar definition.

Source

fn parse_and_add_define_macros<'a>( pairs: &mut Pairs<'a, Rule>, pair: Pair<'a, Rule>, builder: GeneralThresholdAutomatonBuilder, ctx: &mut ByMCParsingContext<'a>, ) -> Result<(GeneralThresholdAutomatonBuilder, Pair<'a, Rule>), Box<Error<()>>>

Source

fn parse_and_add_locations<'a>( pairs: &mut Pairs<'a, Rule>, pair: Pair<'a, Rule>, builder: GeneralThresholdAutomatonBuilder, ) -> Result<(GeneralThresholdAutomatonBuilder, Pair<'a, Rule>), BuilderError>

Parse the list of locations and add them to the builder

A location list must exist by the grammar definition.

Source

fn pares_and_add_potential_resilience_conditions( pair: Option<Pair<'_, Rule>>, builder: InitializedGeneralThresholdAutomatonBuilder, ctx: &ByMCParsingContext<'_>, ) -> Result<InitializedGeneralThresholdAutomatonBuilder, Error>

Parse potential resilience conditions and add them to the builder

This function checks whether the current pair is a resilience condition list, if so it tries to parse the resilience conditions and adds them to the builder.

Source

fn parse_and_add_location_and_var_constraints<'a>( pairs: &mut Pairs<'a, Rule>, pair: Pair<'a, Rule>, builder: InitializedGeneralThresholdAutomatonBuilder, ctx: &ByMCParsingContext<'_>, ) -> Result<(InitializedGeneralThresholdAutomatonBuilder, Pair<'a, Rule>), Error>

Parse potential location constraints and add them to the builder

This function checks whether the current pair specifies initial constraints. It then tries to parse it into a variable constraint. If the constraint is not accepted by the initialized builder, it tries to parse it into a location constraint and returns the result.

Source

fn parse_and_add_rules( pair: Pair<'_, Rule>, builder: InitializedGeneralThresholdAutomatonBuilder, ctx: &ByMCParsingContext<'_>, ) -> Result<InitializedGeneralThresholdAutomatonBuilder, Error>

Parse the list of rules and add them to the builder

Source

fn parse_specification_and_add_expressions<'a>( pair: Pair<'_, Rule>, builder: ELTLSpecificationBuilder<'a, GeneralThresholdAutomaton>, ctx: &ByMCParsingContext<'_>, ) -> Result<ELTLSpecificationBuilder<'a, GeneralThresholdAutomaton>, Error>

Parse specification list into ltl expressions

Trait Implementations§

Source§

impl Default for ByMCParser

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl ParseTA for ByMCParser

Source§

fn parse_ta(&self, input: &str) -> Result<GeneralThresholdAutomaton, Error>

Parse a string in the ByMC to a threshold automaton

§Example
use crate::taco_parser::bymc::ByMCParser;
use crate::taco_parser::*;

let spec = "skel Proc {
    parameters n;
    assumptions (1) {
        n >= 0;
    }
    locations (0) {}
    inits (0) {}
    rules (0) {}
}";
let parser = ByMCParser::new();
let ta = parser.parse_ta(spec).unwrap();
Source§

impl ParseTAWithLTL for ByMCParser

Source§

fn parse_ta_and_spec( &self, input: &str, ) -> Result<(GeneralThresholdAutomaton, ELTLSpecification), Error>

Try to parse the threshold automaton and LTL specification from a string. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.