======================
Pointer type statements
======================

*entry0
*entry0=cc
*entry0+10=cc

---

(statements
  (arged_stmt (cmd_identifier)
    (args
      (arg (arg_identifier))))
  (arged_stmt (cmd_identifier)
    (args
      (arg (arg_identifier))
      (arg (arg_identifier))))
  (arged_stmt (cmd_identifier)
    (args
      (arg (arg_identifier))
      (arg (arg_identifier)))))


==============================
Environment variable command
==============================

%
%SHELL
%TMPDIR=/tmp
%SHELL;
%TMPDIR=/tmp;

---

(statements
  (arged_stmt (cmd_identifier))
  (arged_stmt (cmd_identifier)
    (args
      (arg (arg_identifier))))
  (arged_stmt (cmd_identifier)
    (args
      (arg (arg_identifier))
      (arg (arg_identifier))))
  (arged_stmt (cmd_identifier)
    (args
      (arg (arg_identifier))))
  (arged_stmt (cmd_identifier)
    (args
      (arg (arg_identifier))
      (arg (arg_identifier)))))


===============
Macro statements
===============

(_foo x y; p8 $0 @ $1)
(-foo)
(foo x y; p8 $0 @ $1)(10 0x10)
.(foo 10 0x10)
..(foo 10 0x10 20 0x20)
(pdstr bits; s $0; .(pdenc guess); .(pdenc utf$0le); .(pdenc utf$0be))
(foo; pd 10~this is special\))
(
(*

---

(statements
  (arged_stmt (cmd_identifier)
    (macro_args
      (macro_content
        (arg (arg_identifier))
	(args
	  (arg (arg_identifier))
	  (arg (arg_identifier)))
        (tmp_seek_stmt
	  (arged_stmt (cmd_identifier)
	    (args (arg (arg_identifier))))
	  (args (arg (arg_identifier)))))))
  (arged_stmt (cmd_identifier)
    (macro_args
      (macro_content
        (arg (arg_identifier)))))
  (arged_stmt (cmd_identifier)
    (macro_args
      (macro_content
        (arg (arg_identifier))
	(args
	  (arg (arg_identifier))
	  (arg (arg_identifier)))
        (tmp_seek_stmt
	  (arged_stmt (cmd_identifier)
	    (args (arg (arg_identifier))))
	  (args (arg (arg_identifier)))))
      (macro_call_full_content
        (macro_call_content
	  (args
	    (arg (arg_identifier))
	    (arg (arg_identifier)))))))
  (arged_stmt (cmd_identifier)
   (macro_call_content
    (args
     (arg (arg_identifier))
     (arg (arg_identifier))
     (arg (arg_identifier)))))
  (arged_stmt (cmd_identifier)
   (macro_call_content
    (args
     (arg (arg_identifier))
     (arg (arg_identifier))
     (arg (arg_identifier))
     (arg (arg_identifier))
     (arg (arg_identifier)))))
  (arged_stmt (cmd_identifier)
    (macro_args
      (macro_content
        (arg (arg_identifier))
	(args (arg (arg_identifier)))
        (arged_stmt (cmd_identifier)
	  (args (arg (arg_identifier))))
	(arged_stmt (cmd_identifier)
	  (macro_call_content
	    (args
	      (arg (arg_identifier))
	      (arg (arg_identifier)))))
	(arged_stmt (cmd_identifier)
	  (macro_call_content
	    (args
	      (arg (arg_identifier))
	      (arg (arg_identifier)))))
	(arged_stmt (cmd_identifier)
	  (macro_call_content
	    (args
	      (arg (arg_identifier))
	      (arg (arg_identifier))))))))
  (arged_stmt (cmd_identifier)
    (macro_args
      (macro_content
        (arg (arg_identifier))
	(grep_stmt
	  (arged_stmt (cmd_identifier)
	    (args (arg (arg_identifier))))
	  (grep_specifier (grep_specifier_identifier))))))
  (arged_stmt (cmd_identifier))
  (arged_stmt (cmd_identifier)))


===============
System statements
===============

!
!ls
!!
!!ls
!rz-find -S واسع bins/pe/testapp-msvc64.exe

---

(statements
  (arged_stmt (system_identifier))
  (arged_stmt (system_identifier)
    (args (arg (arg_identifier))))
  (arged_stmt (system_identifier))
  (arged_stmt (system_identifier)
    (args (arg (arg_identifier))))
  (arged_stmt (system_identifier)
    (args
      (arg (arg_identifier))
      (arg (arg_identifier))
      (arg (arg_identifier))
      (arg (arg_identifier)))))


===================
Interpret r2 statements
===================

.cmd a1
.. myfile
. myfile.r2
.* file
.!rz-bin -ri $FILE
.(foo 1 2 3)
./ ELF
pd 10 |.

---

(statements
  (arged_stmt
    command: (cmd_identifier)
    args: (arged_stmt command: (cmd_identifier)
            args: (args (arg (arg_identifier)))))
  (arged_stmt
    command: (cmd_identifier)
    args: (args (arg (arg_identifier))))
  (arged_stmt
    command: (cmd_identifier)
    args: (args (arg (arg_identifier))))
  (arged_stmt
    command: (cmd_identifier)
    args: (args (arg (arg_identifier))))
  (arged_stmt
    command: (cmd_identifier)
    args: (arged_stmt command: (system_identifier)
            args: (args
                    (arg (arg_identifier))
                    (arg (arg_identifier))
                    (arg (arg_identifier)))))
  (arged_stmt
    command: (cmd_identifier)
    args: (macro_call_content
            (args
	      (arg (arg_identifier))
	      (arg (arg_identifier))
	      (arg (arg_identifier))
	      (arg (arg_identifier)))))
  (arged_stmt
    command: (cmd_identifier)
    args: (args (arg (arg_identifier))))
  (arged_stmt
    args: (arged_stmt command: (cmd_identifier)
            args: (args (arg (arg_identifier)))))
  )


============
Last cmd
============

.
...

---

(statements
  (arged_stmt (cmd_identifier))
  (arged_stmt (cmd_identifier)))

===================
Interpreter statements
===================

#!
#!python arg1
#!rust
#!?

---

(statements
  (arged_stmt (cmd_identifier))
  (arged_stmt (cmd_identifier)
    (args
      (arg (arg_identifier))
      (arg (arg_identifier))))
  (arged_stmt (cmd_identifier)
    (args
      (arg (arg_identifier))))
  (help_stmt (cmd_identifier)))


=======================================
Pointer type statements with substitution
=======================================

*entr$(?e y0)=$(?v $$)

---

(statements
  (arged_stmt (cmd_identifier)
    (args
      (arg
        (concatenation
          (arg_identifier)
          (cmd_substitution_arg
            (arged_stmt (cmd_identifier)
              (args (arg (arg_identifier)))))))
      (arg
        (cmd_substitution_arg
          (arged_stmt (cmd_identifier)
            (args (arg (arg_identifier)))))))))

========
editor -
========

-

---

(statements
  (arged_stmt (cmd_identifier)))

=========
\ command
=========

\

---

(statements
  (arged_stmt (cmd_identifier)))


==============
R statements
==============

R
R<
R 3 cmd
R! cmd
R+ http://host:3000
R- 3
R= 3
R!=
R=!
Rr host:3000 cmd
R&r 3000

---

(statements
  (arged_stmt (cmd_identifier))
  (arged_stmt (cmd_identifier))
  (arged_stmt (cmd_identifier)
    (args
      (arg (arg_identifier))
      (arg (arg_identifier))))
  (arged_stmt (cmd_identifier)
    (args
      (arg (arg_identifier))))
  (arged_stmt (cmd_identifier)
    (args
      (arg (arg_identifier))))
  (arged_stmt (cmd_identifier)
    (args
      (arg (arg_identifier))))
  (arged_stmt (cmd_identifier)
    (args
      (arg (arg_identifier))))
  (arged_stmt (cmd_identifier))
  (arged_stmt (cmd_identifier))
  (arged_stmt (cmd_identifier)
    (args
      (arg (arg_identifier))
      (arg (arg_identifier))))
  (arged_stmt (cmd_identifier)
    (args
      (arg (arg_identifier)))))
