式の構文

式は,定数,項目参照 (項目の値),関数呼出し,演算子などで構成されます。式の全体構成を理解しやすいように,式の構文をBNF記法で示します。BNF記法については構文の記述法で説明しています。


<式リスト> ::= <式> [ , <式> ]...

<> ::= <単純式>
| <比較式>
| <論理式>
| <代入式>

<単純式> ::= <文字列式>
| <算術式>
| <日付式>
| <時刻式>
| <年月間隔式>
| <日時間隔式>
| <カーソル式>
| <キーワード式>
| <ポインタ式>

<文字列式> ::= <文字列一次子>
| <文字列式> <連結演算子> <文字列一次子>
| <文字列式> <差分演算子> <文字列一次子>

<文字列一次子> ::= <文字列定数>
| <項目参照>
| <オブジェクト参照>
| <変数参照>
| <関数呼出し>
| <ナル>
| ( [ <式リスト> , ] <文字列式> )

<連結演算子> ::= + | ||

<差分演算子> ::= -

<算術式> ::= <算術項>
| <算術式> <加法演算子> <算術項>

<算術項> ::= <算術因子>
| <算術項> <乗法演算子> <算術因子>
| <年月間隔項> <除算演算子> <年月間隔因子>
| <日時間隔項> <除算演算子> <日時間隔因子>

<算術因子> ::= [ <単項演算子> ] <算術一次子>

<算術一次子> ::= <算術定数>
| <項目参照>
| <オブジェクト参照>
| <変数参照>
| <関数呼出し>
| <ナル>
| ( [ <式リスト> , ] <算術式> )

<加法演算子> ::= + | -

<乗法演算子> ::= <乗算演算子>
| <除算演算子>
| <剰余演算子>

<乗算演算子> ::= * | ×

<除算演算子> ::= / | ÷

<剰余演算子> ::= MOD

<単項演算子> ::= + | -

<日付式> ::= <日付一次子>
| <日付式> <加法演算子> <年月間隔項>
| <日付式> <加法演算子> <日時間隔項>

<日付一次子> ::= <日付定数>
| <項目参照>
| <オブジェクト参照>
| <変数参照>
| <関数呼出し>
| <ナル>
| ( [ <式リスト> , ] <日付式> )

<時刻式> ::= <時刻一次子>
| <時刻式> <加法演算子> <日時間隔項>

<時刻一次子> ::= <時刻定数>
| <項目参照>
| <オブジェクト参照>
| <変数参照>
| <関数呼出し>
| <ナル>
| ( [ <式リスト> , ] <時刻式> )

<年月間隔式> ::= <年月間隔項>
| <年月間隔式> <加法演算子> <年月間隔項>
| <日付式> <時間隔演算子> <日付一次子>

<年月間隔項> ::= <年月間隔因子>
| <年月間隔項> <乗法演算子> <算術因子>
| <年月間隔項> <剰余演算子> <年月間隔因子>
| <年月間隔項> <剰余演算子> <算術因子>

<年月間隔因子> ::= [ <単項演算子> ] <年月間隔一次子>

<年月間隔一次子> ::= <年月間隔定数>
| <項目参照>
| <オブジェクト参照>
| <変数参照>
| <関数呼出し>
| <ナル>
| ( [ <式リスト> , ] <年月間隔式> )

<日時間隔式> ::= <日時間隔項>
| <日時間隔式> <加法演算子> <日時間隔項>
| <時刻式> <時間隔演算子> <時刻一次子>

<日時間隔項> ::= <日時間隔因子>
| <日時間隔項> <乗法演算子> <算術因子>
| <日時間隔項> <剰余演算子> <日時間隔因子>
| <日時間隔項> <剰余演算子> <算術因子>

<日時間隔因子> ::= [ <単項演算子> ] <日時間隔一次子>

<日時間隔一次子> ::= <日時間隔定数>
| <項目参照>
| <オブジェクト参照>
| <変数参照>
| <関数呼出し>
| <ナル>
| ( [ <式リスト> , ] <日時間隔式> )

