xswag-syntax-java 0.3.0

Java Parser for the xswag system
Documentation
grammar;

pub X = "x";

// pub Expr: () = {
//     Expr "+" Expr => (),
//     Expr "-" Expr => (),
//     "0" => (),
//     "1" => (),
// };

// Cat = "c";
// #[inline] Tiger = Cat;


// Animal = {
//     "-" <Cat>,
//     "-" <Tiger>,
// };

// pub Foo = {
//     <"x"> Animal,
//     <"y"> Animal,
// };


// Spanned<T> = @L <T> @R;
// // Spanned<T> = "l" <T> "r";
// // Spanned<T> = <T>;
// Word: () = "a" => ();

// // #[inline]
// Bar: () = <@L> <Word> <@R> "!" => ();

// ProxyA = <@L> <Word> <@R> "~";
// ProxyB = <@L> <Bar> <@R> "+";

    // ProxyA,
    // ProxyB,
    // @L <"a"> @R,
    // @L @L <"a"> @R "+" @R,

// Num: () = @L "1" @R => ();
// Num: i32 = "1" => 1;

// Plus: ExprType = {
//     Num => ExprType::Num(<>),
//     <ll: @L> <lhs: Plus> <lr: @R> "+" <rl: @L> <rhs: Num> <rr: @R> => ExprType::Add (
//         Box::new(Expr { inner: lhs, span: (ll, lr) }),
//         Box::new(Expr { inner: rhs, span: (rl, rr) }),
//     ),
// };

// pub Expr: Expr = {
//     <l: @L> <inner: Plus> <r: @R> => Expr { inner: inner, span: (l, r) },
// };

// Bar: () = <Spanned<Word>> "!" => ();

// ProxyA = <Spanned<Word>> "~";
// ProxyB = <Spanned<Bar>> "+";

// ChildA = "a";
// ChildB = Spanned<"b">;
// ParentHelper = ChildB ChildA;
// pub Parent = Spanned<ParentHelper>;

// pub Statement = {
//     Assignment,
//     LabeledStatement,
// };

// LabeledStatement = <Spanned<Word>> ":" Statement;

// Assignment = <Spanned<Spanned<Word>>> "~";

// pub Foo = Bar;

// Bar: () = {
//     "x" =>? {
//         Ok(())
//     }
// };