1*c966c276SAndrew Rist# *************************************************************
2*c966c276SAndrew Rist#
3*c966c276SAndrew Rist#  Licensed to the Apache Software Foundation (ASF) under one
4*c966c276SAndrew Rist#  or more contributor license agreements.  See the NOTICE file
5*c966c276SAndrew Rist#  distributed with this work for additional information
6*c966c276SAndrew Rist#  regarding copyright ownership.  The ASF licenses this file
7*c966c276SAndrew Rist#  to you under the Apache License, Version 2.0 (the
8*c966c276SAndrew Rist#  "License"); you may not use this file except in compliance
9*c966c276SAndrew Rist#  with the License.  You may obtain a copy of the License at
10*c966c276SAndrew Rist#
11*c966c276SAndrew Rist#    http://www.apache.org/licenses/LICENSE-2.0
12*c966c276SAndrew Rist#
13*c966c276SAndrew Rist#  Unless required by applicable law or agreed to in writing,
14*c966c276SAndrew Rist#  software distributed under the License is distributed on an
15*c966c276SAndrew Rist#  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*c966c276SAndrew Rist#  KIND, either express or implied.  See the License for the
17*c966c276SAndrew Rist#  specific language governing permissions and limitations
18*c966c276SAndrew Rist#  under the License.
19*c966c276SAndrew Rist#
20*c966c276SAndrew Rist# *************************************************************
21*c966c276SAndrew Rist
22cdf0e10cSrcweirBased on the C grammar for arithmetic expressions
23cdf0e10cSrcweir=================================================
24cdf0e10cSrcweir
25cdf0e10cSrcweirnumber_digit = '0'|'1'|'2'|'3'|'4'|'5'|'6'|'7'|'8'|'9'
26cdf0e10cSrcweir
27cdf0e10cSrcweirnumber_exponent = 'e'|'E'
28cdf0e10cSrcweir
29cdf0e10cSrcweirbasic_number = basic_number number_digit | number_digit
30cdf0e10cSrcweir
31cdf0e10cSrcweirnumber =
32cdf0e10cSrcweir	   basic_number |
33cdf0e10cSrcweir
34cdf0e10cSrcweir	   basic_number number_exponent basic_number |
35cdf0e10cSrcweir	   basic_number number_exponent '-' basic_number |
36cdf0e10cSrcweir	   basic_number number_exponent '+' basic_number |
37cdf0e10cSrcweir
38cdf0e10cSrcweir	   '.' basic_number number_exponent basic_number |
39cdf0e10cSrcweir	   '.' basic_number number_exponent '-' basic_number |
40cdf0e10cSrcweir	   '.' basic_number number_exponent '+' basic_number |
41cdf0e10cSrcweir
42cdf0e10cSrcweir	   basic_number '.' number_exponent basic_number |
43cdf0e10cSrcweir	   basic_number '.' number_exponent '-' basic_number |
44cdf0e10cSrcweir	   basic_number '.' number_exponent '+' basic_number |
45cdf0e10cSrcweir
46cdf0e10cSrcweir	   basic_number '.' basic_number number_exponent basic_number |
47cdf0e10cSrcweir	   basic_number '.' basic_number number_exponent '-' basic_number |
48cdf0e10cSrcweir	   basic_number '.' basic_number number_exponent '+' basic_number
49cdf0e10cSrcweir
50cdf0e10cSrcweir
51cdf0e10cSrcweiridentifier = '$'|'pi'|'e'|'X'|'Y'|'Width'|'Height'
52cdf0e10cSrcweir              ^            ^   ^     ^       ^
53cdf0e10cSrcweir              |            |   |     |       |
54cdf0e10cSrcweir	 '$' in PPT            |   |     |       |
55cdf0e10cSrcweir			 '#ppt_x' in PPT   |     |       |
56cdf0e10cSrcweir			     '#ppt_y' in PPT     |       |
57cdf0e10cSrcweir				       '#ppt_w' in PPT       |
58cdf0e10cSrcweir                               '#ppt_h' in PPT
59cdf0e10cSrcweir
60cdf0e10cSrcweirunary_function = 'abs'|'sqrt'|'sin'|'cos'|'tan'|'atan'|'acos'|'asin'|'exp'|'log'
61cdf0e10cSrcweirbinary_function = 'min'|'max'
62cdf0e10cSrcweir
63cdf0e10cSrcweir
64cdf0e10cSrcweirbasic_expression =
65cdf0e10cSrcweir				 number |
66cdf0e10cSrcweir				 identifier |
67cdf0e10cSrcweir				 unary_function '(' additive_expression ')' |
68cdf0e10cSrcweir				 binary_function '(' additive_expression ',' additive_expression ')' |
69cdf0e10cSrcweir				 '(' additive_expression ')'
70cdf0e10cSrcweir
71cdf0e10cSrcweirunary_expression = '-' basic_expression
72cdf0e10cSrcweir
73cdf0e10cSrcweirmultiplicative_expression =
74cdf0e10cSrcweir						  basic_expression |
75cdf0e10cSrcweir						  multiplicative_expression '*' basic_expression |
76cdf0e10cSrcweir						  multiplicative_expression '/' basic_expression
77cdf0e10cSrcweir
78cdf0e10cSrcweiradditive_expression =
79cdf0e10cSrcweir					multiplicative_expression |
80cdf0e10cSrcweir					additive_expression '+' multiplicative_expression |
81cdf0e10cSrcweir					additive_expression '-' multiplicative_expression
82cdf0e10cSrcweir
83