Expressionの文法
Tue, 10 Aug 2010 23:10:07 JST
09 Nov 2006-
式の文法的な解釈についてです。
文法
LOGICAL_OP = <<&&|\|\||and|or>>
COMP_OP = <<>|>=|<|<=|==|!=>>
ARITH1_OP = <<\+|\->>
ARITH2_OP = <<\*|\/>>
NUMBER = <<\-?[0-9]+(\.[0-9]+)?>>
IDENTIFIER = <<[a-zA-Z][a-zA-Z0-9_]*>>
WHITESPACE = <<[ \t\n\r]+>> %ignore%
root = expr;
expr = l_expr (LOGICAL_OP l_expr)*;
l_expr = v_expr (COMP_OP v_expr)?; //logical
v_expr = t_expr (ARITH1_OP t_expr)*; //value
t_expr = f_expr (ARITH2_OP f_expr)*; //term
f_expr = "(" expr ")" | term; //factor
term = function | constant | parameter;
function = IDENTIFIER "(" l_expr_list? ")";
l_expr_list = l_expr ("," l_expr_list)?;
constant = NUMBER;
parameter = "{" NUMBER "}";
解説
式
- 式 論理演算子 式
- 式 比較演算子 式
- 式 算術演算子 式
- "(" 式 ")"
- 関数
- 定数
- パラメータ
を組み合わせて表現します。
論理演算子は、&& || and orの4種類です。
比較演算子は、> >= < <= == != の6種類です。
算術演算子は、+ - * / の4種類です。
演算子は、以下の順で優先されます。
- ()
- * /
- + -
- > >= < <= == !=
- && || and or
関数
関数名(引数)
になります。
関数名は、英字で始まり、英数字と"_"を続けることができます。
引数には、任意の個数の式を","で区切って記述できます。引数の個数が1つの場合には、","は使いません。引数を省略するときは、"()"となります。
定数
浮動小数点数です。
100 100.123 -100 -100.123
などになります。
+100のように正の数の場合に+を指定することはできません。
1以下の少数を.5のように0を省略することはできません。
100. のように .で終わることはできません。
1E3のような指数表現はできません。
パラメータ
{ 数値 }
で表します。
意味的制約により、数値は0以上の整数になります。
コメント
Counter: 2236,
today: 1,
yesterday: 0