home *** CD-ROM | disk | FTP | other *** search
/ ARM Club 1 / ARM_CLUB_CD.iso / contents / apps / paint / m / qrt / QRTdocs / CFG < prev    next >
Encoding:
Text File  |  1989-05-22  |  6.3 KB  |  207 lines

  1.            Context Free Grammar for QRT Input Language
  2.  
  3.   Notes: '(' and ')' are non-terminal symbols
  4.           (  and  )  are CFG parens
  5.           +          is one or more than one
  6.  
  7.           * lower case strings in grammar are non-terminals
  8.           * input language is not case sensitive
  9.           * <WHITE_SPACE> = blank | newline | tab
  10.           * args can be separated by optional ',' or ';'
  11.           * '=' can separate argument name from value
  12.                 or string.
  13.  
  14.  
  15.   <WORLD>         = <INSTANCE_DEFS> ( <OBJECT> | <ATTRIBUTE> )+
  16.  
  17.   <INSTANCE_DEFS> = begin_instances <OBJECT>+ end_instances
  18.  
  19.   <OBJECT>        = <PRIMITIVE>+ |
  20.                     ( name <STRING> | <EMPTY> )
  21.                     begin_bbox <OBJECT> end_bbox
  22.  
  23.   <PRIMITIVE>     = <SPHERE>        |
  24.                     <PARALLELOGRAM> |
  25.                     <RING>          |
  26.                     <QUADRATIC>     |
  27.                     <INSTANCE_OF>
  28.  
  29.   <ATTRIBUTE>     = <SKY>               |
  30.                     foc_length <NUMBER> |
  31.                     <DEFAULT>           |
  32.                     file_name  <STRING> |
  33.                     <LAMP>              |
  34.                     <PATTERN>           |
  35.                     <OBSERVER>
  36.  
  37.   <SPHERE>        = sphere '(' <SPHERE_DEF>+ ')'
  38.  
  39.   <SPHERE_DEF>    = <POSITION>       |
  40.                     name    <STRING> |
  41.                     radius  <NUM>    |
  42.                     <CINFO>          |
  43.                     pattern <STRING> |
  44.                     remove  <STRING>
  45.  
  46.   <PARALLELOGRAM> = parallelogram '(' <PAR_DEF>+ ')'
  47.  
  48.   <PAR_DEF>       = <POSITION>       |
  49.                     name    <STRING> |
  50.                     v1      <VECTOR> |
  51.                     vect1   <VECTOR> |
  52.                     v2      <VECTOR> |
  53.                     vect2   <VECTOR> |
  54.                     <CINFO>          |
  55.                     pattern <STRING> |
  56.                     remove  <STRING>
  57.  
  58.   <TRIANGLE>      = triangle '(' <TRIANGLE_DEF>+ ')'
  59.  
  60.   <TRIANGLE_DEF>  = <POSITION>       |
  61.                     name    <STRING> |
  62.                     v1      <VECTOR> |
  63.                     vect1   <VECTOR> |
  64.                     v2      <VECTOR> |
  65.                     vect2   <VECTOR> |
  66.                     <CINFO>          |
  67.                     pattern <STRING> |
  68.                     remove  <STRING>
  69.  
  70.   <RING>          = ring '(' <RING_REF>+ ')'
  71.  
  72.   <RING_DEF>      = <POSITION>       |
  73.                     name    <STRING> |
  74.                     v1      <VECTOR> |
  75.                     vect1   <VECTOR> |
  76.                     v2      <VECTOR> |
  77.                     vect2   <VECTOR> |
  78.                     rad_1     <NUM>  |
  79.                     rad_2     <NUM>  |
  80.                     <CINFO>          |
  81.                     pattern <STRING> |
  82.                     remove  <STRING>
  83.  
  84.   <QUADRATIC>     = quadratic '(' <QUAD_DEF>+ ')'
  85.  
  86.   <QUAD_DEF>      = <POSITION>       |
  87.                     name    <STRING> |
  88.                     a          <NUM> |
  89.                     b          <NUM> |
  90.                     c          <NUM> |
  91.                     d          <NUM> |
  92.                     xmin       <NUM> |
  93.                     xmax       <NUM> |
  94.                     ymin       <NUM> |
  95.                     ymax       <NUM> |
  96.                     zmin       <NUM> |
  97.                     zmax       <NUM> |
  98.                     dir     <VECTOR> |
  99.                     <CINFO>          |
  100.                     pattern <STRING> |
  101.                     remove  <STRING>
  102.  
  103.   <INSTANCE_OF>   = instance_of '(' <INSTANCE>+ ')'
  104.  
  105.   <INSTANCE>      = name <STRING>       |
  106.                     <POSITION>          |
  107.                     scale = <VECTOR>
  108.  
  109.   <SKY>           = sky '(' <SKY_DEF>+ ')'
  110.  
  111.   <SKY_DEF>       = zenith <COLOR_TRIPLE> |
  112.                     horiz  <COLOR_TRIPLE>
  113.  
  114.   <DEFAULT>       = default '(' <DEFAULT_DEF>+ ')'
  115.  
  116.   <DEFAULT_DEF>   = <CINFO>       |
  117.                     no_shadow     |
  118.                     no_lamp       |
  119.                     x_res <NUM>   |
  120.                     y_res <NUM>   |
  121.                     aspect <NUM>  |
  122.                     threshold <NUM>
  123.  
  124.   <LAMP>          = lamp '(' <LAMP_DEF>+ ')'
  125.  
  126.   <LAMP_DEF>      = <POSITION>    |
  127.                     radius  <NUM> |
  128.                     dist    <NUM> |
  129.                     <AMB>+
  130.  
  131.   <OBSERVER>      = observer '(' <OBS_DEF>+ ')'
  132.  
  133.   <OBS_DEF>       = <POSITION>      |
  134.                     lookat <VECTOR> |
  135.                     up     <VECTOR>
  136.  
  137.   <PATTERN>       = pattern '(' <PATTERN_DEF>+ ')'
  138.  
  139.   <PATTERN_DEF>   = x_size   <NUM>    |
  140.                     y_size   <NUM>    |
  141.                     name     <STRING> |
  142.                     '(' <SUB_PATTERN>+ ')'
  143.  
  144.   <SUB_PATTERN>   = RECTANGLE <RECTANGLE_PAT> |
  145.                     CIRCLE    <CIRCLE_PAT>    |
  146.                     POLYGON   <POLY_PATT>
  147.  
  148.   <RECTANGLE_PAT> = start_x   <NUM> |
  149.                     stary_y   <NUM> |
  150.                     start_z   <NUM> |
  151.                     end_x     <NUM> |
  152.                     end_y     <NUM> |
  153.                     end_z     <NUM> |
  154.                     <CINFO>
  155.  
  156.   <CIRCLE_PAT>    = radius    <NUM>
  157.                     <CINFO>
  158.  
  159.   <POLY_PATT>     = <CINFO> |
  160.                     ( POINT '(' <NUM>, <NUM> ')'  )+
  161.  
  162.   <POSITION>      = LOC      <VECTOR> |
  163.                     POS      <VECTOR> |
  164.                     LOCATION <VECTOR> |
  165.                     POSITION <VECTOR>
  166.  
  167.   <CINFO>         = <AMB>          |
  168.                     <DIFF>         |
  169.                     <TRANS>        |
  170.                     <DENSITY>      |
  171.                     <MIRROR>       |
  172.                     fuzz     <INT> |
  173.                     index    <NUM> |
  174.                     dither   <INT> |
  175.                     sreflect <NUM> |
  176.                     reflect  <NUM>
  177.  
  178.   <AMB>           = amb     <COLOR_TRIPLE>
  179.  
  180.   <DIFF>          = diff    <COLOR_TRIPLE>
  181.  
  182.   <TRANS>         = trans   <COLOR_TRIPLE>
  183.  
  184.   <MIRROR>        = mirror  <COLOR_TRIPLE>
  185.  
  186.   <DENSITY>       = density <COLOR_TRIPLE>
  187.  
  188.   <COLOR_TRIPLE>  = '(' <NUM>, <NUM>, <NUM> ')'
  189.  
  190.   <VECTOR>        = '(' <NUM>, <NUM>, <NUM> ')'
  191.  
  192.   <NUM>           =   <INT>         |
  193.                     - <INT>         |
  194.                       <INT> . <INT> |
  195.                     - <INT> . <INT>
  196.  
  197.   <INT>           = <DIGIT>+
  198.  
  199.   <DIGIT>         = 0|1|2|3|4|5|6|7|8|9
  200.  
  201.   <STRING>        = ( <ALPHA> | <DIGIT> )+
  202.  
  203.   <ALPHA>         = a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|
  204.                     q|r|s|t|u|v|w|x|y|z|_|*|-
  205.  
  206.   <EMPTY>         =
  207.