%P810:Python8暫定仕様(1)
「OctalPython」作成のための断片的備忘録です.
「OctalPython」作成のための断片的備忘録です.
/*背景色は(茶: 編集・確認中; 灰色: 確認済; 緑: 非慣用記法; 白色: 初期化済)*/
/*「緑」は定義行のみ(他ではシアン).「茶」の語句があるパラグラフは「IDも茶」*/
%811:Python8(1)/*〔原案〕*/
`▼
--------------------------------------------------------------------------------(0)「Octal_Python」は長いので「Python8」と略称.
・「Python7」に準拠して拡張仕様を検討する
(1)参考資料/*〔「Python7」のコピーに加筆〕*/
①【[Trial-1]】@「Python」試用録(1)」@https://oshino3.blogspot.com/2020/05/python.html
②【[Trial-5]】「if文による条件分岐 (2/2)」@
https://oshino3.blogspot.com/2020/05/python5_48.html
③【[Trial-6]】「for文による繰り返し処理 (1/3)」@
https://oshino3.blogspot.com/2020/05/python6.html
④【[Trial-14]】「Python」試用録(14)」@
https://oshino3.blogspot.com/2020/06/python14.html
・%E11:資料の参照
・%E2:[Trial_□]のパラグラフに関するメモ
・%E3:行番号の付加
・%E4:使用不能文字対策
⑤【[Trial-18]】「Python」試用録(18)」@
https://oshino3.blogspot.com/2020/07/python18.html
⑥【_tutorial】「パッケージ」@
https://docs.python.org/ja/3/tutorial/modules.html#packages
⑦「Python7暫定仕様(1)」@
(2)「(1)④.E4」
・これらの文字が文字列リテラルやコメントの外にある場合、無条件にエラーとなる
/*〔これらの文字「$」,「?」,「`」の対策が不可欠〕*/
(3)「(1)④.E3」
・行頭ではなく次のようにしたい/*「'#'を行頭から48文字目に」*/
①「OctalPython」の行番号は奇数桁の8進数
②末尾の1桁の8進数は行末でのレベル
③ファイルの全角スペースはすべて半角スペース2個と置換
④「OctalPython」のコンソール画面(2枚)は8×16文字
一方で表示し,他方をバックグラウンドで編集.
/*〔これらの文字「$」,「?」,「`」の対策が不可欠〕*/
(3)「(1)④.E3」
・行頭ではなく次のようにしたい/*「'#'を行頭から48文字目に」*/
①「OctalPython」の行番号は奇数桁の8進数
②末尾の1桁の8進数は行末でのレベル
③ファイルの全角スペースはすべて半角スペース2個と置換
④「OctalPython」のコンソール画面(2枚)は8×16文字
一方で表示し,他方をバックグラウンドで編集.
(4)【[%11].[Trial_1]】/*「WILD.pdf」*/の記号の表現/*【[%11]①】*/
①「 1 ?」は「0」,「1」のいずれかの数.
②「177?」は8進数「177」を超えない非負の整数(自然数)のいずれか
・【[%61](2)[Trial_6]】の非決定性構文で使用./*「(1)②」*/
③「$」に「self」を使う
④「read,.」,「write,.」に「input()」,「print()」を使う.
%812:字句解析
`▼
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
`▲
%813:構文解析
`▼
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
`▲
%814:解釈実行
`▼
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
`▲
%815:補遺
`▼
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
`▲
%819:EOF(@L18)
・【[%61](2)[Trial_6]】の非決定性構文で使用./*「(1)②」*/
③「$」に「self」を使う
④「read,.」,「write,.」に「input()」,「print()」を使う.
⑤「"1234"」は10進数/*〔「Python7」と同じ〕*/
(5)以下では奇数桁の8進数の先頭に「&」を付加して記述
/*〔Python8では奇数桁にして「&01234_」=「"&01234"」=`'&01234'_」〕*/
①「 &1_?」は「0」,「1」のいずれかの数./*〔「?」はWILDの後置演算子〕*/
②「&177_?」は8進数「&177_」を超えない非負の整数(自然数)のいずれか
③「8進数」表示は論理演算が容易./*〔プログラミング教育に重宝〕*/
(6)【[%21](0).[Trial_2]】の「"abcdefg"」は文字列/*〔"12345"は10進数〕*/
①「`'abcdefg'_」=「"abcdefg"」/*「⑦(1)①」*/
/*〔①トークン「□」の先頭に「'`'」を置き末尾に複数個の
「' '」を付加して左端の「' '」を「'_'」で置換〕*/
(7)「str8('abc\n')」を「line8('abc')」と略記.
①「block8(\9002\9line8('abc'))」は
ブロック内の2行目が「str8('abc\n')」であることを明示.
②行頭のインデント量と「\9002\9」から【[%E3](2)】のコンソール画面を作成.
③「str8('\9002\9abc\n\9003\9def\n')」は
「line8('\9002\abc')+line8('\9003\def')」と同じ.
④ブロック内の行数を「&777以下」に限定./*「末尾に空白行」*/
(8)「str9('ab\9embeded\9c\ndef\n')」の「\9embeded\9」はコメント
①インタプリタは「(7)②」の行末の6文字とコメントを削除したファイルを解釈実行
/*「原稿の'\t'を'#\t'で置換」*/
②「FontTest★」
②「FontTest★」
(9)【[%82]】以降は「177?」を「&177?」と表記./*【%8162】=【[%816](2)】*/ ①「`'0D'_」=「char(13)」=「&15」.
/*〔【[%8101721]】=【[%810](1)⑦(2)①】〕*/
--------------------------------------------------------------------------------
`▲「□」内は「Courier」/*〔原稿では「SJIS」〕*/
%812:字句解析
`▼
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
`▲
%813:構文解析
`▼
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
`▲
%814:解釈実行
`▼
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
`▲
%815:補遺
`▼
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
`▲
%816:【[_Trial-14]】/*「%E3:行番号の付加」*/からの部分コピー
`▼
--------------------------------------------------------------------------------
(1)以下の数字はすべて8進数/*〔「8」(="8")は10進数〕*/
----------------------------------------
number = int(number) \t #001.1
#002.1
if number % 3 == 0: \t #003.1
print('Fizz') #004.2
elif number % 5 == 0: \t #005.1
print('Buzz') #006.2
elif number % 17 == 0: \t #007.1
print('FizzBuzz') \t #100.2
else: \t #101.1
print(number) \t #102.2
----------------------------------------
・「Nexus7」では「Courier」で「77字/行」は無理なので「60文字」に変更
/*〔末尾の「\n」を除いて「77字」以下〕*/
①「OctalPython」の行番号は奇数桁の8進数
②末尾の1桁の8進数は行末でのレベル
③ファイルの全角スペースはすべて半角スペース2個と置換
④「OctalPython」のコンソール画面(2枚)は10×20(="8*16")文字
一方で表示し,他方をバックグラウンドで編集.
--------------------------------------------------------------------------------
(2)【[%82]】以降では適宜,8進数の先頭に「&」を付加して偶数桁にする
--------------------------------------------------------------------------------
`▲
%817:Note in English
`▼
--------------------------------------------------------------------------------
(0)【[%□E]]】corresponds to the paragraph【[%□]】
(1)【%810:(1)③】
/*〔characters ∈ { '$', '?', '`'} are always invalid !〕*/
(2)【%810:(1)②】
・「ja」:docs in Japanese. /*〔There exists many docs by python.org.〕*/
(3)【%810:(4)②】/*「WILD.pdf★」*/の記号の表現
・「num8(177)」is expressed simply 「&177 ?」where 「?」is a WILD operater.
・「&177 ?」is a natural number which is not greater than「&177」.
(4)【%810:(5)③】
・「8進数」表示は論理演算が容易./*〔プログラミング教育に重宝〕*/
「Octal number is convenient to teach bitwise logic operation.」
・Decimal page number itself is not important.
・Decimal page number itself is not important.
(5)【[%810](6)①】
・Any token「□」 is expressed as「`□_ 」in general.
・「`'abcdefg'_」is abbreviated as「"abcdefg"」
(6)copied from【[%717]】/*chars in {'.', '^', '$'} are unavailable.*/
------------------------------------------------------------
(0)「Octal_Python」uses the following expressions 「□」which are
★quite different from「https://docs.python.org/ja/3/library/re.html」
☆quite different from「https://docs.python.org/3/library/re.html」
(1)小数点「'.'」に支障:「S = 5 * 5 * 3.1416」
(2)べき乗「'^'」に支障:「(x + 2) * (x + 3) = x^{2} + 5 * x + 6」
(3)名前空間「'$'」に支障:「class $Py8」,「class $Py9」を使いたい.
------------------------------------------------------------
--------------------------------------------------------------------------------
`▲「re」:regular expression; 「支障」:interference
%818:List of PDF-files
`▼
--------------------------------------------------------------------------------
・Galois-1.pdf /*「整数で考える剰余類」*/
・Galois-2.pdf /*「実数で考える巡回群」*/
・Galois-3.pdf /*「複素数で考える商群」*/
--------------------------------------------------------------------------------
`▲