home *** CD-ROM | disk | FTP | other *** search
/ The Fred Fish Collection 1.5 / ffcollection-1-5-1992-11.iso / ff_disks / 300-399 / ff387.lzh / H2I / Syntax < prev    next >
Text File  |  1990-10-22  |  10KB  |  420 lines

  1.  
  2. file
  3.  
  4.       +---------------+
  5.       |               |
  6.       V               |
  7.    -->+-> statement --+--->
  8.  
  9.  
  10.  
  11. statement
  12.  
  13.    ---+-> include_statement ->+--->
  14.       |                       A
  15.       |                       |
  16.       +-> define_statement -->+
  17.       |                       A
  18.       |                       |
  19.       +-> struct_statement ---+
  20.  
  21.  
  22.  
  23. include_statement
  24.  
  25.    -----> "#include" --+-> '"' --> file_name --> '"' ->+--->
  26.                        |                               A
  27.                        |                               |
  28.                        +-> '<' --> file_name --> '>' --+
  29.  
  30.  
  31.  
  32. file_name
  33.  
  34.       +------------------+
  35.       |                  |
  36.       V                  |
  37.    -->+--+-> letter ->+--+----->
  38.          |            A
  39.          |            |
  40.          +-> digit -->+
  41.          |            A
  42.          |            |
  43.          +-> ':' ---->+
  44.          |            A
  45.          |            |
  46.          +-> '/' ---->+
  47.          |            A
  48.          |            |
  49.          +-> '.' -----+
  50.  
  51.  
  52.  
  53. define_statement
  54.  
  55.    -----> "#define" --> identifier --> constant_expr_1---->
  56.  
  57.  
  58.  
  59. identifier
  60.  
  61.       +------------------+
  62.       |                  |
  63.       V                  |
  64.    -->+--+-> letter ->+--+--->
  65.          |            A
  66.          |            |
  67.          +-> digit ---+
  68.  
  69.  
  70. letter
  71.  
  72.    ---+-> 'A' ->+--->
  73.       |         A
  74.       :    :    :
  75.       |         |
  76.       +-> 'Z' ->+
  77.       |         A
  78.       |         |
  79.       +-> 'a' ->+
  80.       |         A
  81.       :    :    :
  82.       |         |
  83.       +-> 'z' ->+
  84.       |         A
  85.       |         |
  86.       +-> '_' --+
  87.  
  88.  
  89.  
  90. digit
  91.  
  92.    ---+-> '0' ->+--->
  93.       |         A
  94.       :    :    :
  95.       |         |
  96.       +-> '9' --+
  97.  
  98.  
  99.  
  100. constant_expr_1
  101.  
  102.    ---+-> constant ------------------------>+--->
  103.       |                                     |
  104.       |                                     |
  105.       +-> identifier ---------------------->+
  106.       |                                     |
  107.       |                                     |
  108.       +-> unary_op constant --------------->+
  109.       |                                     |
  110.       |                                     |
  111.       +-> unary_op identifier ------------->+
  112.       |                                     |
  113.       |                                     |
  114.       +-> '(' --> constant_expr_2 --> ')' --+
  115.  
  116.  
  117.  
  118. constant_expr_2
  119.  
  120.    ---+-> constant ----------------------------------------->+--->
  121.       |                                                      A
  122.       |                                                      |
  123.       +-> identifier --------------------------------------->+
  124.       |                                                      A
  125.       |                                                      |
  126.       +-> unary_op --> constant_expr_2 --------------------->+
  127.       |                                                      A
  128.       |                                                      |
  129.       +-> constant_expr_2 --> operator --> constant_expr_2 ->+
  130.       |                                                      A
  131.       |                                                      |
  132.       +-> '(' --> constant_expr_2 --> ')' -------------------+
  133.  
  134.  
  135.  
  136. constant
  137.  
  138.    ---+-> hexadecimal_constant ->+--->
  139.       |                          A
  140.       |                          |
  141.       +-> decimal_constant ----->+
  142.       |                          A
  143.       |                          |
  144.       +-> octal_constant --------+
  145.  
  146.  
  147.  
  148. hexadecimal_constant
  149.  
  150.    -----> '0' --+-> 'x' ->+-->+-> hexadecimal_digit -+--->
  151.                 |         A   A                      |
  152.                 |         |   |                      |
  153.                 +-> 'X' --+   +----------------------+
  154.  
  155.  
  156. hexadecimal_digit
  157.  
  158.    ---+-> '0' ->+--->
  159.       |         A
  160.       :    :    :
  161.       |         |
  162.       +-> '9' ->+
  163.       |         A
  164.       |         |
  165.       +-> 'a' ->+
  166.       |         A
  167.       :    :    :
  168.       |         |
  169.       +-> 'f' ->+
  170.       |         A
  171.       |         |
  172.       +-> 'A' ->+
  173.       |         A
  174.       :    :    :
  175.       |         |
  176.       +-> 'F' --+
  177.  
  178.  
  179.  
  180. decimal_constant
  181.  
  182.    -----> pos_digit ->+-> digit -+--->
  183.                       A          |
  184.                       |          |
  185.                       +----------+
  186.  
  187.  
  188.  
  189. pos_digit
  190.  
  191.    ---+-> '1' ->+--->
  192.       |         A
  193.       :    :    :
  194.       |         |
  195.       +-> '9' --+
  196.  
  197.  
  198.  
  199. octal_constant
  200.  
  201.    -----> '0' ->+-> octal_digit -+--->
  202.                 A                |
  203.                 |                |
  204.                 +----------------+
  205.  
  206.  
  207.  
  208. octal_digit
  209.  
  210.    ---+-> '0' ->+--->
  211.       |         A
  212.       :    :    :
  213.       |         |
  214.       +-> '7' --+
  215.  
  216.  
  217.  
  218. unary_op
  219.  
  220.    ---+-> '-' ->+--->
  221.       |         A
  222.       |         |
  223.       +-> '~' --+
  224.  
  225.  
  226. operator
  227.  
  228.    ---+-> '*' -->+--->
  229.       |          A
  230.       |          |
  231.       +-> '+' -->+
  232.       |          A
  233.       |          |
  234.       +-> '-' -->+
  235.       |          A
  236.       |          |
  237.       +-> '/' -->+
  238.       |          A
  239.       |          |
  240.       +-> '&' -->+
  241.       |          A
  242.       |          |
  243.       +-> '|' -->+
  244.       |          A
  245.       |          |
  246.       +-> '%' -->+
  247.       |          A
  248.       |          |
  249.       +-> '^' -->+
  250.       |          A
  251.       |          |
  252.       +-> "<<" ->+
  253.       |          A
  254.       |          |
  255.       +-> ">>" --+
  256.  
  257.  
  258.  
  259. struct_statement
  260.  
  261.    -----> "struct" --> identifier --> prefix --+
  262.                                                |
  263.                                                |
  264.                      +-------------------------+
  265.                      |
  266.                      |
  267.                      +--> '{' -->+-> komponent --+--> '}' --> ';' ----->
  268.                                  A               |
  269.                                  |               |
  270.                                  +---------------+
  271.  
  272.  
  273.  
  274. prefix
  275.  
  276.    -----> "/*/" --> identifier --> "*/" ----->
  277.  
  278.  
  279.  
  280. komponent
  281.  
  282.    ---+-> type ----------------------------->+--> declarator ----->
  283.       |                                      A
  284.       |                                      |
  285.       +-> struct --> identifier --> prefix --+
  286.  
  287.  
  288.  
  289. type
  290.  
  291.    ---+-> c_type ----->+--->
  292.       |                A
  293.       |                |
  294.       +-> amiga_type --+
  295.  
  296.  
  297. c_type
  298.  
  299.    ---+-> "unsigned" --+--+-> "char" --->+---------->+--->
  300.       |                A  |              A           A
  301.       |                |  |              |           |
  302.       +----------------+  +-> "short" -->+-> "int" ->+
  303.       |                   |              A           A
  304.       |                   |              |           |
  305.       |                   +-> "long" ----+           |
  306.       |                                              |
  307.       |                                              |
  308.       +---------------------> "void" --------------->+
  309.       |                                              A
  310.       |                                              |
  311.       +---------------------> "float" -------------->+
  312.       |                                              A
  313.       |                                              |
  314.       +-> "long" --+--------> "double" --------------+
  315.       |            A
  316.       |            |
  317.       +------------+
  318.  
  319.  
  320.  
  321. amiga_type
  322.  
  323.    ---+-> "VOID" ----->+
  324.       |                A
  325.       |                |
  326.       +-> "BYTE" ----->+
  327.       |                A
  328.       |                |
  329.       +-> "UBYTE" ---->+
  330.       |                A
  331.       |                |
  332.       +-> "BYTEBITS" ->+
  333.       |                A
  334.       |                |
  335.       +-> "TEXT" ----->+
  336.       |                A
  337.       |                |
  338.       +-> "SHORT" ---->+
  339.       |                A
  340.       |                |
  341.       +-> "USHORT" --->+
  342.       |                A
  343.       |                |
  344.       +-> "WORD" ----->+
  345.       |                A
  346.       |                |
  347.       +-> "UWORD" ---->+
  348.       |                A
  349.       |                |
  350.       +-> "COUNT" ---->+
  351.       |                A
  352.       |                |
  353.       +-> "UCOUNT" --->+
  354.       |                A
  355.       |                |
  356.       +-> "BOOL" ----->+
  357.       |                A
  358.       |                |
  359.       +-> "WORDBITS" ->+
  360.       |                A
  361.       |                |
  362.       +-> "LONG" ----->+
  363.       |                A
  364.       |                |
  365.       +-> "ULONG" ---->+
  366.       |                A
  367.       |                |
  368.       +-> "LONGBITS" ->+
  369.       |                A
  370.       |                |
  371.       +-> "APTR" ----->+
  372.       |                A
  373.       |                |
  374.       +-> "BPTR" ----->+
  375.       |                A
  376.       |                |
  377.       +-> "CPTR" ----->+
  378.       |                A
  379.       |                |
  380.       +-> "BSTR" ----->+
  381.       |                A
  382.       |                |
  383.       +-> "STRPTR" --->+
  384.       |                A
  385.       |                |
  386.       +-> "FLOAT" ---->+
  387.       |                A
  388.       |                |
  389.       +-> "DOUBLE" ----+
  390.  
  391.  
  392. declarator
  393.  
  394.    ---+------------>+-> idenifier -----------------+---------------->+--->
  395.       |             A                              |                 A
  396.       |             |                              V                 |
  397.       +-> pointer --+                              +-> array ------->+
  398.       |                                            A                 A
  399.       |                                            |                 |
  400.       +-> '(' --> pointer --> identifier --> ')' --+-> '(' --> ')' --+
  401.  
  402.  
  403.  
  404. pointer
  405.  
  406.    --->+-> '*' --+--->
  407.        A         |
  408.        |         |
  409.        +---------+
  410.  
  411.  
  412.  
  413. array
  414.  
  415.    --->+-> '[' --> constant --> ']' --+--->
  416.        A                              |
  417.        |                              |
  418.        +------------------------------+
  419.  
  420.