[BASIC] JIS Full BASICの構文規則

JIS Full BASICの構文規則(BNF)を抽出し、項目別に並び替え、整理したものです。約520行。

  • 引用文字=  二連引用符|非引用符文字
  • 英大文字=  A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z
  • 英小文字=  a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z
  • 英字=  英大文字|英小文字
  • 数字=  0|1|2|3|4|5|6|7|8|9
  • 単語文字=  数字|英字|小数点|正号|負号
  • 単純文字=  空白|単語文字
  • 二連引用符=  引用符  引用符
  • 非引用符文字=  感嘆符|番号記号|ドル記号|パーセント記号|アンド記号|アポストロフィ|左括弧|右括弧|星印|コンマ|斜線|コロン|セミコロン|小号|等号|大号|疑問符|山記号|下線|単純文字
  • 非プログラム文字=  [処理系定義]
  • プログラム文字=  引用符|非引用符文字
  • end 行=  行番号   end  文  行末部
  • end 文= END
  • program 行=  行番号  PROGRAM  プログラム名  値仮引き数部?  行末部
  • stop 文= STOP
  • 外部手続き単位=  注釈行*  外部手続き定義
  • 外部手続き定義=  外部関数定義|外部副プログラム定義|外部絵定義
  • 行継続=  アンド記号  空白*  行末部  アンド記号
  • 行番号=  数字  数字*
  • 行末=  [処理系定義]
  • 行末部=  行末注釈?  行末
  • 区=  単純行|繰返し区| if  区| select-case  区| image  行|保護区|実時間区
  • 主プログラム=  手続き区*   end  行
  • 条件文=   if  文| on-gosub  文| on-goto  文
  • 宣言文=  空文| data  文| declare  文| dim  文| option  文| rem  文| template 文
  • 単純行=  行番号  単純文  行末部
  • 単純文=  宣言文|単純実行文|条件文|実時間文
  • 注釈行=  行番号  {空文| rem  文}  行末
  • 手続き区=  内部手続き定義|区
  • 内部手続き定義=  内部関数定義|内部副プログラム定義| handler  区|内部絵定義
  • プログラム=   program  行?  主プログラム  外部手続き単位*| program  行?実時間プログラム
  • プログラム単位=  主プログラム|外部手続き定義|並行単位
  • プログラム名=  ルーチン識別名
  • rem 文= REM  注釈文字列
  • 行末注釈=  感嘆符  注釈文字列
  • 空文=  行末注釈
  • 注釈文字列=  プログラム文字*
  • 識別名=  数値識別名|文字列識別名|ルーチン識別名|実時間識別名
  • 識別名文字=  英字|数字|下線
  • 数値識別名=  英字  識別名文字*
  • 文字列識別名=  英字  識別名文字*  ドル記号
  • ルーチン識別名=  英字  識別名文字*
  • 指数部=  E  符号?  符号なし整数
  • 小数部=  小数点  符号なし整数
  • 数値定数=  符号?  符号なし数値定数
  • 定数=  数値定数|文字列定数
  • 符号=  正号|負号
  • 符号なし数値定数=  有効数字部  指数部?
  • 符号なし整数=  数字  数字*
  • 有効数字部=  符号なし整数  小数点?|符号なし整数?  小数部
  • 指標=  数値式
  • 数値単純変数名=  数値識別名
  • 数値配列名=  数値識別名
  • 数値配列要素名=  数値配列名  添字部
  • 数値変数名=  数値単純変数名|数値配列要素名
  • 添字=  指標
  • 添字部=  左括弧  添字  {コンマ  添字}*  右括弧
  • 単純変数名=  数値単純変数名|文字列単純変数名
  • 配列名=  数値配列名|文字列配列名
  • 変数名=  数値変数名|文字列変数名
  • 値実引き数=  式|実配列名
  • 値実引き数部=  左括弧  値実引き数  {コンマ  値実引き数}*  右括弧
  • 式=  数値式|文字列式
  • 実配列名=  配列名
  • 乗除算演算子=  星印|斜線
  • 数値一次子=  符号なし数値定数|数値変数名|数値関数引用|左括弧  数値式右括弧
  • 数値因子=  数値一次子  {山記号  数値一次子}*
  • 数値関数名=  数値定義関数名|数値組込み関数名
  • 数値項=  数値因子  {乗除算演算子  数値因子}*
  • 数値式=  符号?  数値項  {符号  数値項}*
  • randomize 文= RANDOMIZE
  • let 文=  数値  let  文|文字列  let  文
  • 数値  let  文= LET  数値変数名並び  等号  数値式
  • 数値変数名並び=  数値変数名  {コンマ  数値変数名}*
  • declare 文= DECLARE  宣言指定
  • numeric 宣言= NUMERIC  数値宣言  {コンマ  数値宣言}*|NUMERIC精度指定?  固定小数点宣言  {コンマ  固定小数点宣言}*
  • option 文= OPTION  選択子並び
  • 数値宣言=  数値単純変数名|数値配列宣言
  • 選択子並び=  選択子  {コンマ  選択子}*
  • 引用文字列=  引用符  引用文字*  引用符
  • 文字列定数=  引用文字列
  • 部分文字列指定=  左括弧  指標  コロン  指標  右括弧
  • 文字列単純変数名=  文字列識別名
  • 文字列配列名=  文字列識別名
  • 文字列配列要素名=  文字列配列名  添字部
  • 文字列変数名=  {文字列単純変数名|文字列配列要素名}  部分文字列指定?
  • 文字列一次子=  文字列定数|文字列変数名|文字列関数引用|左括弧  文字列式右括弧
  • 文字列関数引用=  文字列関数名  値実引き数部?
  • 文字列関数名=  文字列定義関数名|文字列組込み関数名
  • 文字列式=  文字列一次子  {連結演算子  文字列一次子}*
  • 連結演算子=  アンド記号
  • 文字列  let  文= LET  文字列変数名並び  等号  文字列式
  • 文字列変数名並び=  文字列変数名  {コンマ  文字列変数名}*
  • string 宣言= STRING  最大長指定?  文字列宣言  {コンマ  文字列宣言}*
  • 最大長指定=  星印  符号なし整数
  • 文字列宣言=  文字列単純宣言|文字列配列宣言  最大長指定?
  • 文字列単純宣言=  文字列単純変数名  最大長指定?
  • dim 文= DIM  配列宣言並び
  • 最大寸法実引き数部=  左括弧  実配列名  右括弧
  • 上下限実引き数部=  左括弧  実配列名  {コンマ  指標}?  右括弧
  • 上下限指定=  整数  TO  整数|整数
  • 上下限指定部=  左括弧  上下限指定  {コンマ  上下限指定}  右括弧
  • 数値関数引用=  数値関数名  値実引き数部?|MAXLEN  左括弧{文字列単純変数名|文字列配列名}  右括弧|MAXSIZE最大寸法実引き数部|SIZE  上下限実引き数部|LBOUND上下限実引き数部|UBOUND  上下限実引き数部|DET左括弧  数値配列名  右括弧|DOT  左括弧  数値配列名コンマ  数値配列名  右括弧
  • 数値配列宣言=  数値配列名  上下限指定部
  • 整数=  符号?  符号なし整数
  • 選択子= ARITHMETIC   {DECIMAL|NATIVE}  |ANGLE {DEGREES|RADIANS}  |COLLATE   {NATVE|STANDARD}|BASE {0|1}  |ARITHMETIC  FIXED精度指定
  • 配列宣言=  数値配列宣言|文字列配列宣言
  • 配列宣言並び=  配列宣言  {コンマ  配列宣言}*
  • 文字列配列宣言=  文字列配列名  上下限指定部
  • mat 文=  数値  mat  文|文字列  mat  文
  • 再定義上下限指定=  {指標  TO}?  指標
  • 再定義上下限指定部=  左括弧  再定義上下限指定  {コンマ  再定義上下限指定}*右括弧
  • 数値  mat  文= MAT  数値配列名  等号  数値配列式
  • 数値配列演算子=  符号|星印
  • 数値配列関数引用=    {TRN|INV}    左括弧  数値配列名  右括弧
  • 数値配列式=  {数値配列名  数値配列演算子}?  数値配列名|スカラ乗数数値配列名|数値配列値|数値配列関数引用
  • 数値配列値=  スカラ乗数?   {CON|IDN|ZER}    再定義上下限指定部?|TRANSFORM
  • スカラ乗数=  数値一次子  星印
  • 文字列  mat  文= MAT  文字列配列名  部分文字列指定?  等号  文字列配列式
  • 文字列配列一次子=  文字列配列名  部分文字列指定?
  • 文字列配列式=  文字列配列一次子  {連結演算子  文字列配列一次子}?|文字列一次子  連結演算子  文字列配列一次子|文字列配列一次子  連結演算子  文字列一次子|文字列配列値
  • 文字列配列値=  {文字列一次子  連結演算子}?  NUL  ドル記号再定義上下限指定部?
  • 等値比較=  等号|非等
  • 比較演算子=  等値比較|大号|小号|非大|非小
  • 比較式=  数値式  比較演算子  数値式|文字列式  比較演算子  文字列式
  • 非小=  大号  等号|等号  大号
  • 非大=  小号  等号|等号  小号
  • 非等=  小号  大号|大号  小号
  • 論理一次子=  比較式|左括弧  論理式  右括弧
  • 論理項= NOT?  論理一次子
  • 論理式=  論理和
  • 論理積=  論理項  {AND  論理項}*
  • 論理和=  論理積  {OR  論理積}*
  • gosub 文= {GOSUB|GO  SUB}    行番号
  • goto 文= {GOTO|GO  TO}    行番号
  • on-gosub 文= ON  指標   {GOSUB|GO  SUB}    行番号  {コンマ行番号}*  {ELSE  単純実行文}?
  • on-goto 文= ON  指標   {GOTO|GO  TO}    行番号  {コンマ  行番号}*{ELSE  単純実行文}?
  • return 文= RETURN
  • 行番号分岐=   gosub  文| goto  文| if  文|データ存否| on-gosub  文| on-goto  文
  • do 行=  行番号   do  文  行末部
  • do 区=   do  行   do  本体
  • do 文= DO  出口条件?
  • do 本体=  区*   loop  行
  • exit-do 文= EXIT  DO
  • exit-for 文= EXIT  FOR
  • for 行=  行番号   for  文  行末部
  • for 区=   for  行   for  本体
  • for 文= FOR  制御変数名  等号  始値  TO  限界  {STEP  増分}?
  • for 本体=  区*   next  行
  • loop 行=  行番号   loop  文  行末部
  • loop 文= LOOP  出口条件?
  • next 行=  行番号   next  文  行末部
  • next 文= NEXT  制御変数名
  • 繰返し区=   do  区| for  区
  • 限界=  数値式
  • 始値=  数値式
  • 制御変数名=  数値単純変数名
  • 増分=  数値式
  • 出口条件=    {WHILE|UNTIL}    論理式
  • case 行=  行番号   case  文  行末部
  • case 区=   case  行  区*
  • case 文= CASE  照合項目並び
  • case-else 行=  行番号  CASE  ELSE  行末部
  • case-else 区=   case-else  行  区*
  • else 行=  行番号  ELSE  行末部
  • else 区=   else  行  区*
  • elseif 行=  行番号  ELSEIF  論理式  THEN  行末部
  • elseif 区=   elseif  行  区*
  • end-if 行=  行番号  END  IF  行末部
  • end-select 行=  行番号  END  SELECT  行末部
  • if 区=   if-then  行   then  本体   elseif  区*   else  区?   end-if  行
  • if 文= IF  論理式  THEN  単純実行動作  {ELSE  単純実行動作}?
  • if-then 行=  行番号  IF  論理式  THEN  行末部
  • select-case 行=  行番号   select-case  文  行末部
  • select-case 区=   select-case  行  注釈行*   case  区   case  区*   case-else  区? end-select 行
  • select-case 文= SELECT  CASE  式
  • then 本体=  区*
  • 照合項目=  定数|範囲指定
  • 照合項目並び=  照合項目  {コンマ  照合項目}*
  • 単純実行動作=  単純実行文|行番号
  • 範囲指定=  {定数  TO|IS  比較演算子}  定数
  • def 行=  行番号   def  文  行末部
  • def 宣言= DEF  定義関数名並び
  • def 文=  数値   def  文|文字列   def  文
  • end-function 行=  行番号  END  FUNCTION  行末部
  • exit-function 文= EXIT  FUNCTION
  • external-function 行=  行番号  EXTERNAL  FUNCTION  {数値定義関数名|文字列定義関数名  最大長指定?}  値仮引き数部?行末部|行番号  EXTERNAL  FUNCTION固定小数点定義関数名  値仮引き数部?  行末部
  • external-function 宣言= EXTERNAL  FUNCTION  定義関数名並び
  • 値仮引き数=  単純変数名|仮配列宣言|固定小数点仮引き数
  • 値仮引き数部=  左括弧  値仮引き数  {コンマ  値仮引き数}*  右括弧
  • 外部関数定義=   external-function  行  手続き区*   end-function  行
  • 仮配列宣言=  配列名  左括弧  コンマ*  右括弧
  • 関数定義=  内部関数定義|外部関数定義
  • 数値  def  文= DEF  数値定義関数名  値仮引き数部?  等号  数値式|DEF固定小数点定義関数名  値仮引き数部?  等号  数値式
  • 数値関数定義  let  文= LET  数値定義関数名  等号  数値式
  • 数値定義関数名=  数値識別名
  • 定義関数名=  数値定義関数名|文字列定義関数名|固定小数点定義関数名
  • 定義関数名並び=  定義関数名  {コンマ  定義関数名}*
  • 内部  function  行=  行番号  FUNCTION  {数値定義関数名|文字列定義関数名最大長指定?}  値仮引き数部?  行末部|行番号  FUNCTION固定小数点定義関数名  値仮引き数部?  行末部
  • 内部  function  宣言= FUNCTION  定義関数名並び
  • 内部関数定義=   def  行|内部  function  行  区*   end-function  行
  • 文字列  def  文= DEF  文字列定義関数名  最大長指定?  値仮引き数部?等号  文字列式
  • 文字列関数定義  let  文= LET  文字列定義関数名  等号  文字列式
  • 文字列定義関数名=  文字列識別名
  • call 文= CALL  副プログラム名  参照実引き数部?
  • end-sub 行=  行番号   end-sub  文  行末部
  • end-sub 文= END SUB
  • exit-sub 文= EXIT  SUB
  • external-sub 行=  行番号  EXTERNAL  sub  文  行末部
  • external-sub 宣言= EXTERNAL  SUB  副プログラム名並び
  • sub 文= SUB  副プログラム名  参照仮引き数部?
  • 外部副プログラム定義=   external-sub  行  手続き区*   end-sub  行
  • 経路番号=  番号記号  符号なし整数
  • 参照仮引き数=  単純変数名|仮配列宣言|経路番号|固定小数点仮引き数
  • 参照仮引き数部=  左括弧  参照仮引き数  {コンマ  参照仮引き数}*  右括弧
  • 参照実引き数=  式|実配列名|経路式
  • 参照実引き数部=  左括弧  参照実引き数  {コンマ  参照実引き数}*  右括弧
  • 内部  sub  行=  行番号   sub  文  行末部
  • 内部  sub  宣言= SUB  副プログラム名並び
  • 内部副プログラム定義=  内部  sub  行  区*   end-sub  行
  • 副プログラム定義=  内部副プログラム定義|外部副プログラム定義
  • 副プログラム名=  ルーチン識別名
  • 副プログラム名並び=  副プログラム名  {コンマ  副プログラム名}*
  • chain 文= CHAIN  プログラム指示名  {WITH  値実引き数部}?
  • プログラム指示名=  文字列式
  • data 文= DATA  データ要素並び
  • if-missing 句= IF  MISSING  THEN  データ存否動作
  • read 文= READ  { if-missing  句  コロン}?  変数名並び|READ経路式  読込み制御  コロン  変数名並び{コンマ  SKIP  REST}?
  • restore 文= RESTORE  行番号?
  • 単純文字列=  単語文字|単語文字  単純文字*  単語文字
  • データ存否動作=   exit-do  文| exit-for  文|行番号
  • データ要素=  定数|単純文字列
  • データ要素並び=  データ要素  {コンマ  データ要素}*
  • 変数名並び=  変数名  {コンマ  変数名}*
  • elapsed 句= ELAPSED  数値変数名
  • input 文= INPUT  入力修飾?  変数名並び|INPUT  経路式  入力制御コロン  変数名並び  {コンマ  SKIP REST}?
  • line-input 文= LINE  INPUT  入力修飾?  文字列変数名並び|LINE  INPUT経路式  入力制御  コロン  文字列変数名並び
  • prompt 句= PROMPT  文字列式
  • timeout 句= TIMEOUT  数値時間式
  • 行入力応答=  プログラム文字*  行末
  • 数値時間式=  数値式
  • 入力応答=  データ要素並び  コンマ?  行末
  • 入力修飾=  入力修飾項目  {コンマ  入力修飾項目}*  コロン
  • 入力修飾項目=   prompt  句| timeout  句| elapsed  句
  • 入力要求=  [処理系定義]
  • ask 文= ASK  出力質問項目並び|ASK  経路指定  質問項目並び|
  • print 文= PRINT  印字項目並び|PRINT  書式付き印字指定|PRINT
  • set 文= SET  設定対象
  • 位置指定= TAB  左括弧  指標  右括弧
  • 印字区切り=  コンマ|セミコロン
  • 印字項目=  式|位置指定
  • 印字項目並び=  {印字項目?  印字区切り}*  印字項目?
  • 出力質問項目=  {MARGIN|ZONEWIDTH}    数値変数名
  • 出力質問項目並び=  出力質問項目  {コンマ  出力質問項目}*
  • image 行=  行番号  IMAGE  コロン  書式文字列  行末
  • けた寄せ=  大号|小号
  • 指数書式項目=  {整数書式項目|小数書式項目}  山記号  山記号  山記号山記号*
  • 小数書式項目=  小数点  番号記号  番号記号*|整数書式項目  小数点番号記号*
  • 書式印字式並び=  式  {コンマ  式}*  セミコロン?
  • 書式引用=  行番号|文字列式
  • 書式項目=  けた寄せ?  浮動文字列  {整数書式項目|小数書式項目|指数書式項目}|けた寄せ
  • 書式付き印字指定= USING  書式引用  {コロン  書式印字式並び}?
  • 書式文字列=  即値文字列  {書式項目  即値文字列}*
  • 数字位置=  星印|番号記号|パーセント記号
  • 整数書式項目=  数字位置  数字位置*  {コンマ  数字位置  数字位置*}*
  • 即値文字=  英字|数字|空白|感嘆符|アポストロフィ|左括弧|右括弧|斜線|コロン|セミコロン|等号|疑問符|下線
  • 即値文字列=  即値文字*
  • 浮動文字列=  {正号*|負号*}  ドル記号?|ドル記号*  {正号|負号}?
  • mat-input 文= MAT  INPUT  入力修飾?  {再定義配列並び|不定長ベクトル}|MAT  INPUT  経路式  入力制御  コロン{再定義配列並び|不定長ベクトル}
  • mat-line-input 文= MAT  LINE  INPUT  入力修飾?  再定義文字列配列並び|MAT  LINE  INPUT  経路式  入力制御  コロン再定義文字列配列並び
  • mat-print 文= MAT  PRINT  {印字配列名並び|USING  書式引用  コロン書式印字配列名並び}|MAT PRINT  経路式  印字制御コロン  {印字配列名並び|書式印字配列名並び}
  • mat-read 文= MAT  READ  { if-missing  句  コロン}?  再定義配列並び|MAT  READ  経路式  読込み制御  コロン  再定義配列並び
  • 印字配列名並び=  配列名  {印字区切り  配列名}*  印字区切り?
  • 再定義配列=  配列名  再定義上下限指定部?
  • 再定義配列並び=  再定義配列  {コンマ  再定義配列}*
  • 再定義文字列配列=  文字列配列名  再定義上下限指定部?
  • 再定義文字列配列並び=  再定義文字列配列  {コンマ  再定義文字列配列}*
  • 書式印字配列名並び=  配列名  {コンマ  配列名}*  セミコロン?
  • 不定長ベクトル=  配列名  左括弧  疑問符  右括弧
  • access 句= ACCESS  {INPUT|OUTPUT|OUTIN|文字列式}
  • close 文= CLOSE  経路式
  • collate 句= COLLATE  {STANDARD|NATIVE|文字列式}
  • erase 文= ERASE REST?  経路式
  • open 文= OPEN  経路指定  NAME  ファイル名  ファイル属性並び
  • organization 句= ORGANIZATION  {ファイル編成値|文字列式}
  • recsize 句= RECSIZE  {VARIABLE|文字列式}  {LENGTH  指標}?
  • rectype 句= RECTYPE  {記録形式値|文字列式}
  • 拡充記録形式値= NATIVE
  • 拡充属性名= RECORD|KEY|COLLATE
  • 拡充ファイル属性=   collate  句
  • 拡充ファイル編成値= RELATIVE|KEYED
  • 記録形式値=  中核記録形式値|拡充記録形式値
  • 経路式=  番号記号  指標
  • 経路指定=  経路式  コロン
  • 質問項目=  属性名  変数名  変数名*
  • 質問項目並び=  質問項目  {コンマ  質問項目}*
  • 属性名=  中核属性名|拡充属性名
  • 中核記録形式値= DISPLAY|INTERNAL
  • 中核属性名= ACCESS|DATUM|ERASABLE|FILETYPE|MARGIN|NAME|ORGANIZATION|POINTER|RECSIZE|RECTYPE|SETTER|ZONEWIDTH
  • 中核ファイル属性=   access  句| organization  句| rectype  句| recsize  句
  • 中核ファイル編成値= SEQUENTIAL|STREAM
  • ファイル属性=  中核ファイル属性|拡充ファイル属性
  • ファイル属性並び=  {コンマ  ファイル属性}*
  • ファイル編成値=  中核ファイル編成値|拡充ファイル編成値
  • ファイル名=  文字列式
  • if-there 句= IF  THERE  THEN  データ存否動作
  • 拡充記録設定= RECORD  指標|KEY  {等値探索|大号探索}  文字列式
  • 記録設定=  中核記録設定|拡充記録設定
  • 指示子制御=  指示子制御項目|データ存否|指示子制御項目  コンマデータ存否
  • 指示子制御項目= POINTER  中核記録設定|拡充記録設定
  • 大号探索=  大号|非小
  • 中核記録設定= BEGIN|END|NEXT|SAME
  • データ存否=   if-missing  句| if-there  句
  • 等値探索=  等号?
  • mat-write 文= MAT  WRITE  経路式  書出し制御  コロン  配列名並び
  • 経路式  印字制御  {コロン  {印字項目並び|書式印字式並び}}?
  • template 文= TEMPLATE  コロン  枠要素並び
  • write 文= WRITE  経路式  書出し制御  コロン  式並び
  • 印字制御=  {コンマ  印字制御項目}*
  • 印字制御項目=  中核記録設定| if-there  句|USING  書式引用
  • 書出し制御=  {コンマ  書出し制御項目}*
  • 書出し制御項目=  記録設定| if-there  句|枠引用
  • 式並び=  式  {コンマ  式}*
  • 小数点指定=  整数幅  小数点?|整数幅?  小数点  小数幅
  • 小数幅=  符号なし整数
  • 数値欄指定子= NUMERIC  星印  数値欄幅
  • 数値欄幅=  小数点指定|E
  • 整数幅=  符号なし整数
  • 配列名並び=  配列名  {コンマ  配列名}*
  • 文字列欄指定子= STRING  星印  文字列欄幅
  • 文字列欄幅=  符号なし整数
  • 欄指定子=  数値欄指定子|文字列欄指定子
  • 欄数固定= SKIP?  {符号なし整数  OF}?
  • 欄数不定=  疑問符  OF
  • 枠引用= WITH  {行番号|文字列式}
  • 枠要素=  欄数固定  {欄指定子|左括弧  枠要素並び  右括弧}|欄数不定  欄指定子
  • 枠要素並び=  枠要素  {コンマ  枠要素}*
  • 入力制御=  {コンマ  入力制御項目}*
  • 入力制御項目=  中核記録設定| if-missing  句| prompt  句| timeout  句| elapsed  句
  • 読込み制御=  {コンマ  読込み制御項目}*
  • 読込み制御項目=  記録設定| if-missing  句|枠引用
  • delete 文= DELETE  経路式  削除制御
  • mat-rewrite 文= MAT  REWRITE  経路式  書換え制御  コロン  配列名並び
  • rewrite 文= REWRITE  経路式  書換え制御  コロン  式並び
  • 書換え制御=  {コンマ  書換え制御項目}*
  • 書換え制御項目=   if-missing  句|記録設定|枠引用
  • 削除制御=  {コンマ  削除制御項目}*
  • 削除制御項目=   if-missing  句|記録設定
  • cause-exception 文= CAUSE  EXCEPTION  例外状態種別
  • end-handler 行=  行番号  END  HANDLER  行末部
  • end-when 行=  行番号  END  WHEN  行末部
  • exit-handler 文= EXIT  HANDLER
  • handler 行=  行番号  HANDLER  例外処理区名  行末部
  • handler 区=   handler  行  例外処理区   end-handler  行
  • use 行=  行番号  USE  行末部
  • when 本体=  区*
  • when-in 行=  行番号  WHEN  EXCEPTION IN  行末部
  • when-in 区=   when-in  行   when  本体   use  行  例外処理区   end-when  行
  • when-use 行=  行番号  WHEN  EXCEPTION  USE  例外処理区名  行末部
  • when-use 区=   when-use  行   when  本体   end-when  行
  • 数値組込み関数名= ABS|ACOS|ANGLE|ASIN|ATN|BVAL|CEIL|COS|COSH|COT|CSC|DATE|DEG|EPS|EXLINE|EXP|EXTYPE|FP|INT|IP|LEN|LOG|LOGIO|LOG2|MAX|MAXNUM|MIN|MOD|ORD|PI|POS|RAD|REMAINDER|RND|ROUND|SEC|SGN|SIN|SINH|SQR|TAN|TANH|TIME|TRUNCATE|VAL
  • 保護区=   when-in  区| when-use  区
  • 例外状態種別=  指標
  • 例外処理区=  区*
  • 例外処理区名=  ルーチン識別名
  • 例外処理区戻り文= RETRY|CONTINUE
  • break 文= BREAK
  • debug 文= DEBUG  {ON|OFF}
  • trace 文= TRACE  ON  {TO  経路式}?|TRACE  OFF
  • ASK  質問対象   status  句?
  • status 句= STATUS  数値変数名
  • 境界=  数値式
  • 境界四辺=  境界  コンマ  境界  コンマ  境界  コンマ  境界
  • 境界四辺変数=  数値変数名  コンマ  数値変数名  コンマ  数値変数名  コンマ数値変数名
  • clear 文= CLEAR
  • 三原色指定=  数値式  コンマ  数値式  コンマ  数値式
  • 三原色取得=  数値変数名  コンマ  数値変数名  コンマ  数値変数名
  • 設定対象=  {MARGIN|ZONEWIDTH}    指標|経路指定  指示子制御|経路指定 {MARGIN|ZONEWIDTH}    指標|WINDOW境界四辺|VIEWPORT  境界四辺|DEVICE  WINDOW境界四辺|DEVICE  VIEWPORT  境界四辺|CLIP  文字列式|線点指定  STYLE  指標|面指定  COLOR  指標|TEXT文章特性  数値式|TEXT  JUSTIFY  文字列式  コンマ文字列式|COLOR  MIX  左括弧  指標  右括弧  三原色指定
  • 線点指定= POINT|LINE
  • 文章特性= HEIGHT|ANGLE
  • 面指定=  線点指定|TEXT|AREA
  • limit 句= LIMIT  指標
  • mat-cells 文= MAT  図形動詞  CELLS  コンマ  IN  点対  コロン数値配列名
  • 開始点=  コンマ  AT  座標対
  • 幾何図形  mat  文= MAT  図形動詞  幾何対象  コンマ   limit  句}?  コロン配列点並び
  • 幾何図形文=  図形動詞  幾何対象  コロン  点並び|PLOT LINES|PLOT LINES  コロン  点並び  セミコロン?
  • 幾何対象= POINTS|LINES|AREA
  • 座標対=  数値式  コンマ  数値式
  • 図形  text  文=  図形動詞  TEXT  開始点  {コンマ  USING  書式引用コロン式並び|コロン  文字列式}
  • 図形出力文=  幾何図形文|幾何図形  mat  文|図形  text  文| mat-cells  文
  • 図形動詞= GRAPH|PLOT
  • 点対=  座標対  セミコロン  座標対
  • 点並び=  座標対  {セミコロン  座標対}*
  • 配列点並び=  数値配列名  {コンマ  数値配列名}?
  • locate 文= LOCATE  { point  句  コロン  座標変数対|値選択  コロン数値変数名}
  • mat-locate 文= MAT  LOCATE   point  句  コロン  配列位置対象
  • point 句= POINT  機構選択?  開始点?
  • range 句=  コンマ  RANGE  数値式  TO  数値式
  • 値選択= CHOICE  機構選択?  開始値?|VALUE  機構選択? range 句?  開始値?
  • 開始値=  コンマ  AT  数値式
  • 機構種別= POINT|MULTIPOINT|CHOICE|VALUE
  • 機構選択=  左括弧  指標  右括弧
  • 再定義数値配列=  数値配列名  再定義上下限指定部?
  • 座標変数対=  数値変数名  コンマ  数値変数名
  • 質問対象= WINDOW   境 界 四 辺 変 数 | VIEWPORT   境 界 四 辺 変 数 |DEVICE WINDOW  境界四辺変数|DEVICE  VIEWPORT境界四辺変数|DEVICE  SIZE  数値変数名  コンマ数値変数名  コンマ  文字列変数名|CLIP  文字列変数名|線点指定  STYLE  数値変数名|面指定  COLOR数値変数名|TEXT  文章特性  数値変数名|TEXT  JUSTIFY文 字 列 変 数 名   コ ン マ   文 字 列 変 数 名 | MAX   線 点 指 定STYLE数値変数名|MAX  COLOR  数値変数名|COLOR  MIX左括弧  指標  右括弧  三原色取得|MAX  機構種別DEVICE  数値変数名|PIXEL  SIZE  左括弧  点対  右括弧数値変数名  コンマ  数値変数名|PIXEL  ARRAY  点位置数値配列名  {コンマ  文字列変数名}?|PIXEL  VALUE点位置  数値変数名
  • 数値不定長行列=  数値配列名  左括弧  疑問符  コンマ  右括弧
  • 数値不定長ベクトル=  数値配列名  左括弧  疑問符  右括弧
  • 図形入力文=   locate  文| mat-locate  文|GET   point  句  コロン  座標変数対|MAT  GET   point  句  コロン  配列位置対象
  • 単純実行文=   ask  文| break  文| call  文| cause-exception  文| chain  文| clear 文| close  文| debug  文| delete  文| draw  文| erase  文| exit-do 文| exit-for  文| exit-function  文| exit-handler  文| exit-picture 文| exit-sub  文| gosub  文| goto  文| input  文| let 文| line-input  文| mat  文| mat-input  文| mat-line-input  文| mat-print 文| mat-read  文| mat-rewrite  文| mat-write  文| open 文| print  文| randomize  文| read  文| restore  文| return 文| rewrite  文| set  文| stop  文| trace  文| write  文|数値関数定義  let  文|図形出力文|図形入力文|変形指示  mat  文|文字列関数定義  let  文|例外処理区戻り文
  • 点位置=  左括弧  座標対  右括弧
  • 配列位置対象=  再定義数値配列  {コンマ  再定義数値配列}?|数値不定長ベクトル  コンマ  数値不定長ベクトル|数値不定長行列
  • draw 文= DRAW  絵呼出し  {WITH  変形}?
  • end-picture 行=  行番号  END  PICTURE  行末部
  • exit-picture 文= EXIT  PICTURE
  • external-picture 行=  行番号  EXTERNAL  内部  picture  文  行末部
  • external-picture 宣言= EXTERNAL  PICTURE  絵名並び
  • 絵定義=  内部絵定義|外部絵定義
  • 絵名=  ルーチン識別名
  • 絵名並び=  絵名  {コンマ  絵名}*
  • 絵呼出し=  絵名  参照実引き数部?
  • 外部絵定義=   external-picture  行  手続き区*   end-picture  行
  • 現在変形= TRANSFORM
  • 宣言指定=   numeric  宣言| string  宣言| def  宣言|内部  function  宣言| external-function 宣言|内部  sub  宣言| external-sub  宣言|内部  picture  宣言| external-picture  宣言
  • 内部  picture  行=  行番号  内部  picture  文  行末部
  • 内部  picture  宣言= PICTURE  絵名並び
  • 内部  picture  文= PICTURE  絵名  参照仮引き数部?
  • 内部絵定義=  内部  picture  行  区*   end-picture  行
  • 変形=  変形項  {星印  変形項}*
  • 変形関数名= ROTATE|SHEAR|SHIFT|SCALE
  • 変形項=  変形関数名  値実引き数部|数値配列名|現在変形
  • 変形指示  mat  文= MAT  数値配列名  等号  変形
  • end-paract 行=  行番号   end-paract  文  行末部
  • end-paract 文= END PARACT
  • paract 行=  行番号   paract  文  行末部
  • paract 文= PARACT  ルーチン識別名  {URGENCY  優先度}?
  • parstop 文= PARSTOP
  • 実時間区=   select-on-port  区| seize  区
  • 実時間プログラム=  実時間宣言単位  並行単位  並行単位*  外部手続き単位*
  • 実時間文=   parstop  文|並行動作制御文|処理域入出力文|共用域入出力文|通報域入出力文| exit-seize  文
  • 並行単位=  注釈行*   paract  行  区*   end-paract  行
  • 優先度=  符号なし整数
  • declare-process 行=  行番号   declare-process  文  行末部
  • declare-process 文= DECLARE  PROCESS  入出力指示  処理域配列名上下限指定部  OF  構造名
  • end-process 行=  行番号  END  PROCESS  行末部
  • event 句= EVENT  事象名
  • message 宣言= MESSAGE  通報域名  OF  構造名
  • process 宣言= PROCESS  {処理指定| event  句}  参照情報?
  • shared 宣言= SHARED  共用域名  上下限指定部?  OF  構造名
  • structure 宣言= STRUCTURE  構造名  コロン  反復回数?  型指示{コンマ  反復回数?  型指示}*
  • 型指示=  {NUMERIC  精度指定?|STRING}  上下限指定部?
  • 共用域名=  英字  識別名文字*
  • 構造名=  英字  識別名文字*
  • 参照情報=  文字列定数
  • 事象名=  英字  識別名文字*
  • 実時間識別名=  構造名|事象名|処理域名|処理域配列名|共用域名|通報域名
  • 実時間宣言行=  行番号  実時間宣言文  行末部
  • 実時間宣言単位=  {注釈行|実時間宣言行|処理域配列宣言}*
  • 実時間宣言文= DECLARE  { structure  宣言| process  宣言| shared  宣言| message 宣言}
  • 処理域配列宣言=   declare-process  行  処理要素行*   end-process  行
  • 処理域配列名=  英字  識別名文字*
  • 処理域名=  英字  識別名文字*
  • 処理指定=  入出力指示  処理域名  OF  構造名
  • 処理要素行=  行番号  処理要素文  行末部
  • 処理要素文=  処理域配列名  左括弧  整数  {コンマ  整数}?  右括弧コロン  参照情報
  • 通報域名=  英字  識別名文字*
  • 入出力指示= INPUT|OUTPUT|OUTIN
  • 反復回数=  符号なし整数  OF
  • connect-event 文= CONNECT  EVENT  事象名並び
  • delay 句= DELAY  数値時間式
  • disconnect-event 文= DISCONNECT  EVENT  事象名並び
  • event-timeout 句= EVENT  事象名   timeout  句?
  • signal 文= SIGNAL  事象名
  • start 文= START  ルーチン識別名
  • time 句= TIME  時間式
  • wait 文= WAIT  { time  句| delay  句| event-timeout  句}
  • 時間式=  数値時間式|文字列時間式
  • 事象名並び=  事象名  {コンマ  事象名}*
  • 並行動作制御文=   start  文| wait  文| signal  文| connect-event  文| disconnect-event 文
  • 文字列時間式=  文字列式
  • in-from 文= IN  FROM  {処理域名|処理域配列名  添字部}  TO  入力構造   timeout  句?
  • out-to 文= OUT  TO  {処理域名|処理域配列名  添字部}  FROM出力構造   timeout  句?
  • 出力構造=  出力構造要素  {コンマ  出力構造要素}*
  • 処理域入出力文=   in-from  文| out-to  文
  • 入力構造=  入力構造要素  {コンマ  入力構造要素}*
  • 入力構造要素=  変数名|配列名
  • 出力構造要素=  式|配列名
  • get-from 文= GET FROM  共用域名  添字部?  TO  入力構造   timeout  句?
  • put-to 文= PUT  TO  共用域名  添字部?FROM  出力構造   timeout  句?
  • 共用域入出力文=   put-to  文| get-from  文
  • case-timeout 行=  行番号   case-timeout  文  行末部
  • case-timeout 区=   case-timeout  行  区*
  • case-timeout 文= CASE  TIMEOUT  数値時間式
  • receive-from 文= RECEIVE  FROM  通報域名  TO  入力構造   timeout  句?
  • select-on-port 行=  行番号   select-on-port  文  行末部
  • select-on-port 区=   select-on-port  行  注釈行*  通報  case  区  通報  case  区* case-timeout 区?   end-select  行
  • select-on-port 文= SELECT  ON PORT
  • send-to 文= SEND  TO  通報域名  FROM  出力構造   timeout  句?
  • 通報  case  行=  行番号  通報  case  文  行末部
  • 通報  case  区=  通報  case  行  区*
  • 通報  case  文= CASE   {SEND|RECEIVE}    MESSAGE  通報域名|CASEEVENT  事象名
  • 通報域入出力文=   send-to  文| receive-from  文
  • 文字列組込み関数名= {CHR|DATE|LCASE|LTRIM|REPEAT|RTRIM|STR|TIME|UCASE|USING}    ドル記号|EXTEXT  ドル記号|BSTR  ドル記号
  • end-seize 行=  行番号  END  SEIZE  行末部
  • exit-seize 文= EXIT  SEIZE
  • seize 行=  行番号   seize  文  行末部
  • seize 区=   seize  行  区*   end-seize  行
  • seize 文= SEIZE  確保項目並び   timeout  句?
  • 確保項目= SHARED  共用域名|[処理系定義]
  • 確保項目並び=  確保項目  {コンマ  確保項目}*
  • 行=  単純行| case  行| case-else  行| declare-process  行| def  行| do 行| else  行| elseif  行| end  行| end-function  行| end-handler 行| end-if  行| end-paract  行| end-picture  行| end-process 行| end-seize  行| end-select  行| end-sub  行| end-when 行| external-function  行| external-picture  行| external-sub 行| for  行| handler  行| if-then  行| image  行| loop 行| next  行| paract  行| program  行| seize  行| select-case 行| use  行| when-in  行| when-use  行|実時間宣言行|処理要素行|注釈行|内部  function  行|内部  picture  行|内部  sub  行
  • 固定小数点宣言=  数値単純変数名  精度指定?|数値配列宣言  精度指定?
  • 精度指定=  星印  小数点指定
  • 固定小数点仮配列宣言=  仮配列宣言  精度指定
  • 固定小数点仮引き数=  数値単純変数名  精度指定|固定小数点仮配列宣言
  • 固定小数点定義関数名=  数値定義関数名  精度指定
  • 未整列行=  行番号  {プログラム文字|行継続}*  行末
  • 未整列プログラム=  未整列行*
  • delete 指令= DELETE  行範囲並び
  • extract 指令= EXTRACT  行範囲並び
  • list 指令= LIST  行範囲並び?
  • renumber 指令= RENUMBER  行範囲?  番号指定?
  • 開始番号=  行番号
  • 刻み=  符号なし整数
  • 行指定=  行番号|FIRST|LAST
  • 行範囲=  行指定  {TO  行指定}?
  • 行範囲並び=  行範囲  {コンマ  行範囲}*
  • 番号指定= AT  開始番号  {STEP  刻み}?|STEP  刻み{AT  開始番号}?
  • 編集指令=   delete  指令| extract  指令| list  指令| renumber  指令