AMADEUS html plain
import java.util.*;
import java.awt.*;
class Martjanova
static void prepareAlgor(Sketch s)
Antud: meetod skeemteksti s kujul
Tulemus: s teisendatud algoritmiks
Eeldus: baaskeel on JAVA
I/O puudub,ei ole literaale: "...." ja '..'
[] näitavad indeksit
Soovitus: kommentaarides soovitud taanded anda juba programmis tühikute abil
teisendada skeemi s kommentaar:
s.comment = prepareComment(s.comment);
s.comment.planSize();
teisendada skeemi s elementaarpäised:
* int j = 0; j < s.head.size(); j++
s.primitiveHead(j).text = prepareText(s.primitiveHead(j).text,Default.sketchHeadColor);
s.primitiveHead(j).text.comment = prepareComment(s.primitiveHead(j).text.comment);
teisendada skeemi s harud:
* int i = 0; i < s.body.size(); i++
Branch br = s.branch(i);
järjekordne haru br
br.comment = prepareComment(br.comment);
* int j = 0; j < br.head.size(); j++
teisendada haru br elementaarpäised
br.primitiveHead(j).text = prepareText(br.primitiveHead(j).text,Default.branchHeadColor);
br.primitiveHead(j).text.comment = prepareComment(br.primitiveHead(j).text.comment);
* int j = 0; j < br.body.size(); j++
teisendada haru br liikmed
Object o = br.member(j);
? o instanceof Sketch
prepareAlgor((Sketch)o);
alamskeem
<------
Primitive p = (Primitive)o;
primitiiv
? p.type == Primitive.CONDITION
p.text = prepareText(p.text,Default.conditionColor);
<======
p.text = prepareText(p.text,Default.foregroundColor);
p.text.comment = prepareComment(p.text.comment);
static Row prepareComment(Row r)
String s = r.toString();
String t = "";
tähtede asendamine
* int i = 0; i < s.length(); i++
String st = s.substring(i, i+1);
String st2 ="";
String st3 ="";
? i>0
st3 =s.substring(i-1, i);
? i<(s.length()-1)
st2 =s.substring(i+1, i+2);
=,==,<=,>=,!=
? st.equals("=")
? st3.equals("<")
t +="$\\leq$";
<--------------
? st3.equals(">")
t +="$\\geq$";
<--------------
? st3.equals("!")
t +="$\\neq$";
<--------------
? ((!st2.equals("="))&&(!st3.equals("=")))
t +="$:=$";
<--------------
<--------------
? st3.equals("=")
t +="=";
<--------------
<,>,! + järgnev =
? (st.equals(">"))&&(st2.equals("="))||
(st.equals("<"))&&(st2.equals("="))||
(st.equals("!"))&&(st2.equals("="))
<----------
<
? st.equals("<")
t +="$<$";
<----------
>
? st.equals(">")
t +="$>$";
<----------
tühik
? st.equals(" ")
t +="\\ ";
<----------
allkriips
? st.equals("_")
t +="\\_";
<----------
Õ
? st.equals("Õ")
t +="\\~O";
<----------
õ
? st.equals("õ")
t +="\\~o";
<----------
Ü
? st.equals("Ü")
t +="\\\"U";
<----------
ü
? st.equals("ü")
t +="\\\"u";
<----------
Ö
? st.equals("ö")
t +="\\\"o";
<----------
ö
? st.equals("ö")
t +="\\\"o";
<----------
Ä
? st.equals("Ä")
t +="\\\"A";
<----------
ä
? st.equals("ä")
t +="\\\"a";
<----------
[
? st .equals("[")
t +="$_{";
<----------
]
? st.equals("]")
t +="}$";
<----------
muu
? (!st.equalsIgnoreCase("ä"))||
(!st.equalsIgnoreCase("ü"))||
(!st.equalsIgnoreCase("õ"))||
(!st.equalsIgnoreCase("ö"))||
(!st.equals("_"))||(!st.equals(" "))
t +=st;
<----------
<======new Row(t,Default.commentColor)
static Row prepareRow(Row r)
String s =r.toString();
s=removeKeyWords(s);
String uus ="";
teisendamine
* int i =0;i
String st = s.substring(i,i+1);
String st2 ="";
String st3 ="";
? i>0
st3 =s.substring(i-1,i);
? i<(s.length()-1)
st2 =s.substring(i+1,i+2);
$
? (i==0)||(i==(s.length()-1))
uus +="$";
allkriips
? st.equals("_")
uus +="\\_";
<----------
%
? st.equals("%")
uus +="\\%";
<----------
ä
? st.equals("ä")
uus +="\\ddot a";
<----------
ö
? st.equals("ö")
uus +="\\ddot o";
<----------
ü
? st.equals("ü")
uus +="\\ddot u";
<----------
Ä
? st.equals("Ä")
uus +="\\ddot A";
<----------
Ö
? st.equals("Ö")
uus +="\\ddot O";
<----------
Ü
? st.equals("Ü")
uus +="\\ddot U";
<----------
õ
? st.equals("õ")
uus +="\\tilde o";
<----------
Õ
? st.equals("Õ")
uus +="\\tilde O";
<----------
[
? st.equals("[")
uus +="_{";
<----------
]
? st.equals("]")
uus +="}";
<----------
=,==,<=,>=,!=
? st.equals("=")
? st3.equals("<")
uus +="\\leq";
<--------------
? st3.equals(">")
uus +="\\geq";
<--------------
? st3.equals("!")
uus +="\\neq";
<--------------
? ((!st2.equals("="))&&(!st3.equals("=")))
uus +=":=";
<--------------
<--------------
? st3.equals("=")
uus +="=";
<--------------
<,>,! + järgnev =
? (st.equals(">"))&&(st2.equals("="))||
(st.equals("<"))&&(st2.equals("="))||
(st.equals("!"))&&(st2.equals("="))
<----------
*
? st.equals("*")
uus +="\\times ";
x-\times
<----------
&&
? st.equals("&")
? st3.equals("&")
uus +="\\vee ";
<--------------
? st2.equals("&")
uus +="";
<--------------
||
? st.equals("|")
? st3.equals("|")
uus +="\\wedge ";
<--------------
? st2.equals("|")
uus +="";
<--------------
<----------
<======new Row(uus,Default.foregroundColor)
static Text prepareText(Text t,Color col)
Text tulemus = new Text(col);
* int i =0; i
Row uus = prepareRow(t.row(i));
uus.trim();
tulemus.insert(uus, i);
tulemus.remove(tulemus.rows.size()-1);
tulemus.comment=t.comment;
tulemus.setColor(col);
<======tulemus
static String removeKeyWords(String s)
String lo1="int short byte long float double boolean char";
String lo2=" public static void private final transient protected";
String lo3="abstract native syncronized volatile";
//String lo4="(int) (short) (byte) (long) (float) (double) (boolean) (char)";
String loetelu =lo1+lo2+lo3;//+lo4;
StringTokenizer st = new StringTokenizer(s," (),;[",true);
String t = "";
* ;st.hasMoreTokens();
String stToken =st.nextToken();
? stToken.length()==1
t+=stToken+" ";
<------
? loetelu.indexOf(stToken)== -1
t+=stToken +" ";
<------
<======t