version 1.14, 2003/12/21 17:36:29 |
version 1.19, 2014/03/11 01:46:19 |
|
|
@comment $OpenXM: OpenXM/src/asir-doc/parts/asir.texi,v 1.13 2003/12/20 13:38:44 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 |
Line 1451 After @samp{|} one can append any number of options se |
|
Line 1451 After @samp{|} one can append any number of options se |
|
[100] xxx(1,2,x^2-1,[1,2,3]|proc=1,index=5); |
[100] xxx(1,2,x^2-1,[1,2,3]|proc=1,index=5); |
@end example |
@end example |
|
|
|
\BJP |
|
$B$5$i$K(B, $B%*%W%7%g%s$r(B @code{key1=value1,key2=value2,...} $B$N$h$&$K(B |
|
@samp{,} $B$G6h@Z$C$FEO$9Be$o$j$K(B, $BFCJL$J%-!<%o!<%I(B @code{option_list} |
|
$B$H%*%W%7%g%s%j%9%H(B @code{[["key1",value1],["key2",value2],...]} |
|
$B$rMQ$$$FEO$9$3$H$b2DG=$G$"$k(B. |
|
\E |
|
\BEG |
|
Optinal arguments may be given as a list |
|
with the key word @code{option_list} |
|
as |
|
@code{option_list=[["key1",value1],["key2",value2],...]}. |
|
It is equivalent to pass the optional arguments as |
|
@code{key1=value1,key2=value2,...}. |
|
\E |
|
|
|
@example |
|
[101] dp_gr_main([x^2+y^2-1,x*y-1]|option_list=[["v",[x,y]],["order",[[x,5,y,1]]]]); |
|
@end example |
|
|
\BJP |
\BJP |
|
$BFC$K(B, $B0z?t$J$7$N(B @code{getopt()} $B$O%*%W%7%g%s%j%9%H$rJV$9$N$G(B, |
|
$B%*%W%7%g%s$r$H$k4X?t$+$i(B, $B%*%W%7%g%s$r$H$k4X?t$r8F$S=P$9$H$-$K$OM-MQ$G$"$k(B. |
|
\E |
|
\BEG |
|
Since @code{getopt()} returns an option list, |
|
the optional argument @code{option_list=...} is useful when |
|
we call functions with optional arguments from |
|
a function with optional arguments to pass |
|
the all optional parameters. |
|
\E |
|
|
|
@example |
|
% cat foo.rr |
|
def foo(F) |
|
@{ |
|
OPTS=getopt(); |
|
return factor(F|option_list=OPTS); |
|
@} |
|
@end example |
|
|
|
@example |
|
[3] load("foo.rr")$ |
|
[4] foo(x^5-1|mod=11); |
|
[[1,1],[x+6,1],[x+2,1],[x+10,1],[x+7,1],[x+8,1]] |
|
@end example |
|
|
|
\BJP |
@node $B%b%8%e!<%k(B,,, $B%f!<%6Dj5AH!?t$N=q$-J}(B |
@node $B%b%8%e!<%k(B,,, $B%f!<%6Dj5AH!?t$N=q$-J}(B |
@subsection $B%b%8%e!<%k(B |
@subsection $B%b%8%e!<%k(B |
\E |
\E |
|
|
$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 1587 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 |