AMADEUS html plain
This sketchy text is generated by AMADEUS
import java.io.*;
import java.util.*;
Javadoc
* Tehakse Skeemist TEX-plain fail
*
*@author J.Kiho
class Sketch2TexPlain
class Sketch2TexPlain
static final int MAX_ONELINE = 80;
et teha onelinecond/loop
static String resultString = null;
static PrintWriter out;
globaalne muutuja faili kirjutamiseks
static void write2file (String buf)
Kirjutame etteantud stringi faili
static void writeHeader()
Kirjutab faili pa"ise
write2file("%This file is generated by AMADEUS.");
write2file("%\\input amadeus.tex");
write2file("{\\scheme ");
static void writeFooter()
write2file("}");
write2file("%\\bye");
static void writeText(Text t, boolean comm)
tekstiread
int n = t.rows.size();
* int i = 0; i < n-1; i++
esimesed read
write2file(t.row(i).toString());
viimane rida (ja kommentaar)
? comm
write2file(t.row(n-1).toString() +"}{");
write2file(t.comment.toString() +"}");
<======
write2file(t.row(n-1).toString() +"}");
static void writePrimitiveMember(Primitive p)
boolean comm = !p.text.comment.isTrivial();
primitiivi algus
? p.type == Primitive.SIMPLE
? comm
write2file("\\primitivec{");
<======
write2file("\\primitive{");
<======
? p.type == Primitive.CONDITION
? comm
write2file("\\conditionc{");
<======
write2file("\\condition{");
<======
resultString =
AmLocale.Illegal()+" "+AmLocale.primitive_type();
<==========
static void writeArrow(Arrow ar, int lev)
boolean comm = !ar.text.comment.isTrivial();
PrimitiveMember p = new PrimitiveMember(Primitive.SIMPLE,
ar.text);
int len = (lev - ar.level)/2;
char suffix = (char)('B' + len);
? ar.type == Arrow.STRONG
write2file("\\arrow{\\len"+suffix+"}{");
writePrimitiveMember(p);
<======
write2file("\\weakarrow{\\wlen"+suffix+"}"
+"{\\wshift"+suffix+"}{");
writePrimitiveMember(p);
write2file("}");
static void writeHead(Scheme s)
Kirjutame skeemi päise faili
int n = s.head.size();
? n == 0
write2file("}{");
<======
* int i = 0; i < n; i++
PrimitiveHead he = s.primitiveHead(i);
boolean comm = !he.text.comment.isTrivial();
lihtpa"ise algus
??he.type
? PrimitiveHead.SIMPLE:
? comm
write2file("\\simpleheadc{");
<======
write2file("\\simplehead{");
<======
? PrimitiveHead.LOOP:
? comm
write2file("\\loopheadc{");
<======
write2file("\\loophead{");
<======
? PrimitiveHead.TRY:
? comm
write2file("\\tryheadc{");
<======
write2file("\\tryhead{");
<======
? PrimitiveHead.CATCH:
? comm
write2file("\\catchheadc{");
<======
write2file("\\catchhead{");
<======
? PrimitiveHead.SWITCH:
? comm
write2file("\\switchheadc{");
<======
write2file("\\switchhead{");
<======
? PrimitiveHead.CASE:
? PrimitiveHead.DEFAULT:
???????
? comm
write2file("\\caseheadc{");
<======
write2file("\\casehead{");
<======
..default
? :
resultString =
AmLocale.Illegal()+" "+AmLocale.head_type();
<==============
writeText(he.text, comm);
write2file("}{");
static void write(Sketch s)
See meetod tegeleb skeemi labivaatamise ja faili kirjutamisega
<======
Object o;
? s.icon
String comm = s.comment.toString().trim();
? comm.length() == 0
? !s.isHeadless()
comm = s.primitiveHead(0).text.toString();
write2file("\\sketchicon{"+comm+"}");
<======
Branch br0 = s.branch(0);
? ((s.head.size() == 0)
&& (s.body.size() == 1)
&& (br0.head.size() == 0)
&& (br0.comment.isTrivial())
&& (!br0.icon)
)
skeem pa"iseta, yhe (pa"iseta ja kommentaarita) haruga
kas on va"ga lihtne skeem
? s.type == Scheme.SIMPLE
? br0.body.size() == 2
vo~ib olla lihtne IF
o = br0.member(0);
? o instanceof PrimitiveMember
PrimitiveMember p0 = (PrimitiveMember)o;
? ((p0.type == Primitive.CONDITION)
&& p0.text.comment.isTrivial()
&& (p0.text.rows.size() == 1))
tingimus
o = br0.member(1);
? o instanceof PrimitiveMember
PrimitiveMember p1 = (PrimitiveMember)o;
? ((p1.type == Primitive.SIMPLE)
&& p1.text.comment.isTrivial()
&& (p1.text.rows.size() == 1))
on lihtne IF
String scom = s.comment.toString();
String cond = p0.text.row(0).toString();
String row1 = p1.text.row(0).toString();
? (scom.length()+
cond.length()+row1.length()
< MAX_ONELINE)
on lyhike
? scom.length() == 0
write2file(
"\\onelinecond{"+cond+"}{"+row1+"}");
<======
write2file(
"\\onelinecondc{"+scom+"}{"+cond+"}{"+row1+"}");
<==============
? (s.type == Scheme.SIMPLE)
? (br0.body.size() == 4)
vo~ib olla lihtne IFELSE
o = br0.member(0);
? (o instanceof PrimitiveMember)
PrimitiveMember p0 = (PrimitiveMember)o;
? ((p0.type == Primitive.CONDITION)
&& p0.text.comment.isTrivial()
&& (p0.text.rows.size() == 1))
tingimus
o = br0.member(1);
? (o instanceof PrimitiveMember)
PrimitiveMember p1 = (PrimitiveMember)o;
? ((p1.type == Primitive.SIMPLE)
&& p1.text.comment.isTrivial()
&& (p1.text.rows.size() == 1))
o = br0.member(2);
? ((o instanceof Arrow)
&&(s.level() == ((Arrow)o).level)
&&(((Arrow)o).text.isTrivial())
&&(((Arrow)o).text.comment.isTrivial())
)
o = br0.member(3);
? (o instanceof PrimitiveMember)
PrimitiveMember p3 = (PrimitiveMember)o;
? ((p3.type == Primitive.SIMPLE)
&& p3.text.comment.isTrivial()
&& (p3.text.rows.size() == 1))
on lihtne IFELSE
String scom = s.comment.toString();
String cond = p0.text.row(0).toString();
String row1 = p1.text.row(0).toString();
String row3 = p3.text.row(0).toString();
? (scom.length()+
cond.length()+row1.length() + row3.length()
< MAX_ONELINE)
on lyhike
? (scom.length() == 0)
write2file(
"\\onelinecondelse{"+cond+"}{"+row1+"}{"+row3+"}");
<======
write2file(
"\\onelinecondelsec{"+scom+"}{"+cond+"}{"+row1+"}{"+row3+"}");
<==============
??s.type
? Scheme.SIMPLE:
write2file("\\simplesketch{");
<======
? Scheme.LOOP:
write2file("\\loopsketch{");
<======
? Scheme.MODULE:
write2file("\\modulesketch{");
<======
..default
? :
resultString = AmLocale.Illegal() +" "
+ AmLocale.scheme_type() +".";
<==============
String comm = convert(s.comment.toString());
String comm = s.comment.toString();
write2file(comm + "}{");
Branch br = s.branch(0);
* Enumeration e = br.body.elements(); e.hasMoreElements();
o = e.nextElement();
? (o instanceof Sketch)
write((Sketch)o);
<======
? (o instanceof Arrow)
writeArrow((Arrow)o, br.level());
<======
writePrimitiveMember((PrimitiveMember)o);
? (resultString != null)
<==============
skeemi lo~pp
write2file("}");
<======
muu skeem
kas on va"ga lihtne pa"isega tsykliskeem
? ((s.type == Scheme.LOOP)
&& (s.head.size() == 1)
&& (s.body.size() == 1))
? ((br0.body.size() == 1)&&(br0.head.size()==0))
vo~ib olla
PrimitiveHead he = s.primitiveHead(0);
? ((he.type == PrimitiveHead.LOOP)
&& he.text.comment.isTrivial()
&& (he.text.rows.size() == 1))
o = br0.member(0);
? (o instanceof PrimitiveMember)
PrimitiveMember p1 = (PrimitiveMember)o;
? ((p1.type == Primitive.SIMPLE)
&& p1.text.comment.isTrivial()
&& (p1.text.rows.size() == 1))
on lihtne loop
String scom = s.comment.toString();
String head = he.text.row(0).toString();
String row1 = p1.text.row(0).toString();
? (scom.length()+
head.length()+row1.length()
< MAX_ONELINE)
on lyhike
? (scom.length() == 0)
write2file(
"\\onelineloop{"+head+"}{"+row1+"}");
<======
write2file(
"\\onelineloopc{"+scom+"}{"+head+"}{"+row1+"}");
<==========
??s.type
? Scheme.SIMPLE:
write2file("\\simplesketchB{");
<======
? Scheme.LOOP:
write2file("\\loopsketchB{");
<======
? Scheme.MODULE:
write2file("\\modulesketchB{");
<======
..default
? :
resultString =
AmLocale.Illegal() +" "
+ AmLocale.scheme_type() +".";
<==============
String comm = convert(s.comment.toString());
String comm = s.comment.toString();
if(comm.length() > 0)
write2file(comm + "}{");
pa"is
writeHead(s);
? (resultString != null)
<==========
harud
* int i = 0; i < s.body.size(); i++
write(s.branch(i));
? (resultString != null)
<==============
skeemi lo~pp
write2file("}");
static void write(Branch br)
? (br.icon)
write2file("\\branchicon{"+br.comment.toString()+"}");
String comm = br.comment.toString().trim();
? (comm.length() == 0)
? (!br.isHeadless())
comm = br.primitiveHead(0).text.toString();
write2file("\\branchicon{"+comm+"}");
<======
??br.type
? Scheme.SIMPLE:
write2file("\\simplebranch{");
<======
? Scheme.LOOP:
write2file("\\loopbranch{");
<======
? Scheme.MODULE:
write2file("\\modulebranch{");
<======
..default
? :
resultString = AmLocale.Illegal() +" "
+ AmLocale.branch_type() +".";
<==========
String comm = br.comment.toString();
write2file(comm + "}{");
pa"is
writeHead(br);
? (resultString != null)
<======
keha
* Enumeration e = br.body.elements(); e.hasMoreElements();
Object o = e.nextElement();
? (o instanceof Sketch)
write((Sketch)o);
<======
? (o instanceof Arrow)
writeArrow((Arrow)o, br.level());
<======
writePrimitiveMember((PrimitiveMember)o);
? (resultString != null)
<==========
static void writeSubschemes(Sketch s)
kirjutada lahti iga grupp, mille kommentaar lo~peb*
* int i = 0; i < s.body.size(); i++
Branch br = s.branch(i);
LOOP:
* int j = 0; j < br.body.size(); j++
Object o = br.member(j);
? (o instanceof Primitive)
<------
o on alamskeem
Sketch sk = (Sketch)o;
L:
non-control
kui saab, siis kirjutada lahti
? (sk.type != Scheme.MODULE)
<======L;
String comm = sk.comment.toString().trim();
String comm = sk.comment.toString();
int l = comm.length();
? (l == 0)
<======L;
? (comm.charAt(l-1) != '*')
<======L;
? (!sk.isHeadless() &&
(sk.primitiveHead(0).type != PrimitiveHead.LOOP))
ei ole grupp, kirjutada lihtsalt lahti
jrgm lk.
<==========L;
write2file("\\vfill \\eject");
sk.icon = false;
lopust * maha
Row keep = sk.comment.makeCopy();
sk.comment = new Row(comm.substring(
0, comm.length()-1),
Default.commentColor);
write(sk);
sk.icon = true;
sk.comment = keep;
<----------LOOP;
on grupp, mis tuleb lahti kirjutada
pealkiri
write2file("\\vskip 15pt");
write2file(
"--------------------------------------------"+
"{\\bf " + comm.substring(0,l-1) + "}");
pa"ised
? (!sk.isHeadless())
writeHead(sk);
keha
* Enumeration e = sk.branch(0).body.elements(); e.hasMoreElements();
o = e.nextElement();
? (o instanceof Sketch)
tegemist skeemiga
Sketch sub = (Sketch)o;
? (!sk.icon)
oli lahti, kinnised
alamskeemid teha lahti
sub.icon = !sub.icon;
write(sub);
sub.icon = !sub.icon;
<======
<------
? (o instanceof Arrow)
writeArrow((Arrow)o, br.level());
<------
writePrimitiveMember((PrimitiveMember)o);
if(resultString != null) return;
<----------LOOP;
L
ei saanud lahti
writeSubschemes(sk);
for j
for i
s2t
Votilde;tame vastu 2 parameetrit: AmSketchi ja faili nime
parameetriteks olgu sketch ja failinimi kuhu ta Tex-ida.
static public String s2t (Sketch s, String fname)
Avame etteantud nimelise faili
!!
out = new PrintWriter(new FileWriter(fname));
! (IOException e)
System.err.println("Caught IOException: " + e.getMessage());
<=========="Failed:" + e.getMessage()
pyyame exceptioni kui ei 6nnestunud faili luua
resultString = null;
writeHeader();
write(s);
writeSubschemes(s);
writeFooter();
fail kinni
out.close();
<======resultString