<時間隔演算子> ::= -

<カーソル式> ::= <カーソル一次子>

<カーソル一次子> ::= <カーソル名>
| <変数参照>
| <関数呼出し>
| <ナル>
| ( [ <式リスト> , ] <カーソル式> )

<キーワード式> ::= <キーワード定数>
| <変数参照>
| <関数呼出し>
| <ナル>

<ポインタ式> ::= <ポインタ項>
| <ポインタ式> <加法演算子> <算術項>
| <ポインタ式> <減算演算子> <算術項>
| <ポインタ式> <減算演算子> <ポインタ項>

<ポインタ項> ::= <変数参照>
| <関数呼出し>
| <ナル>

<比較式> ::= <文字列比較式>
| <算術比較式>
| <日付比較式>
| <時刻比較式>
| <年月間隔比較式>
| <日時間隔比較式>
| <キーワード比較式>
| <ポインタ比較式>

<文字列比較式> ::=
<文字列式> <文字列比較演算子> <文字列式> [ <文字列比較演算子> <文字列式> ]

<算術比較式> ::=
<算術式> <算術比較演算子> <算術式> [ <算術比較演算子> <算術式> ]

<日付比較式> ::=
<日付式> <日付比較演算子> <日付式> [ <日付比較演算子> <日付式> ]

<時刻比較式> ::=
<時刻式> <時刻比較演算子> <時刻式> [ <時刻比較演算子> <時刻式> ]

<年月間隔比較式> ::=
<年月間隔式> <年月間隔比較演算子> <年月間隔式> [ <年月間隔比較演算子> <年月間隔式> ]

<日時間隔比較式> ::=
<日時間隔式> <日時間隔比較演算子> <日時間隔式> [ <日時間隔比較演算子> <日時間隔式> ]

<キーワード比較式> ::=
<キーワード式> <等値比較演算子> <キーワード式>

<ポインタ比較式> ::=
<ポインタ式> <ポインタ比較演算子> <ポインタ式> [ <ポインタ比較演算子> <ポインタ式> ]

<文字列比較演算子> ::= <大小比較演算子>
| <辞書順比較演算子>
| <基本つづり比較演算子>

<等値比較演算子> ::= = | <> | >< |

<大小比較演算子> ::= <等値比較演算子> | < | > | <= | =< | | >= | => |

<辞書順比較演算子> ::= << | >> | <<= | =<< | ≦≦ | >>= | =>> | ≧≧

<基本つづり比較演算子> ::= <=> |

<算術比較演算子> ::= <大小比較演算子>

<日付比較演算子> ::= <大小比較演算子>

<時刻比較演算子> ::= <大小比較演算子>

<年月間隔比較演算子> ::= <大小比較演算子>

<日時間隔比較演算子> ::= <大小比較演算子>

<ポインタ比較演算子> ::= <大小比較演算子>

<論理式> ::= <論理項>
| <論理式> OR <論理項>

<論理項> ::= <論理因子>
| <論理項> AND <論理因子>

<論理因子> ::= [ NOT ] <論理一次子>

<論理一次子> ::= <単純式>
| <比較式>
| ( <式リスト> )

<代入式> ::= <左辺> := <式>

<左辺> ::= <変数参照>
| <項目参照>
| <オブジェクト参照>
| <カーソル名>

<項目参照> ::= <項目名>
| [ <表修飾子> ] . <項目名>
| <カーソル名> . <項目名>

<表修飾子> ::= <表名>
| " <表名> "
| ' <表名> '

<オブジェクト参照> ::= <オブジェクト名> (データオブジェクト/式オブジェクトのみ)
| [ <表修飾子> ] . <オブジェクト名>
| <カーソル名> . <オブジェクト名>

<変数参照> ::= <変数名>
| <システム変数名>

