version 1.16, 2004/07/04 00:16:43 |
version 1.19, 2014/03/11 01:46:19 |
|
|
@comment $OpenXM: OpenXM/src/asir-doc/parts/asir.texi,v 1.15 2004/07/03 15:50:34 ohara Exp $ |
@comment $OpenXM: OpenXM/src/asir-doc/parts/asir.texi,v 1.18 2005/07/25 12:23:05 takayama Exp $ |
\BJP |
\BJP |
@node $B%f!<%68@8l(B Asir,,, Top |
@node $B%f!<%68@8l(B Asir,,, Top |
@chapter $B%f!<%68@8l(B Asir |
@chapter $B%f!<%68@8l(B Asir |
|
|
$B%b%8%e!<%k$OF~$l;R$K$O$G$-$J$$(B. |
$B%b%8%e!<%k$OF~$l;R$K$O$G$-$J$$(B. |
$B%b%8%e!<%k$NCf$@$1$G;H$&Bg0hJQ?t$O(B @code{static} $B$G@k8@$9$k(B. |
$B%b%8%e!<%k$NCf$@$1$G;H$&Bg0hJQ?t$O(B @code{static} $B$G@k8@$9$k(B. |
$B$3$NJQ?t$O%b%8%e!<%k$N30$+$i$O;2>H$b$G$-$J$$$7JQ99$b$G$-$J$$(B. |
$B$3$NJQ?t$O%b%8%e!<%k$N30$+$i$O;2>H$b$G$-$J$$$7JQ99$b$G$-$J$$(B. |
|
@code{static} $BJQ?t$O$9$Y$F$N4X?tDj5A$NA0$K@k8@$7$J$$$H$$$1$J$$(B. |
|
$B%Q!<%5!<$,%o%s%Q%9$N$?$a(B, $B@k8@$N$J$$JQ?t$O<+F0E*$K6I=jJQ?t$H$_$J$5$l$k$+$i$G$"$k(B. |
$B%b%8%e!<%k$N30$NBg0hJQ?t$O(B @code{extern} $B$G@k8@$9$k(B. |
$B%b%8%e!<%k$N30$NBg0hJQ?t$O(B @code{extern} $B$G@k8@$9$k(B. |
\E |
\E |
\BEG |
\BEG |
|
|
A variable of a module is declared with the key word @code{static}. |
A variable of a module is declared with the key word @code{static}. |
The static variables cannot be refered nor changed out of the module, |
The static variables cannot be refered nor changed out of the module, |
but it can be refered and changed in any functions in the module. |
but it can be refered and changed in any functions in the module. |
A global variable which can be refered and changed at any place |
The @code{static} variables must be declared before the definitions of functions, |
|
because the one-path parser of asir automatically assume variables as local variables |
|
if there is no declaration for them. |
|
A global variable which can be refered and changed in or out of the module |
is declared with the key word @code{extern}. |
is declared with the key word @code{extern}. |
\E |
\E |
|
|
Line 1632 The below is an example of demand loading. |
|
Line 1637 The below is an example of demand loading. |
|
\E |
\E |
|
|
@example |
@example |
if (!module_definep("stack")) load("stack.rr") $ |
if (!module_definedp("stack")) load("stack.rr") $ |
@end example |
@end example |
|
|
\BJP |
\BJP |
|
|
module stack; |
module stack; |
/* The body of the module stack */ |
/* The body of the module stack */ |
endmodule; |
endmodule; |
|
@end example |
|
|
|
\BJP |
|
$B%b%8%e!<%k$NCf$+$i%H%C%W%l%Y%k$GDj5A$5$l$F$$$k4X?t$r8F$V$K$O(B, |
|
$B2<$NNc$N$h$&$K(B @code{::} $B$rMQ$$$k(B. |
|
\E |
|
\BEG |
|
In order to call functions defined in the top level from the inside |
|
of a module, we use @code{::} as in the example below. |
|
\E |
|
@example |
|
def afo() @{ |
|
S = "afo, afo"; |
|
return S; |
|
@} |
|
module abc; |
|
localf foo,afo $ |
|
|
|
def foo() @{ |
|
G = ::afo(); |
|
return G; |
|
@} |
|
def afo() @{ |
|
return "afo, afo in abc"; |
|
@} |
|
endmodule; |
|
end$ |
|
|
|
[1200] abc.foo(); |
|
afo, afo |
|
[1201] abc.afo(); |
|
afo, afo in abc |
@end example |
@end example |
|
|
@table @t |
@table @t |