macro_rules! lisp {
(false) => { ... };
(true) => { ... };
(self $(. $e:tt)* ) => { ... };
( $(#[$m:meta])* defstruct $struct_name:ident < $($generic:ident),+ >
(pub $( ($name:ident $typ:ty) )* )
( $( ($name2:ident $typ2:ty) )* )
) => { ... };
( $(#[$m:meta])* defstruct $struct_name:ident < $($generic:ident),+ >
(pub $( ($name:ident $typ:ty) )* )
) => { ... };
( $(#[$m:meta])* defstruct $struct_name:ident < $($generic:ident),+ >
( $( ($name:ident $typ:ty) )* )
) => { ... };
( $(#[$m:meta])* defstruct $struct_name:ident
(pub $( ($name:ident $typ:ty) )* )
( $( ($name2:ident $typ2:ty) )* )
) => { ... };
( $(#[$m:meta])* defstruct $struct_name:ident
(pub $( ($name:ident $typ:ty) )* )
) => { ... };
( $(#[$m:meta])* defstruct $struct_name:ident
( $( ($name:ident $typ:ty) )* )
) => { ... };
( $(#[$m:meta])* defstruct $struct_name:ident) => { ... };
(match $e:tt $( ( $pattern:pat $(| $pat2:pat)* => ( $($e2:tt)* ) ) )* ) => { ... };
(with-input-from-file ($var:ident $path:tt)
$( ( $($e2:tt)* ) )*
) => { ... };
(with-input-from-mut-file ($var:ident $path:tt)
$( ( $($e2:tt)* ) )*
) => { ... };
(with-output-to-new-file ($var:ident $path:tt)
$( ( $($e2:tt)* ) )*
) => { ... };
(read $file:tt $s:ident) => { ... };
(read-to-string $file:tt $s:ident) => { ... };
(read-to-end $file:tt $s:ident) => { ... };
(read-exact $file:tt $s:ident) => { ... };
(bytes $readable:tt) => { ... };
(chars $readable:tt) => { ... };
(chain $readable:tt $next:tt) => { ... };
(take $readable:tt $limit:tt) => { ... };
(write $buffer:tt $e:tt) => { ... };
(write-all $buffer:tt $e:tt) => { ... };
(write-format $buffer:tt $fmt:tt) => { ... };
(flush $writable:tt) => { ... };
(seek $buffer:tt $e:tt) => { ... };
(by-ref $object:tt) => { ... };
(let ( $( ($var:ident $e:tt) )* )
$( ( $($e2:tt)* ) )*
) => { ... };
(progn $( ( $($e:tt)* ) )* ) => { ... };
(break) => { ... };
(continue) => { ... };
(loop $( ( $($e:tt)* ) )* ) => { ... };
(while $cond:tt $( ( $($e:tt)* ) )* ) => { ... };
(while-let ( $pattern:pat = $($cond:tt)* ) $( ( $($e:tt)* ) )* ) => { ... };
(dotimes ($var:ident $count:tt) $( ( $($e:tt)* ) )* ) => { ... };
(do ( $( ($var:ident $init:tt $step:tt) )* )
($cond:tt $result:tt)
$( ( $($e:tt)* ) )*
) => { ... };
(doiter ($var:ident $( $iter:tt )* ) $( ( $($e:tt)* ) )* ) => { ... };
(if ( $($cond:tt)* ) $e1:tt $e2:tt) => { ... };
(if ( $($cond:tt)* ) $e:tt) => { ... };
(if $cond:tt $e1:tt $e2:tt) => { ... };
(if $cond:tt $e:tt) => { ... };
(if-let ( $pattern:pat = $($cond:tt)* ) $e1:tt $e2:tt) => { ... };
(if-let ( $pattern:pat = $($cond:tt)* ) $e:tt) => { ... };
(when ( $($cond:tt)* ) $e:tt) => { ... };
(when $cond:tt $e:tt) => { ... };
(unless ( $($cond:tt)* ) $e:tt) => { ... };
(unless $cond:tt $e:tt) => { ... };
( $(#[$m:meta])* extern-crate $sym:ident) => { ... };
(use $sym:tt $(:: $sym2:tt)* ) => { ... };
( $(#[$m:meta])* module $sym:ident
$( ( $($e:tt)* ))*
) => { ... };
( $(#[$m:meta])* pub module $sym:ident
$( ( $($e:tt)* ))*
) => { ... };
( $(#[$m:meta])* defun $sym:ident ( $( ( $name:ident $typ:ty ) )* ) $return_type:tt
$( ( $($e:tt)* ))*
) => { ... };
( $(#[$m:meta])* defun $sym:ident ( $( ( $name:ident $typ:ty ) )* )
$( ( $($e:tt)* ))*
) => { ... };
( $(#[$m:meta])* pub defun $sym:ident ( $( ( $name:ident $typ:ty ) )* ) $return_type:tt
$( ( $($e:tt)* ))*
) => { ... };
( $(#[$m:meta])* pub defun $sym:ident ( $( ( $name:ident $typ:ty ) )* )
$( ( $($e:tt)* ))*
) => { ... };
(defconstant ($var:ident $typ:ty) ( $($e:tt)+ ) ) => { ... };
(defconstant ($var:ident $typ:ty) $e:expr) => { ... };
(defconstant $var:ident ( $($e:tt)+ ) ) => { ... };
(defconstant $var:ident $e:expr) => { ... };
(defvar ($var:ident $typ:ty) ( $($e:tt)+ )) => { ... };
(defvar ($var:ident $typ:ty) $e:expr) => { ... };
(defvar $var:ident ( $($e: tt)+ )) => { ... };
(defvar $var:ident $e:expr) => { ... };
(setf $var:ident ( $($e: tt)+ ) ) => { ... };
(setf $var:ident $e:expr) => { ... };
(eq $x:tt $y:tt) => { ... };
(== $x:tt $y:tt) => { ... };
(!= $x:tt $y:tt) => { ... };
(< $x:tt $y:tt) => { ... };
(> $x:tt $y:tt) => { ... };
(<= $x:tt $y:tt) => { ... };
(>= $x:tt $y:tt) => { ... };
(print $( $e:tt )+) => { ... };
(println $( $e:tt )+) => { ... };
(format $( $e:tt )+) => { ... };
(format-args $( $e:tt )+) => { ... };
(assert $e1:tt $e2:tt) => { ... };
(assert-eq $e1:tt $e2:tt) => { ... };
(debug-assert $e1:tt $e2:tt) => { ... };
(debug-assert-eq $e1:tt $e2:tt) => { ... };
(panic $($arg:tt)+ ) => { ... };
(+ $x:tt $y:tt) => { ... };
(- $x:tt $y:tt) => { ... };
(* $x:tt $y:tt) => { ... };
(/ $x:tt $y:tt) => { ... };
(% $x:tt $y:tt) => { ... };
(incf $var:ident) => { ... };
(decf $var:ident) => { ... };
(1+ $e:tt) => { ... };
(1- $e:tt) => { ... };
(! $e:tt) => { ... };
(len $e:tt) => { ... };
(tuple $($e:tt)* ) => { ... };
(vec $($e:tt)* ) => { ... };
(lambda move ( $( ( $name:ident $typ:ty ) )* )
$( ( $($e:tt)* ))*
) => { ... };
(lambda ( $( ( $name:ident $typ:ty ) )* )
$( ( $($e:tt)* ))*
) => { ... };
((lambda ( ( $($name:ident $typ:ty)* ) ) $( ( $($e:tt)* ))* ) $($e2:tt)*) => { ... };
( $sym:ident $(:: $sym2:ident )+ $( $e:tt )* ) => { ... };
( $sym:ident . $( $sym2:ident ).+ $( $e:tt )* ) => { ... };
($sym:ident $( $e:tt )* ) => { ... };
(rust $( $st:stmt )* ) => { ... };
($e:expr) => { ... };
}