簡單的MForcal模組例子

2021-08-23 11:26:10 字數 1491 閱讀 8723

簡單的mforcal模組例子

mforcal在編譯時,將源程式中的表示式編譯為乙個或多個模組,mforcal會對每乙個模組進行加鎖。編譯時首先設定起始模組,也稱主模組(並非forcal的0#模組,恰恰相反,mforcal不會將任何乙個表示式編譯為0#模組,定義主模組是為了與源程式中的其他模組相區別),以後每當遇到#module#,開始編譯為乙個新的模組,稱為子模組,而每當遇到#end#,回到主模組的編譯。即#module#和#end#之間的表示式定義為乙個子模組,子模組之間不能巢狀定義。注意#module#和#end#必須位於表示式的開頭。在模組中,以~開頭的表示式被編譯為正模組號表示式,能被其他模組訪問到,其餘的表示式均被編譯為負模組號表示式,其他模組無法訪問。所有模組的模組號由mforcal或程式設計師指定,不會重複,也不會被編譯為0#模組。在源程式的任何地方,可用指令#use#呼叫另乙個模組。

建議模組公有表示式的命名格式為模組名加函式名,即:modulename_functionname。

#module#

//定義乙個子模組,模組名為module1;

i:set(x::add)= add=x;

//模組號為負,只能被該模組的表示式所訪問;

i:get(::add)= add;

//模組號為負,只能被該模組的表示式所訪問;

~i:module1_set(x)= set(x);

//模組號為正,任意模組包括本模組均可訪問;

~i:module1_get()= get();

//模組號為正,任意模組包括本模組均可訪問;

#end#

//子模組定義結束,可預設;

#module#

//定義乙個子模組,模組名為module2;

i:set(x::add)= add=x;

//模組號為負,只能被該模組的表示式所訪問;

i:get(::add)= add;

//模組號為負,只能被該模組的表示式所訪問;

~i:module2_set(x)= set(x);

//模組號為正,任意模組包括本模組均可訪問;

~i:module2_get()= get();

//模組號為正,任意模組包括本模組均可訪問;

#end#

//子模組定義結束,不可預設;

i:set(x::add)= add=x;

//主模組中的表示式。

i:get(::add)= add;

//主模組中的表示式。

i:set(33);

//主模組中的表示式。

module1_set(11);

//主模組中的表示式。

module2_set(22);

//主模組中的表示式。

module1_get();

//主模組中的表示式。

module2_get();

//主模組中的表示式。

get();

//主模組中的表示式。

最簡單的核心模組例子

include include include static int init hello init void static void exit hello exit void module init hello init module exit hello exit static int init...

python 日誌模組的例子

import os,shutil import time import logging def log log dir none,log name none if log dir none log dir log dir path os.path.join os.path.abspath log d...

簡單的makefile例子

1.2.3 簡單的示例 本小節開始我們在第一小節中提到的例子。此例子由3個頭檔案和8個c檔案組成。我們講述寫乙個簡單的makefile,來描述如何建立最終的可執行檔案 edit 此可執行檔案依賴於8個c原始檔和3個頭檔案。makefile檔案的內容如下 sample makefile edit ma...