検索

Google
Web www.icefree.org

RSS of recent changes

 

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