open-axiom repository from github
-- Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd.
-- All rights reserved.
-- Copyright (C) 2007-2010, Gabriel Dos Reis.
-- All rights reserved.
--
-- Redistribution and use in source and binary forms, with or without
-- modification, are permitted provided that the following conditions are
-- met:
--
-- - Redistributions of source code must retain the above copyright
-- notice, this list of conditions and the following disclaimer.
--
-- - Redistributions in binary form must reproduce the above copyright
-- notice, this list of conditions and the following disclaimer in
-- the documentation and/or other materials provided with the
-- distribution.
--
-- - Neither the name of The Numerical ALgorithms Group Ltd. nor the
-- names of its contributors may be used to endorse or promote products
-- derived from this software without specific prior written permission.
--
-- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
-- IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-- TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
-- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
import ht_-util
import c_-util
namespace BOOT
++
$newConstructorList := nil
++ true if we should rebuild local databases.
$createLocalLibDb := true
bcFinish(name,arg,:args) == bcGen bcMkFunction(name,arg,args)
bcMkFunction(name,arg,args) ==
args := [x for x in args | x]
strconc(name,'"(",arg,strconc/[strconc('",", x) for x in args],'")")
bcString2HyString2 s ==
string? s and stringChar(s,0) = char "_"" =>
len := #s
strconc('"\_"", subString(s, 1, len-2), '"\_"")
s
bcString2HyString s == s
bcFindString(s,i,n,char) == or/[j for j in i..n | s.j = char]
bcGen command ==
htInitPage('"Basic Command",nil)
string :=
#command < 50 => strconc('"{\centerline{\tt ",command,'" }}")
strconc('"{\tt ",command,'" }")
htMakePage [
'(text
"{Here is the AXIOM command you could have issued to compute this result:}"
"\vspace{2}\newline "),
['text,:string]]
htMakeDoitButton('"Do It", command)
htShowPage()
-- bcGen for axiom - nag link
linkGen command ==
htInitPage('"AXIOM-Nag Link Command",nil)
string :=
#command < 50 => strconc('"{\centerline{ ",command,'" }}")
command
htMakePage [
'(text
"\centerline{{\em Here is the AXIOM command}}"
"\centerline{{\em you could have issued to compute this result:}}"
"\vspace{2}\newline "),
['text,:string]]
htMakeDoitButton('"Do It", command)
htShowPage()
bcOptional s ==
s = '"" => '"2"
s
bcvspace() == bcHt '"\vspace{1}\newline "
bcString2WordList s == fn(s,0,maxIndex s) where
fn(s,i,n) ==
i > n => nil
k := or/[j for j in i..n | s.j ~= char " "]
not integer? k => nil
l := bcFindString(s,k + 1,n,char " ")
not integer? l => [subString(s,k)]
[subString(s,k,l-k),:fn(s,l + 1,n)]
bcwords2liststring u ==
null u => nil
strconc('"[",first u,fn rest u) where
fn(u) ==
null u => '"]"
strconc('", ",first u,fn rest u)
bcVectorGen vec == bcwords2liststring vec
bcError string ==
sayBrightlyNT '"NOTE: "
sayBrightly string
bcDrawIt(ind,a,b) == strconc(ind,'"=",a,'"..",b)
bcNotReady htPage ==
htInitPage('"Basic Command",nil)
htMakePage '(
(text .
"{\centerline{\em This facility will soon be available}}"))
htShowPage()
htStringPad(n,w) ==
s := toString n
ws := #s
strconc('"\space{",toString (w - ws + 1),'"}",s)
stringList2String x ==
null x => '"()"
strconc('"(",first x,strconc/[strconc('",",y) for y in rest x],'")")
htMkName(s,n) == strconc(s,toString n)