general_parser/
configuration.rs

1#[derive(Clone, Copy, Debug)]
2pub struct BinaryOperator<'a> {
3	pub representation: &'a str,
4	pub precedence: u8,
5}
6
7#[derive(Clone, Copy, Debug)]
8pub struct UnaryOperator<'a> {
9	pub representation: &'a str,
10	pub precedence: u8,
11}
12
13/// prefix:  if ... then ... else ...
14/// postfix: ... = ... (mod ...)
15#[derive(Clone, Copy, Debug)]
16pub struct TernaryOperator<'a> {
17	pub name: &'a str,
18	pub parts: (&'a str, &'a str, &'a str),
19	pub precedence: u8,
20}
21
22#[derive(Default, Debug)]
23pub struct Configuration<'a> {
24	pub prefix_unary_operators: Vec<UnaryOperator<'a>>,
25	pub prefix_ternary_operators: Vec<TernaryOperator<'a>>,
26	pub postfix_unary_operators: Vec<UnaryOperator<'a>>,
27	pub postfix_ternary_operators: Vec<TernaryOperator<'a>>,
28	pub binary_operators: Vec<BinaryOperator<'a>>,
29	pub adjacency: Option<Adjacency<'a>>,
30}
31
32#[derive(Debug)]
33pub struct Adjacency<'a> {
34	// TODO skip
35	pub operator: BinaryOperator<'a>,
36	pub functions: Vec<&'a str>,
37}