1 Package org.simantics.spreadsheet.common.expression;
\r
4 letter = [['A'..'Z'] + ['a'..'z']];
\r
8 not_cr_lf = [[32..127] - [cr + lf]];
\r
10 harmless_char = [[32..127] - [''' + ['"' + '\']]];
\r
12 sq_str_char = harmless_char | '"';
\r
13 dq_str_char = harmless_char | ''';
\r
15 sq_str_char_sequence = sq_str_char+;
\r
16 dq_str_char_sequence = dq_str_char+;
\r
18 single_quote_string = ''' sq_str_char_sequence? ''';
\r
19 double_quote_string = '"' dq_str_char_sequence? '"';
\r
38 func = letter (letter | digit)* '(';
\r
39 cell = '_'? letter+ digit+;
\r
40 number = digit+ '.'* digit*;
\r
41 string = single_quote_string | double_quote_string;
\r
43 new_line = cr | lf | cr lf;
\r
53 {mult} multiplicative |
\r
54 {plus} [left]:expression plus [right]:multiplicative |
\r
55 {minus} expression minus multiplicative;
\r
59 {mult} [left]:multiplicative mult [right]:unary |
\r
60 {div} [left]:multiplicative div [right]:unary;
\r
64 {unaryplus} plus unary |
\r
65 {unaryminus} minus unary;
\r
68 {single} expression |
\r
69 {sequence} arg_list comma expression;
\r
73 {function} func arg_list? r_par;
\r
77 {multi} [left]:cell colon [right]:cell;
\r
83 {address} ampersand range |
\r
84 {expr} l_par expression r_par;
\r