X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.spreadsheet.common%2Fsrc%2Fexpression.sablecc3;h=70263731a9afae5161010a492e23a366c6f9407d;hp=d003ac11db0b445b2d7607becd2733ea2fef9d37;hb=0ae2b770234dfc3cbb18bd38f324125cf0faca07;hpb=24e2b34260f219f0d1644ca7a138894980e25b14 diff --git a/bundles/org.simantics.spreadsheet.common/src/expression.sablecc3 b/bundles/org.simantics.spreadsheet.common/src/expression.sablecc3 index d003ac11d..70263731a 100644 --- a/bundles/org.simantics.spreadsheet.common/src/expression.sablecc3 +++ b/bundles/org.simantics.spreadsheet.common/src/expression.sablecc3 @@ -1,84 +1,84 @@ -Package org.simantics.spreadsheet.common.expression; - -Helpers - letter = [['A'..'Z'] + ['a'..'z']]; - digit = ['0'..'9']; - cr = 13; - lf = 10; - not_cr_lf = [[32..127] - [cr + lf]]; - - harmless_char = [[32..127] - [''' + ['"' + '\']]]; - - sq_str_char = harmless_char | '"'; - dq_str_char = harmless_char | '''; - - sq_str_char_sequence = sq_str_char+; - dq_str_char_sequence = dq_str_char+; - - single_quote_string = ''' sq_str_char_sequence? '''; - double_quote_string = '"' dq_str_char_sequence? '"'; - -Tokens - less_than = '<'; - greater_than = '>'; - equal = '='; - - plus = '+'; - minus = '-'; - mult = '*'; - div = '/'; - ampersand = '&'; - - comma = ','; - colon = ':'; - - l_par = '('; - r_par = ')'; - - func = letter (letter | digit)* '('; - cell = '_'? letter+ digit+; - number = digit+ '.'* digit*; - string = single_quote_string | double_quote_string; - - new_line = cr | lf | cr lf; - - blank = ' '*; - -Ignored Tokens - blank; - -Productions - - expression = - {mult} multiplicative | - {plus} [left]:expression plus [right]:multiplicative | - {minus} expression minus multiplicative; - - multiplicative = - {unary} unary | - {mult} [left]:multiplicative mult [right]:unary | - {div} [left]:multiplicative div [right]:unary; - - unary = - {primary} primary | - {unaryplus} plus unary | - {unaryminus} minus unary; - - arg_list = - {single} expression | - {sequence} arg_list comma expression; - - primary = - {value} value | - {function} func arg_list? r_par; - - range = - {single} cell | - {multi} [left]:cell colon [right]:cell; - - value = - {string} string | - {constant} number | - {range} range | - {address} ampersand range | - {expr} l_par expression r_par; +Package org.simantics.spreadsheet.common.expression; + +Helpers + letter = [['A'..'Z'] + ['a'..'z']]; + digit = ['0'..'9']; + cr = 13; + lf = 10; + not_cr_lf = [[32..127] - [cr + lf]]; + + harmless_char = [[32..127] - [''' + ['"' + '\']]]; + + sq_str_char = harmless_char | '"'; + dq_str_char = harmless_char | '''; + + sq_str_char_sequence = sq_str_char+; + dq_str_char_sequence = dq_str_char+; + + single_quote_string = ''' sq_str_char_sequence? '''; + double_quote_string = '"' dq_str_char_sequence? '"'; + +Tokens + less_than = '<'; + greater_than = '>'; + equal = '='; + + plus = '+'; + minus = '-'; + mult = '*'; + div = '/'; + ampersand = '&'; + + comma = ','; + colon = ':'; + + l_par = '('; + r_par = ')'; + + func = letter (letter | digit)* '('; + cell = '_'? letter+ digit+; + number = digit+ '.'* digit*; + string = single_quote_string | double_quote_string; + + new_line = cr | lf | cr lf; + + blank = ' '*; + +Ignored Tokens + blank; + +Productions + + expression = + {mult} multiplicative | + {plus} [left]:expression plus [right]:multiplicative | + {minus} expression minus multiplicative; + + multiplicative = + {unary} unary | + {mult} [left]:multiplicative mult [right]:unary | + {div} [left]:multiplicative div [right]:unary; + + unary = + {primary} primary | + {unaryplus} plus unary | + {unaryminus} minus unary; + + arg_list = + {single} expression | + {sequence} arg_list comma expression; + + primary = + {value} value | + {function} func arg_list? r_par; + + range = + {single} cell | + {multi} [left]:cell colon [right]:cell; + + value = + {string} string | + {constant} number | + {range} range | + {address} ampersand range | + {expr} l_par expression r_par;