|

楼主 |
发表于 2009-2-6 14:29
|
显示全部楼层
1. TRANSLATION-UNIT --> FORMULA
2. FORMULA --> SCALAR-FORMULA
3. FORMULA --> ARRAY-FORMULA
4. SCALAR-FORMULA --> '=' PRIMARY-EXPRESSION
5. ARRAY-FORMULA --> '=' '{' PRIMARY-EXPRESSION '}'
6. PRIMARY-EXPRESSION --> EXPRESSION | '(' EXPRESSION ')'
7. EXPRESSION --> LOGICAL-EXPRESSION
8. LOGICAL-EXPRESSION --> CONCAT-EXPRESSION|
LOGICAL-EXPRESSION '='
CONCAT-EXPRESSION |
LOGICAL-EXPRESSION '<'
CONCAT-EXPRESSION |
LOGICAL-EXPRESSION '<='
CONCAT-EXPRESSION |
LOGICAL-EXPRESSION '>'
CONCAT-EXPRESSION |
LOGICAL-EXPRESSION '>='
CONCAT-EXPRESSION |
LOGICAL-EXPRESSION '<>'
CONCAT-EXPRESSION |
LOGICAL-EXPRESSION '!='
CONCAT-EXPRESSION
9. CONCAT-EXPRESSION --> ADDITIVE-EXPRESSION |CONCAT-EXPRESSION '&'ADDITIVE-EXPRESSION
10. ADDITIVE-EXPRESSION --> MULTIPLICATIVE-EXPRESSION|
ADDITIVE-EXPRESSION '+'
MULTIPLICATIVE-EXPRESSION |
ADDITIVE-EXPRESSION '-'
MULTIPLICATIVE-EXPRESSION
11. MULTIPLICATIVE-EXPRESSION --> EXPONENTIATION-EXPRESSION|
MULTIPLICATIVE-EXPRESSION '*'
EXPONENTIATION-EXPRESSION |
MULTIPLICATIVE-EXPRESSION '/'
EXPONENTIATION-EXPRESSION
12. EXPONENTIATION-EXPRESSION --> PERCENT-EXPRESSION |
EXPONENTIATION-EXPRESSION '^'
PERCENT-EXPRESSION
13. PERCENT-EXPRESSION --> UNARY-EXPRESSION |PERCENT-EXPRESSION '%'
14. UNARY-EXPRESSION --> UNARY-OPERATOR UNARY-EXPRESSION |UNION-EXPRESSION
15. UNION-EXPRESSION --> INTERSECTION-EXPRESSION |UNION-EXPRESSION ','
INTERSECTION-EXPRESSION
16. INTERSECTION-EXPRESSION --> REFERENCE-EXPRESSION |
INTERSECTION-EXPRESSION ' '
REFERENCE-EXPRESSION
17. REFERENCE-EXPRESSION --> '(' EXPRESSION ')' |
PRIMITIVE |
CONST-ARRAY |
REFERENCE |
R1C1-REFERENCE |
FUNCTION-CALL
18. REFERENCE --> REFERENCE-PREFIX AREA-REFERENCE |REFERENCE-PREFIX CELL
19. REFERENCE-PREFIX --> WORKBOOK | *** | e
20. WORKBOOK --> WORKBOOK-NAME ***
21. WORKBOOK-NAME --> '[workbook_path/filename.xls]' |'strsq'
22. SHEET --> SHEETNAME '!'
23. SHEETNAME --> IDENTIFIER | 'strsq'
24. AREA-REFERENCE --> RANGE | VECTOR | INTERSECTION |UNION
25. RANGE --> CELL ':' CELL | *** : CELL
26. VECTOR --> COLUMN-RANGE | ROW-RANGE
27. COLUMN-RANGE --> COLUMN ':' COLUMN
28. ROW-RANGE --> ROW ':' ROW
29. INTERSECTION --> AREA-REFERENCE ' ' AREA-REFERENCE
30. UNION --> AREA-REFERENCE ',' AREA-REFERENCE
31. CELL --> ABSOLUTE-REF-OPT COLUMN-OPT ABSOLUTE-REF-OPT ROW-OPT
32. ABSOLUTE-REF-OPT --> '$' | e
33. COLUMN-OPT --> COLUMN | e
34. COLUMN --> 'column-designator' //[A-Z] | [A-H][A-Z] | I[A-Z]
35. ROW-OPT --> ROW | e
36. ROW --> 'int' // [1...65536]
37. R1C1-REFERENCE --> R1C1-REF-ROW R1C1-REF-COL
38. R1C1-REF-COL --> 'C' R1C1-REF-OFFSET | 'C' | e
39. R1C1-REF-ROW --> 'R' R1C1-REF-OFFSET
40. R1C1-REF-OFFSET --> '[' '-' 'int' ']' | '[' '+' 'int'']' | '[' 'int' ']' | 'int' | e
41. CONST-ARRAY --> '{' ARRAY-ELEMENT-LIST-OPT '}'
42. ARRAY-ELEMENT-LIST-OPT --> ARRAY-ELEMENT-LIST | e
43. ARRAY-ELEMENT-LIST --> ARRAY-ELEMENT|
ARRAY-ELEMENT-LIST ','
ARRAY-ELEMENT |
ARRAY-ELEMENT-LIST ';'
ARRAY-ELEMENT
44. ARRAY-ELEMENT --> PRIMITIVE |
ERROR-ZERO |
ERROR-NOT-AVAILABLE |
ERROR-UNKNOWN-NAME |
ERROR-NULL |
ERROR-NUM |
ERROR-REF |
ERROR-VALUE |
ERROR-TOO-LONG |
e
45. FUNCTION-CALL --> FUNC-NAME-PREFIX-OPT IDENTIFIER '('
ARGUMENT-LIST-OPT ')'
46. FUNC-NAME-PREFIX-OPT --> FUNC-NAME-PREFIX | e
47. ARGUMENT-LIST-OPT --> ARGUMENT-LIST | e
48. ARGUMENT-LIST --> ARGUMENT | ARGUMENT-LIST ','ARGUMENT
49. ARGUMENT --> PRIMARY-EXPRESSION | e
50. PRIMITIVE --> UNARY-OPERATOR-OPT INTEGER |
UNARY-OPERATOR-OPT FLOAT | BOOLEAN | STRING | IDENTIFIER | ERROR
51. INTEGER --> 'int'
52. FLOAT --> 'float'
53. BOOLEAN --> 'TRUE' | 'FALSE'
54. STRING --> 'strsq' | 'strdq' // single and double quoted
55. UNARY-OPERATOR-OPT --> UNARY-OPERATOR | e
56. UNARY-OPERATOR --> '+' | '-'
57. ERROR --> '#DIV/0!' | '#N/A' | '#NAME?' |'#NULL!' | '#NUM!' | '#REF!' | '#VALUE!' | '#####' |
|