<関数呼出し> ::= <関数名> [ ( [ <実引数> ] [ , [ <実引数> ] ]... ) ]

<実引数> ::= <式>

<表名> ::= (表ファイル名/拡張子の省略可)

<項目名> ::= <通常識別子>
| <区切り識別子>

<オブジェクト名> ::= <通常識別子>
| <区切り識別子>

<変数名> ::= $ <通常識別子>

<システム変数名> ::= $$ <通常識別子>

<カーソル変数名> ::= @ <通常識別子>

<カーソル名> ::= <カーソル変数名>
| @@

<関数名> ::= # <通常識別子>

<ラベル名> ::= <通常識別子>

<手続き名> ::= <通常識別子>

<通常識別子> ::= (英字,仮名,漢字,下線で始まる英仮名漢字下線数字列)

<区切り識別子> ::= [ (角括弧を除く文字列) ]
| " (二重引用符および角括弧を除く文字列) "

<文字列定数> ::= ' [ <文字> ]... '
| ` [ <文字> ]... `

<文字> ::= <漢字符号系文字>
| <8単位符号系文字>
| <エスケープ文字>

<漢字符号系文字> ::= (JIS X 0208 区点 1-1 〜 94-94 の文字)

<8単位符号系文字> ::= (JIS X 0201 位置 2/0〜7/14 および 10/0〜13/15 の文字)

<エスケープ文字> ::= !n | !t | !' | !’ | !! | !` (ここでは半角/全角区別されます)

<算術定数> ::= <十進数定数>
| <十六進数定数>
| <八進数定数>
| <二進数定数>
| <数値定数>
| <ビット定数>

<十進数定数> ::= <真数定数>
| <概数定数>

<真数定数> ::= <数字>...[ . [ <数字> ]...]
| . <数字>...

<概数定数> ::= <仮数部> E <指数部>

<仮数部> ::= <真数定数>

<指数部> ::= [ + | - ] <数字>...

<数字> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

<十六進数定数> ::= X ' <十六進数字>... '

<十六進数字> ::= <数字> | A | B | C | D | E | F (小文字でもよい)

<八進数定数> ::= O ' <八進数字>... '

<八進数字> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7

<二進数定数> ::= B ' <二進数字>... '

<二進数字> ::= 0 | 1

<数値定数> ::= NUM ' <数値文字列> '
| 数値 ' <数値文字列> '

<数値文字列> ::= (数値の入力を参照してください)

<ビット定数> ::=
BIT1 | BIT2 | BIT3 | BIT4 | BIT5 | BIT6 | BIT7 | BIT8 | BIT9 | BIT10 | BIT11 | BIT12 | BIT13 | BIT14 | BIT15 | BIT16 | BIT17 | BIT18 | BIT19 | BIT20 | BIT21 | BIT22 | BIT23 | BIT24 | BIT25 | BIT26 | BIT27 | BIT28 | BIT29 | BIT30 | BIT31 | BIT32

<日付定数> ::= DATE ' <日付文字列> '
| 日付 ' <日付文字列> '

<日付文字列> ::= (日付の入力を参照してください)

<時刻定数> ::= TIME' <時刻文字列> '
| 時刻 ' <時刻文字列> '

<時刻文字列> ::= (時刻の入力を参照してください)

<年月間隔定数> ::= YMINTERVAL ' <年月間隔文字列> '
| YMI ' <年月間隔文字列> '
| 年月間隔 ' <年月間隔文字列> '

<年月間隔文字列> ::= (年月間隔の入力を参照してください)

<日時間隔定数> ::= DTINTERVAL' <日時間隔文字列> '
| DTI' <日時間隔文字列> '
| 日時間隔' <日時間隔文字列> '

<日時間隔文字列> ::= (日時間隔の入力を参照してください)

<キーワード定数> ::= KEYWORD ' <キーワード> '

<キーワード> ::= <通常識別子>

<ナル> ::= NULL

関連項目

→DPLの構文
→構文の記述法