AMADEUS html plain
This sketchy text is generated by AMADEUS
import java.util.*;
class BaseLanguage0 extends BaseLanguage
BaseLanguage0()
boolean sketchify(SketchyText skt0, SketchyText skt1,
AmFrame f)
System.out.println("BaseLang0!!!!");
<======false
boolean normalize(SketchyText skt0, SketchyText skt1,
AmFrame f)
System.out.println("BaseLang0!!!!");
<======false
void reduce(Sketch s)
System.out.println("BaseLang0!!!!");
textualize
static Branch br1;
static String indent =
" ";
static int currentLevel = 0;
static final String PUBSTAT = "public static ";
boolean textualize(SketchyText skt0, SketchyText skt1,
AmFrame f)
Sketch s0 = skt0.main;
? s0.view.type != View.BOX
System.out.println("BaseLang0!!!!");
AmDialog d = new AmDialog(skt0.frame,
AmLocale.Textualize(),
AmDialog.B_OK,
AmLocale.Failed()+"! (" +
AmLocale.Base_language() + ":" +
AmLocale.None() +")" );
<======false
peaks olema skeemkeele mudel
NB! praegu ignoreerib mudelis olevaid kommentaare (sh enne :)
//?frame = dialogTargetFrame;
Sketch sNew = skt1.main;
//?Sketch s = skt0.main.makeCopy();
//normalize(s);
sNew.baseLanguage = new BaseLanguageJava();
sNew.branch(0).baseLanguage = new BaseLanguageJava();
teha s-st read ja lisada need uue haru primtiivideks
Branch br = s0.branch(0);
br1 = sNew.branch(0);
br1.body.removeElementAt(0);
insertLine("//================= class " + klassinimi(s0.comment.toString()) +" {");
üle esimese taseme skeemide
* int i = 0; i < br.body.size(); i++
Object o = br.member(i);
? o instanceof Sketch
textualize((Sketch)o);
insertLine("//================= }//" + klassinimi(s0.comment.toString()));
<======true
private void insertLine(String str)
str = indent.substring(
0, Math.min(indent.length(),
currentLevel+1))
+ str;
Text newT = new Text();
newT.rows.removeElementAt(0);
newT.rows.addElement(
new Row(str, Default.foregroundColor));
br1.body.addElement(
new PrimitiveMember(Primitive.SIMPLE, newT));
private String klassinimi(String s)
String suffiks = "ElemGen";
selle ette esimene sõna kuni tühikuni
s = s.trim();
? s.length() == 0
<======"x"+suffiks
s tühi
int i = s.indexOf(" ");
? i == -1
s on üks sõna
<======"x"+suffiks
<======s.substring(0, i) + suffiks
private void textualize(Sketch sk)
skeemigeneraator(sk);
päis
* int i = 0; i < sk.head.size(); i++
primitiivigeneraator(sk, i);
keha
* int i = 0; i < sk.body.size(); i++
textualize(sk.branch(i));
private void textualize(Branch br)
skeemigeneraator(br);
päis
* int i = 0; i < br.head.size(); i++
primitiivigeneraator(br, i);
keha
* int i = 0; i < br.body.size(); i++
Object o = br.member(i);
? o instanceof Sketch
textualize((Sketch)o);
<------
? o instanceof PrimitiveMember
primitiivigeneraator((PrimitiveMember)o);
private void skeemigeneraator(Sketch s)
kui kommentaar nõuab, teha meetod
kommgeneraator(s.comment);
String signatuur = signatuur(s.comment);
? signatuur.length() == 0
<======
NB! praegu skeemimeetodi argument loetakse skeemikommentaarika
currentLevel++;
String param = getParam(signatuur);
insertLine(meetodiPäis("Sketch", signatuur, param));
currentLevel++;
NB! praegu teeb alati üheharulise
Branch br = s.branch(0);
insertLine("Sketch tulem = ");
insertLine("new Sketch(" + type(s) + ",");
insertLine("new Branch(" + type(br) + "," + blType(br)+ ")" + ",");
insertLine(blType(s) + ");");
? s.icon
insertLine("tulem.icon = true;");
? br.icon
insertLine("tulem.branch(0).icon = true;");
? param.length() != 0
insertLine("tulem.comment = new Row(" + param +
", Default.commentColor);");
insertLine("tulem.branch(0).removeMember(0);");
insertLine("return tulem;");
NB! vaateid ei sea (tavaliselt sellel baaskeelel veel polegi)
currentLevel--;
insertLine("}");
currentLevel--;
private void skeemigeneraator(Branch b)
kui kommentaar nõuab, teha meetod
kommgeneraator(b.comment);
String signatuur = signatuur(b.comment);
? signatuur.length() == 0
<======
NB! praegu harumeetodi argument loetakse kommentaariks
currentLevel++;
String param = getParam(signatuur);
insertLine(meetodiPäis("Branch", signatuur, param));
currentLevel++;
NB! praegu teeb alati üheharulise
insertLine("Branch tulem = ");
insertLine("new Branch(" + type(b) + "," + blType(b)+ ")" + ";");
? b.icon
insertLine("tulem.icon = true;");
? param.length() != 0
insertLine("tulem.comment = new Row(" + param +
", Default.commentColor);");
insertLine("tulem.removeMember(0);");
insertLine("return tulem;");
NB! vaateid ei sea (tavaliselt sellel baaskeelel veel polegi)
currentLevel--;
insertLine("}");
currentLevel--;
private void primitiivigeneraator(Scheme s, int i)
üldskeemi s i-nda päise korral
PrimitiveHead h = s.primitiveHead(i);
kommgeneraator(h.text.comment);
String signatuur = signatuur(h.text.comment);
? signatuur.length() == 0
<======
String param = getParam(signatuur);
currentLevel++;
insertLine(meetodiPäis("PrimitiveHead", signatuur, param));
currentLevel++;
insertLine("Text tekst = new Text();");
? param.length() != 0
NB! eeld: ainuke parameeter annab teksti (1 rida)
? s instanceof Sketch
insertLine("tekst.insert(new Row(" + param +
", Default.sketchHeadColor), 1);");
<======
insertLine("tekst.insert(new Row(" + param +
", Default.branchHeadColor), 1);");
insertLine("tekst.remove(0);");
insertLine("return ");
insertLine("new PrimitiveHead(" + type(h) + ", tekst);");
NB! vaateid ei sea (tavaliselt sellel baaskeelel veel polegi)
currentLevel--;
insertLine("}");
currentLevel--;
private void primitiivigeneraator(PrimitiveMember p)
primitiivi p korral
kommgeneraator(p.text.comment);
String signatuur = signatuur(p.text.comment);
? signatuur.length() == 0
<======
String param = getParam(signatuur);
currentLevel++;
insertLine(meetodiPäis("PrimitiveMember", signatuur, param));
currentLevel++;
insertLine("Text tekst = new Text();");
? param.length() != 0
NB! eeld: ainuke parameeter annab teksti (1 rida)
? p.type == Primitive.SIMPLE
insertLine("tekst.insert(new Row(" + param +
", Default.foregroundColor), 1);");
<======
insertLine("tekst.insert(new Row(" + param +
", Default.conditionColor), 1);");
insertLine("tekst.remove(0);");
insertLine("return ");
insertLine("new PrimitiveMember(" + type(p) + ", tekst);");
NB! vaateid ei sea (tavaliselt sellel baaskeelel veel polegi)
currentLevel--;
insertLine("}");
currentLevel--;
private void kommgeneraator(Row r)
r on kommetaar mudelis
teeb kommentaarigeneraatori meetodi,
kui kahe viimase kooloni vahel on signatuur
String signatuur = r.toString().trim();
int i = signatuur.lastIndexOf(":");
viimane koolon
? i == -1
<======
signatuur = signatuur(new Row(signatuur.substring(0, i), Default.commentColor));
? signatuur.length() == 0
<======
signatuur peale eelviimast koolonit
String param = getParam(signatuur);
currentLevel++;
insertLine(meetodiPäis("Row", signatuur, param));
currentLevel++;
? param.length() != 0
eeld: ainuke parameeter annab kommentaari
insertLine("return new Row(" + param +
", Default.commentColor);");
<======
insertLine("return new Row(Default.commentColor);");
currentLevel--;
insertLine("}");
currentLevel--;
private String signatuur(Row r)
r on kommentaar, mis võib sisaldada signatuuri
tagastatakse mudelis antud signatuur, mille ees veel "gen_"
String tulem = "";
String s = r.toString();
int i = s.lastIndexOf(":");
? i == -1
<======""
tulem = s.substring(i+1);
(:)nimi( )...
i = tulem.lastIndexOf(")");
? i == -1
<======""
<======"gen_" + tulem.substring(0, i+1)
gen_nimi(...)
private String getParam(String signatuur)
StringTokenizer st = new StringTokenizer(signatuur, "()");
String param = "";
String meetodiNimi = st.nextToken().trim();
? st.hasMoreTokens()
param= st.nextToken().trim();
<======param
private String getMeetodiNimi(String signatuur)
int i = signatuur.indexOf("(");
? i == -1
<======""
<======signatuur.substring(0, i)
private String meetodiPäis(String tagastustüüp, String signatuur, String param)
kui param on, siis loetakse see String-tüüpi olevaks
<======PUBSTAT + tagastustüüp + " " + signatuur + "{"
<======PUBSTAT + tagastustüüp + " " +
getMeetodiNimi(signatuur) + "(String "+ param + ")" + "{"
private String type(Scheme s)
??s.type
? Scheme.SIMPLE:
<=========="Scheme.SIMPLE"
<=========="Scheme.LOOP"
<=========="Scheme.MODULE"
<======""
private String type(PrimitiveHead h)
??h.type
? PrimitiveHead.SIMPLE:
<=========="PrimitiveHead.SIMPLE"
<=========="PrimitiveHead.LOOP"
<=========="PrimitiveHead.SWITCH"
<=========="PrimitiveHead.CASE"
<=========="PrimitiveHead.DEFAULT"
<=========="PrimitiveHead.TRY"
<=========="PrimitiveHead.FINALLY"
<======""
private String type(PrimitiveMember p)
??p.type
? Primitive.SIMPLE:
<=========="Primitive.SIMPLE"
? PrimitiveHead.CONDITION:
<=========="Primitive.CONDITION"
<======""
private String blType(Scheme s)
HTML korral on klassi nime suffiks vale (...Html)
<======"BaseLanguage.newBaseLanguage(BaseLanguage."+
BaseLanguage.items[s.baseLanguage.type] + ")"
void prepareTex(Sketch s)
<======
byte nextPrimitiveHeadType(Scheme s, byte prev)
yledefineeritud
s - skeem, mille pa"is, prev - pa"ise tyyp
? (s instanceof Sketch)
??prev
? PrimitiveHead.SIMPLE:
<==============PrimitiveHead.LOOP
<==============PrimitiveHead.SWITCH
<==============PrimitiveHead.TRY
<==============PrimitiveHead.SIMPLE
<======
Branch haru korral lubab koiki pa"ise tyype
soltumata skeemi pa"isest
??prev
? PrimitiveHead.SIMPLE:
<==============PrimitiveHead.LOOP
<==============PrimitiveHead.SWITCH
<==============PrimitiveHead.CASE
<==============PrimitiveHead.DEFAULT
<==============PrimitiveHead.TRY
<==============PrimitiveHead.CATCH
..case
? PrimitiveHead.CATCH:
<==============PrimitiveHead.FINALLY
<==============PrimitiveHead.SIMPLE
<======prev