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〕*/
`▼

--------------------------------------------------------------------------------
(0)以下の記法は無条件で適用可能.
 ①原稿の「`□_」から「`」を削除して半角スペースで置換すること.
 ②「①」の処理で背景色をシアンに着色してもよい.
  /*〔Background color is optional.〕*/
 ③「<sup></sup>」⇒「^`{`}」./*〔「^`{n`}⇒「^(n)〕*/
 ④「<sub></sub>」⇒「_`{□`}」./*〔「_`{n`}⇒「_(n)〕*/
  ・背景色の設定範囲を「`_」と変える!
   /*〔x^(3) + a * x^(2) + b * x + c〕*/
 ⑤「C言語」の演算子を含む式「□」を『□』と特記したときの計算順序は
  「C」の言語仕様に従う./*「(1)③」*/
(1)参考資料
 ①[%712](4)
 ②[%713](0)①
 ③「https://ja.wikipedia.org/wiki/演算子の優先順位
--------------------------------------------------------------------------------
`▲①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳

%719:EOF(@L5N)


コメント

このブログの人気の投稿

「日記帳(2023 冬)」

ブログの教材で学ぶMATH(1)