======================
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
==============================

env
env SHELL
env TMPDIR=/tmp
env SHELL;
env 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\))
(
(*
(jump; pd 1)
(-*

---

(statements
  (macro_stmt (cmd_identifier)
    (macro_content
      (macro_name)
      (args
        (arg (arg_identifier))
        (arg (arg_identifier)))
      (macro_body
        (tmp_seek_stmt
          (arged_stmt (cmd_identifier)
            (args (arg (arg_identifier))))
          (args (arg (arg_identifier)))))))
  (arged_stmt (cmd_identifier)
    (args (arg (arg_identifier))))
  (macro_stmt (cmd_identifier)
    (macro_content
      (macro_name)
      (args
        (arg (arg_identifier))
        (arg (arg_identifier)))
      (macro_body
        (tmp_seek_stmt
          (arged_stmt (cmd_identifier)
            (args (arg (arg_identifier))))
          (args (arg (arg_identifier))))))
    (macro_call
      (args
        (arg (arg_identifier))
        (arg (arg_identifier)))))
  (arged_stmt (cmd_identifier)
    (args
     (arg (arg_identifier))
     (arg (arg_identifier))
     (arg (arg_identifier))))
  (arged_stmt (cmd_identifier)
    (args
     (arg (arg_identifier))
     (arg (arg_identifier))
     (arg (arg_identifier))
     (arg (arg_identifier))
     (arg (arg_identifier))))
  (macro_stmt (cmd_identifier)
    (macro_content
      (macro_name)
      (args (arg (arg_identifier)))
      (macro_body
        (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))))
        (arged_stmt (cmd_identifier)
          (args
            (arg (arg_identifier))
            (arg (arg_identifier)))))))
  (macro_stmt (cmd_identifier)
    (macro_content
      (macro_name)
      (macro_body
        (grep_stmt
          (arged_stmt (cmd_identifier)
            (args (arg (arg_identifier))))
          (grep_specifier (grep_specifier_identifier))))))
  (arged_stmt (cmd_identifier))
  (arged_stmt (cmd_identifier))
  (macro_stmt (cmd_identifier)
    (macro_content
      (macro_name)
      (macro_body
          (arged_stmt (cmd_identifier)
            (args (arg (arg_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: (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$(echo 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)))))
