Courier_Python暫定仕様(1)
%710:Courier_Python暫定仕様(1)
%711:Python7(1)
`▼
--------------------------------------------------------------------------------
(0)スクリプトの書式(外部仕様)の試案.
・スクリプトの実行(内部仕様)は別途記述
/*〔「*.docx」では「Courier」を使わないので「ASCII_Python」に改称〕*/
①「ASCII」文字の集合を「Chr7」と略記する.
②「Chr7」の文字列の集合を「Str7」と略記する.
③「Chr7」の文字コードを2進数で表現したときの値が
「k」に等しい文字を「chr(k)」と略記する.
④「\」を用いて印刷できない文字(制御文字)を下記のように略記する.
「chr(0)⇒'\0'」「chr(8)⇒'\b'」「chr(9)⇒'\t'」
「chr(10)⇒'\n'」「chr(13)⇒'\r'」「chr(27)⇒'\e'」
⑤制御文字を含まない「Str7」の元(raw_str)「□」を「"□"」で明示する.
⑥「"□."」を「名前」と呼称して名前の集合を「Name7」と略記する.
⑦集合の名前は「英大文字」で始める.
⑧集合の元の名前は「英小文字」で始める.
⑨数値を代入できる名前「□.」を変数と呼称して「$□.」で明示する.
⑩「英字」で始まる名前の変数を「大域変数」と呼称して名前表で管理する.
⑪「□」が数字列である変数「$□.」を局所変数と呼称する.
⑫「局所変数」の有効範囲(scope)を行内に限定する.
⑬10進数「k」より小さい非負の整数の集合を「Int(k)」と略記する.
⑭「1」より小さい正の実数を10進表示した文字列「x」に対して
「x」より小さい正の実数の集合を「Fract(x)」と略記する.
⑮整数部を「Int(k)」の元,小数部を「Fract(x)」の元で表示した実数の集合を
「Decimal」と略記する.
⑯負の実数は演算子「-」を用いた式で表現する.
(1)軽量化のための制約
①固定小数点表示の実数しか扱わない.
②字数の制限
・どの行も99文字以下.
・どのモジュールも99行以下.
・どのパッケージも9モジュール以下.
(2)表示例
①(スクリプト)
\n------------------------------------
\n q = `(_851,_`)_
\n r = `(_185,_`)_
\n k = 1
\n `while_r[k] > 0 `:_
\n _ q[k] = q[k-1] % r[k]
\n _ r[k] = q[k-1] - q[k] * r[k]
\n _ k = k + 1
\n `continue_
\n
\n print(_q[k]_)
\n------------------------------------
・「print(_□_)」は組み込み関数
②(データ)
・リスト:a = `[_10,_ 20,_ 30,_ 40`]_
・タプル:a = `(_10,_ 20,_ 30,_ 40`)_
・辞書 :d = `{_'Yamada': 30,_ 'Suzuki': 40,_ 'Tanaka': 80`}_
--------------------------------------------------------------------------------
`▲解釈実行前に「`」「_」を半角スペースで置換する.
%712:字句解析 /*〔Lexical Analysis〕*/
`▼
--------------------------------------------------------------------------------
(0)字句解析を容易にするために次のように制約する.
①トークン・デリミタの末尾に半角スペース(または改行)を付加する.
②トークンの途中での改行を禁止する.
③予約語「□」を「`□_」で明示する.
④通常の二項演算子「□0」による計算式「□1 □0 □2 」を
「□1 □0_ □2」と略記する./*〔「a + b」⇒「a +_b」〕*/
⑤通常の前置単項演算子「□0」による計算式「□0 □1」を
「□0,_□1」と略記する./*〔「- a」⇒「-_a」〕*/
⑥唯一の後置単項演算子「?」の計算式は「□1`?_」と略記する.
⑦「Python」の文字列結合の演算子「+」は「`+_」で明示.
(1)参考資料
①http://www.tohoho-web.com/python/operators.html#bitwise
②https://drive.google.com/file/d/1191Ev62Uo9yha0w87Kl5A01DsVCP7e-x/view?usp=sharing
(3)「a `&, b」,「a `|, b」,「a `^, b」は分かり難いので
「a `and, b」「a `or, b」「a `xor, b」も併用する.
--------------------------------------------------------------------------------
`▲
%712S:Supplement to 【[%712]】
`▼
--------------------------------------------------------------------------------
(0)「reserved word」⇒ 「reserved token」
③「`□_」is the reserved token of 「□」
④Suppose「□0」be an operator, then
「□1 □0 □2 」⇒ 「□1 .□0, □2」./*〔「a + b」⇒「a +_b」〕*/
⑤Similarly, 「□0 □1」⇒「□0,_□1」./*〔「- a」⇒「-_a」〕*/
⑥Expression「□1`?_」in 【[%712]⑥】is simply「□1`?_」.
/*〔See 【[%713](0)】〕*/
⑦Operator「+」to join strings is expressed as「`+_」で明示.
--------------------------------------------------------------------------------
`▲
%713:構文解析 /*〔Syntax Analysis〕*/
`▼
--------------------------------------------------------------------------------
(0)「(1)①」で述べた演算子「`?_」を用いて構文を記述する.
①「f(k):=(k`?_)」で定義した「f(k)」は
「k」以下の非負の整数のいずれかを関数値とする非決定性関数
②「f(1)⊂{0, 1}⇔{false, true}」
③「∀x ∈ Chr7,∃k ∈ Decimal,(x == chr(k))」
(1)参考資料
①【[%712]⑥】
②「https://en.wikipedia.org/wiki/Nondeterministic_algorithm」
③「http://www.tohoho-web.com/python/control.html」
(2)「if文」
「`if_□1`:_」
「_ □2」
「`elif_□3`:_」
「_ □4」
「`else`:_」
「_ □5」
(3)「while文」
「`while_□1`:_」
「_ □2」
「_ `if_□3`:_」
「_ `break_」
「_`continue_」
(4)C のプログラムに比べて行数が多くなる
・「while_(□1){□2; if(□3)break;}」
--------------------------------------------------------------------------------
`▲
%714:解釈実行 /*〔Execution〕*/
`▼
--------------------------------------------------------------------------------
(0)【[%713](3)】の制約条件を満たさないパッケージは
解釈実行せずに例外処理で対処する.
①「(1)①」の非決定性関数「f(k)」を実行するときはコンソールから
調べたい「k」の値を入力する.
(1)参考資料
①【[%713](0)①】
②「https://www.python-izm.com/introduction/console_input/」
--------------------------------------------------------------------------------
`▲
%715:例外処理 /*〔Exception〕*/
`▼
--------------------------------------------------------------------------------
(0)状況に応じてスクリプトを修正する
①「undefined」
②「illegal_token」
③「illegal_syntax」
④「not implemented」
⑤「interrupted」
(1)参考資料/*「exit()」*/
①https://techacademy.jp/magazine/15831
--------------------------------------------------------------------------------
`▲
%716:付則 /*〔Conventional Notation〕*/
`▼
・背景色の設定範囲を「`□_」と変える!
⑤「C言語」の演算子を含む式「□」を『□』と特記したときの計算順序は
「C」の言語仕様に従う./*「(1)③」*/
%719:EOF(@L5N)
コメント
コメントを投稿