[BACK]Return to asir.texi CVS log [TXT][DIR] Up to [local] / OpenXM / src / asir-doc / parts

Diff for /OpenXM/src/asir-doc/parts/asir.texi between version 1.11 and 1.20

version 1.11, 2003/12/01 02:13:38 version 1.20, 2020/09/08 09:16:57
Line 1 
Line 1 
 @comment $OpenXM: OpenXM/src/asir-doc/parts/asir.texi,v 1.10 2003/11/27 12:23:58 ohara Exp $  @comment $OpenXM: OpenXM/src/asir-doc/parts/asir.texi,v 1.19 2014/03/11 01:46:19 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 227  Use of lists enables to write programs more easily, sh
Line 227  Use of lists enables to write programs more easily, sh
 comprehensible than use of structure like C programs.  comprehensible than use of structure like C programs.
 \E  \E
   
   \BJP
 @item  @item
   $B%f!<%6Dj5AH!?t$K$*$1$k0l9T%X%k%W(B.  Emacs-Lisp $B$KN`;w$7$?5!G=$G$"$k(B.
   $B>\$7$/$O(B, @xref{$B%f!<%6Dj5AH!?t(B} $B$r8+$h(B.
   \E
   
   @item
 \JP $B%f!<%6Dj5AH!?t$K$*$1$k%*%W%7%g%s;XDj(B.  \JP $B%f!<%6Dj5AH!?t$K$*$1$k%*%W%7%g%s;XDj(B.
 \EG Options can be specified in calling user defined functions.  \EG Options can be specified in calling user defined functions.
   
Line 236  comprehensible than use of structure like C programs.
Line 242  comprehensible than use of structure like C programs.
 @end itemize  @end itemize
   
 \BJP  \BJP
   @noindent
   Asir $B$G$O<!$N8l6g$,%-!<%o!<%I$H$7$FDj$a$i$l$F$$$k(B.
   @itemize
   @item C $B8@8l$KM3Mh(B:
   
   @code{break}, @code{continue}, @code{do}, @code{else}, @code{extern},
   @code{for}, @code{if}, @code{return}, @code{static}, @code{struct},
   @code{while}
   @item C $B8@8l$+$i$N3HD%(B:
   
   @code{def}, @code{endmodule}, @code{function}, @code{global},
   @code{local}, @code{localf}, @code{module}
   @item $BH!?t(B:
   
   @code{car}, @code{cdr}, @code{getopt}, @code{newstruct}, @code{map},
   @code{pari}, @code{quote}, @code{recmap}, @code{timer}
   @end itemize
   \E
   
   \BJP
 @node $B%f!<%6Dj5AH!?t$N=q$-J}(B,,, $B%f!<%68@8l(B Asir  @node $B%f!<%6Dj5AH!?t$N=q$-J}(B,,, $B%f!<%68@8l(B Asir
 @section $B%f!<%6Dj5AH!?t$N=q$-J}(B  @section $B%f!<%6Dj5AH!?t$N=q$-J}(B
 \E  \E
Line 376  each element is again a vector which contains
Line 402  each element is again a vector which contains
 ${_I}C_J$  ${_I}C_J$
 @end tex  @end tex
 @end iftex  @end iftex
 @ifinfo  @ifnottex
 ICJ  ICJ
 @end ifinfo  @end ifnottex
 \JP $B$rMWAG$H$9$kG[Ns$G$"$k(B.  \JP $B$rMWAG$H$9$kG[Ns$G$"$k(B.
 \EG as its elements.  \EG as its elements.
   
Line 460  All the program variables are initialized to the value
Line 486  All the program variables are initialized to the value
   
 \BJP  \BJP
 @item $BITDj85(B  @item $BITDj85(B
 $B>.J8;z$G;O$^$j(B, $B%"%k%U%!%Y%C%H(B, $B?t;z(B, @samp{_} $B$+$i$J$kJ8;zNs(B  $B>.J8;z$G;O$^$j(B, $B%"%k%U%!%Y%C%H(B, $B?t;z(B, @samp{_} $B$+$i$J$kJ8;zNs(B,
   $B$^$?$O%7%s%0%k%/%*!<%H$G0O$^$l$?J8;zNs(B, $B$b$7$/$OH!?t7A<0(B.
 $BITDj85$H$O(B, $BB?9`<04D$r9=@.$9$k:]$KE:2C$5$l$kJQ?t$r$$$&(B. @b{Asir} $B$K(B  $BITDj85$H$O(B, $BB?9`<04D$r9=@.$9$k:]$KE:2C$5$l$kJQ?t$r$$$&(B.  @b{Asir} $B$K(B
 $B$*$$$F$O(B, $BITDj85$OCM$r$b$?$J$$D61[E*$J85$G$"$j(B, $BITDj85$X$NCM$NBeF~$O(B  $B$*$$$F$O(B, $BITDj85$OCM$r$b$?$J$$D61[E*$J85$G$"$j(B, $BITDj85$X$NCM$NBeF~$O(B
 $B5v$5$l$J$$(B.  $B5v$5$l$J$$(B.
 \E  \E
Line 481  An indeterminate cannot have any value.  No assignment
Line 507  An indeterminate cannot have any value.  No assignment
 x  x
 [4] X^2+X+1;  [4] X^2+X+1;
 x^2+x+1  x^2+x+1
   [5] A='Dx'*(x-1)+x*y-y;
   (y+Dx)*x-y-Dx
   [6] function foo(x,y);
   [7] B=foo(x,y)*x^2-1;
   foo(x,y)*x^2-1
 @end example  @end example
 @end table  @end table
   
Line 1040  statement, and the termination condition will be evalu
Line 1071  statement, and the termination condition will be evalu
 \BJP  \BJP
 $B9=B$BN$H$O(B, $B3F@.J,$NMWAG$,L>A0$G%"%/%;%9$G$-$k8GDjD9G[Ns$H;W$C$F$h$$(B.  $B9=B$BN$H$O(B, $B3F@.J,$NMWAG$,L>A0$G%"%/%;%9$G$-$k8GDjD9G[Ns$H;W$C$F$h$$(B.
 $B3F9=B$BN$OL>A0$G6hJL$5$l$k(B. $B9=B$BN$O(B, @code{struct} $BJ8$K$h$j@k8@$5$l$k(B.  $B3F9=B$BN$OL>A0$G6hJL$5$l$k(B. $B9=B$BN$O(B, @code{struct} $BJ8$K$h$j@k8@$5$l$k(B.
   $B9=B$BN$,@k8@$5$l$k$H$-(B, asir $B$OFbIt$G9=B$BN$N$=$l$>$l$N7?$K8GM-$N<1JL(B
   $BHV9f$r$D$1$k(B.  $B$3$NHV9f$O(B, $BAH$_9~$_4X?t(B @code{struct_type} $B$K$h$j<hF@(B
   $B$G$-$k(B.
 $B$"$k7?$N9=B$BN$O(B, $BAH$_9~$_4X?t(B @code{newstruct} $B$K$h$j@8@.$5$l$k(B.  $B$"$k7?$N9=B$BN$O(B, $BAH$_9~$_4X?t(B @code{newstruct} $B$K$h$j@8@.$5$l$k(B.
 $B9=B$BN$N3F%a%s%P$O(B, $B1i;;;R(B @code{->} $B$K$h$j%"%/%;%9$9$k(B.  $B9=B$BN$N3F%a%s%P$O(B, $B1i;;;R(B @code{->} $B$K$h$j%"%/%;%9$9$k(B.
 $B%a%s%P$,9=B$BN$N>l9g(B, @code{->} $B$K$h$k;XDj$OF~$l;R$K$G$-$k(B.  $B%a%s%P$,9=B$BN$N>l9g(B, @code{->} $B$K$h$k;XDj$OF~$l;R$K$G$-$k(B.
Line 1066  by @code{->} can be nested.
Line 1100  by @code{->} can be nested.
 2  2
 [5] A;  [5] A;
 @{1,2@}  @{1,2@}
   [6] struct_type(A);
   1
 @end example  @end example
   
   @table @t
   \JP @item $B;2>H(B
   \EG @item References
   @fref{newstruct}, @fref{struct_type}
   @end table
   
 \BJP  \BJP
 @node $B$5$^$6$^$J<0(B,,, $B%f!<%6Dj5AH!?t$N=q$-J}(B  @node $B$5$^$6$^$J<0(B,,, $B%f!<%6Dj5AH!?t$N=q$-J}(B
 @subsection $B$5$^$6$^$J<0(B  @subsection $B$5$^$6$^$J<0(B
Line 1237  through @code{cpp}.  This enables @b{Asir} user to use
Line 1279  through @code{cpp}.  This enables @b{Asir} user to use
 @code{#include}  @code{#include}
 @*  @*
 \BJP  \BJP
 @code{cpp} $B$KFC$K0z?t$rEO$5$J$$$?$a(B, $B%$%s%/%k!<%I%U%!%$%k$O(B,  UNIX $B$G$O(B $B%$%s%/%k!<%I%U%!%$%k$O(B, Asir $B$N%i%$%V%i%j%G%#%l%/%H%j(B
 @code{#include} $B$,=q$+$l$F$$$k%U%!%$%k$HF1$8%G%#%l%/%H%j$G%5!<%A$5$l$k(B.  ($B4D6-JQ?t(B @b{ASIR_LIBDIR} $B$G;XDj$5$l$?%G%#%l%/%H%j(B)
   $B$H(B @code{#include} $B$,=q$+$l$F$$$k%U%!%$%k$HF1$8%G%#%l%/%H%j$r%5!<%A$9$k(B.
   UNIX $B0J30$G$O(B @code{cpp} $B$KFC$K0z?t$rEO$5$J$$$?$a(B,
   @code{#include} $B$,=q$+$l$F$$$k%U%!%$%k$HF1$8%G%#%l%/%H%j$N$_$r%5!<%A$9$k(B.
 \E  \E
 \BEG  \BEG
 Include files are searched within the same directory as the file  Include files are searched within the same directory as the file
Line 1406  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
Line 1463  def demo() @{
Line 1553  def demo() @{
   
 \BJP  \BJP
 $B%b%8%e!<%k$O(B @code{module} $B%b%8%e!<%kL>(B  $B!A(B @code{endmodule}$B$G0O$`(B.  $B%b%8%e!<%k$O(B @code{module} $B%b%8%e!<%kL>(B  $B!A(B @code{endmodule}$B$G0O$`(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
Line 1475  and
Line 1568  and
 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 1541  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
Line 1592  module stack;
Line 1688  module stack;
   /* The body of the module stack */    /* The body of the module stack */
 endmodule;  endmodule;
 @end example  @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
   
   @table @t
   \JP @item $B;2>H(B
   \EG @item References
   @fref{module_list}, @fref{module_definedp}, @fref{remove_module}.
   @end table

Legend:
Removed from v.1.11  
changed lines
  Added in v.1.20

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>