DPLの構文

DPLの構文をBNF記法で示します。ただし,個々のステートメントの形式は,それぞれの項目(DPLステートメント一覧)を参照してください。また,式その他の構成要素の構文については,式の構文を参照してください。BNF記法については構文の記述法で説明しています。

ここではテキストファイルとしてのDPLファイルの形を示します。DPL作成ウィンドウでDPLファイルを作成する場合,ステートメントの最後のセミコロン ; ,<行末注釈> および先頭の --- はDPL作成ウィンドウが自動的に補うので不要です。


プログラムとステートメント

<プログラム> ::= <ブロック>

<ブロック> ::= [ <注釈行> | <行末注釈> | <ラベル> | <ステートメント> ]...

<注釈行> ::= -- [ <文字> ]... <改行>

<行末注釈> ::= --- [ <文字> ]... <改行>

<ラベル> ::= <ラベル名> :

<ステートメント> ::= <宣言ステートメント>
| <構造ステートメント>
| <制御ステートメント>
| <式ステートメント>
| <コマンドステートメント>

<注釈行> も <行末注釈> も,どちらも -- から改行までの文字が無視されるというだけで,DPLファイル中での意味は同じです。DPL作成ウィンドウに読み込んだときに,<注釈行>は構造項目に読み込まれ,<行末注釈>は注釈項目に読み込まれるという違いがあります。また,実際には注釈をステートメントの途中(文字列定数中や識別子中を除く)に書いても構いません。その場合も,-- から改行までが無視されます。

宣言ステートメント

<宣言ステートメント> ::= <変数宣言ステートメント>
| <PROCEDUREステートメント>
| <CARDPROCEDUREステートメント>
| <REGISTERROUTINEステートメント>

<変数宣言ステートメント> ::= <LOCALステートメント>
| <GLOBALステートメント>

<LOCALステートメント> ::= LOCAL <変数> [ , <変数> ]... ;

<GLOBALステートメント> ::= GLOBAL <変数> [ , <変数> ]... ;

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

<PROCEDUREステートメント> ::=
PROCEDURE <手続き名>[ ( <仮引数>[ , <仮引数> ]... ) ] DO <ブロック> ENDPROCEDURE

<仮引数> ::= <変数>

<CARDPROCEDUREステートメント> ::=
CARDPROCEDURE <手続き名> DO [ <カード手続き本体> ]... ENDCARDPROCEDURE

<カード手続き本体> ::= ON <オブジェクト名> DO <ブロック>
| ON DEFAULT [ DO ] <ブロック>

<REGISTERROUTINEステートメント> ::=
REGISTERROUTINE <DLL名> , <DLL関数名> [ , <DLL関数仕様> [ , <DLL関数別名> ] ] ;

<DLL 名> ::= <文字列定数式>

<DLL 関数名> ::= <文字列定数式> | <算術定数式>

<DLL 関数仕様> ::= <文字列定数式>

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

<文字列定数式> ::= <文字列式>

<算術定数式> ::= <算術式>

構造ステートメント

<構造ステートメント> ::= <IFステートメント>
| <SWITCHステートメント>
| <FORステートメント>
| <WHILEステートメント>
| <REPEATステートメント>

<IFステートメント> ::=
IF <論理式> THEN <ブロック> [ ELSEIF <論理式> THEN <ブロック> ]... [ ELSE <ブロック>] ENDIF

<SWITCHステートメント> ::=
SWITCH [ <単純式> ] [ CASE <単純式> DO <ブロック> ]... [ DEFAULT [ DO ] <ブロック> ] ENDSWITCH

<FORステートメント> ::=
FOR [ <変数名> [ FROM <始値式> ] [ TO <終値式> | DOWNTO <終値式> ] [ STEP <刻み値式> ] ] DO <ブロック> ENDFOR

<始値式> ::= <単純式>

<終値式> ::= <単純式>

<刻み値式> ::= <単純式>

<WHILEステートメント> ::= WHILE [ <論理式> ] DO <ブロック> ENDWHILE

<REPEATステートメント> ::= REPEAT <ブロック> UNTIL [ <論理式> ] ;

制御ステートメント

<制御ステートメント> ::= <GOTOステートメント>
| <CALLステートメント>
| <NEXTLOOPステートメント>
| <EXITLOOPステートメント>
| <EXITSWITCHステートメント>
| <RETURNステートメント>
| <STOPステートメント>

<GOTOステートメント> ::= GOTO <ラベル名> ;

<CALLステートメント> ::= CALL <手続き名> [ ( [ <実引数> ] [ , [ <実引数> ] ]... ) ] ;

<NEXTLOOPステートメント> ::= NEXTLOOP ;

<EXITLOOPステートメント> ::= EXITLOOP ;

<EXITSWITCHステートメント> ::= EXITSWITCH ;

<RETURNステートメント> ::= RETURN [ <式> ] ;

<STOPステートメント> ::= STOP ;

式ステートメント

<式ステートメント> ::= <式> ;

コマンドステートメント

<コマンドステートメント> ::=
<コマンド名> [ <カーソル名> , ] [ <キーワードパラメータ> [ , <キーワードパラメータ> ]... ] ;
| <コマンド名> [ <カーソル名> , ] [ <順序パラメータ> ] [ , [ <順序パラメータ> ] ]... [ , <キーワードパラメータ> ]... ;

<コマンド名> ::= <通常識別子>

<キーワードパラメータ> ::= <キーワード> = <単純パラメータ>

<単純パラメータ> ::= <単純式> | <キーワード>

<順序パラメータ> ::= <単純パラメータ>

<コマンドステートメント>は,機能別に以下のように分類されています。個々のステートメントの構文は,各ステートメントごとの「形式」を参照してください。→DPLステートメント一覧

宣言ステートメント
構造ステートメント
制御ステートメント
実行関連ステートメント
代入ステートメント
式ステートメント
ファイル操作関連ステートメント
レコード操作関連ステートメント
探索関連ステートメント
表操作関連ステートメント
表示関連ステートメント
その他のステートメント

一般的に,<コマンドステートメント> の <キーワードパラメータ> は,自由な順序で書くことができます。<順序パラメータ> は,決められた順序で書かなければなりません。<順序パラメータ> を省略する場合,<順序パラメータ> を区切るコンマは省略できません。

関連項目

→DPLの機能
→式の構文
DBProヘルプ目次へ