AMADEUS html plain
import java.util.*;
import java.io.*;
class BaseLanguageJava5 extends BaseLanguage
static AmFrame frame;
BaseLanguageJava5()
PARSE
public boolean parse(SketchyText skt0,
main = source
SketchyText skt1,
main = new
AmFrame dialogTargetFrame)
Antud: 1) skeemtekst skt0 - lihttekst keeles Java5
taval. jooksvas aknas
2) skeemtekst skt1, selle juurskeem (skt1.main) on
tühi üheharuline lihtskeem - tulemuse "juur",
vastab taval. mitteterminalile "Start( )"
Tulemus: analüüsipuu
lisatud skeemi skt1.main sisse (haru liikmeteks)
skt0 viia välja liht-tekstifailina:
String fnimi0 = prepareSourceTextFile(skt0);
parsida fnimi0:
Sketch s = parse(fnimi0, skt0);
s on nüüd analüüsipuu lihtskeem (või veateade)
skt1 <== s
s ainuke haru panna skt1.main haruks
skt1.main.insert(s.branch(0), 0);
lisada uus haru
skt1.main.removeMember(1);
eemaldada vana (tühi) haru
skt1.main.baseLanguage =
BaseLanguage.newBaseLanguage(BaseLanguage.PARSETREE);
<======true
static boolean oliViga;
public Sketch parse(String fnimi0, SketchyText skt0)
failist fnimi0, kus on väljaviidud skt0 (viimane: veateate jaoks)
Sketch s = null;
parser: fnimi0 ==> Sketch s
!!
s = Java5Parser.parse(fnimi0);
ASENDUS !
! (FileNotFoundException e)
System.out.println(e.getMessage());
System.exit(0);
! (ParseException e)
oliViga = true;
String viga = e.getMessage();
System.out.println(viga);
s = errorMsgSketch(skt0, viga);
s on nüüd mudelile vastav, analüüsipuu lihtskeem (või veateade)
<======s
public static Sketch errorMsgSketch(SketchyText skt0, String viga)
<======BaseLanguageJavaCC.errorMsgSketch(skt0, viga)
eeltöötlus
static final int BLOCKCOMMENTJAVADOC = 0;
static final int BLOCKCOMMENT = 1;
static final int LINECOMMENT_AFTER_EMPTY = 10;
static final int LINECOMMENT_AFTER_SEMICOLON= 11;
static final int LINECOMMENT_AFTER_LBRACE = 12;
tuleb omaette ritta
static final int LINECOMMENT_AFTER_RBRACE = 13;
see komm läheb kaduma
static final int LINECOMMENT_NOTALLOWED = 999;
see komm läheb kaduma
static Sketch kommentaarid;
tehakse eeltöötlusel
static int kommNr;
private String prepareSourceTextFile(SketchyText skt0)
Antud: jooksev skeemtekst skt0
Tulemus: antud skeemtekst (eeltöödeldud ja) viidud väljundfaili
tagastatakse väljundfaili nimi
null, kui ebaõnnestus (nt. eeltöötlus)
Kasutatakse: parsimisel ja skeemistamisel
eeltöötlus: skt0 ==> skt0
kommentaarid viia skeemi "kommentaarid"
ja asendada need viitadega sellesse skeemi
String t = skt0.main.comment.toString().trim();
java5sketchifyCommentsIncluded = !t.startsWith("-");
? java5sketchifyCommentsIncluded
töödeldaKommentaarid(skt0);
String fnimi0 = Default.tempSketchifyIn;
skt0 viia välja liht-tekstifailina (skt0 ==> fnimi0)
skt0.file = new AmFile(skt0);
skt0.file.name = fnimi0;
skt0.file.writeTextFile(fnimi0);
<==========fnimi0
private void töödeldaKommentaarid(SketchyText skt0)
Branch br1 = new Branch(Scheme.SIMPLE, new BaseLanguage0());
Sketch sNew = new Sketch(Scheme.SIMPLE, br1, new BaseLanguage0());
sNew.baseLanguage = new BaseLanguageJava();
sNew.branch(0).baseLanguage = new BaseLanguageJava();
Sketch s = skt0.main;
ko~ik (teksti)primitiivid uude skeemteksti
Branch br = s.branch(0);
BaseLanguageJava.transferPrimitives(br, br1);
BaseLanguageJava.comments(br1);
üherealised (//...) on jäänud oma rea kommentaariks
plokk-komm (/* ... */) on pandud alates eraldi reast, reakommentaarideks
Branch brKomm = new Branch(Scheme.SIMPLE, new BaseLanguage0());
brKomm.removeMember(0);
kommentaarid = new Sketch(Scheme.SIMPLE, brKomm, new BaseLanguage0());
kommNr = 0;
docAndBlockComments(br1, brKomm);
lineComments(br1, brKomm);
skt0.main = sNew;
private static void docAndBlockComments(Branch br1, Branch brKomm)
iga primitiivide grupp, mis algab /** annab kommentaari (kuni ... */)
PrimitiveMember p;
..for
* int i=0; i < br1.body.size(); i++
haru iga liikme korral
Object o = br1.member(i);
primitiivi korral
p = (PrimitiveMember)o;
String t1 = p.text.comment.toString().trim();
Row r;
String tKomm;
? t1.startsWith("/**")
&& (p.text.toString().trim().length() == 0)
on doc komm algus
panna kommentaari viit:
r = new Row("kommentaar(" + BLOCKCOMMENTJAVADOC + "," + kommNr + ")",
Default.foregroundColor);
tKomm = "/**";
<======
? t1.startsWith("/*")
&& (p.text.toString().trim().length() == 0)
on plokk-komm algus
panna kommentaari viit:
r = new Row("kommentaar(" + BLOCKCOMMENT + "," + kommNr + ")",
Default.foregroundColor);
tKomm = "/*";
<======
<----------
Text te = new Text();
te.insert(r, 0); te.remove(1);
p.text = te;
kommNr++;
teha kommentaariskeem (skUus) ja lisada see brKomm
Branch brUus = new Branch(Scheme.SIMPLE, new BaseLanguage0());
brUus.removeMember(0);
Sketch skUus = new Sketch(Scheme.SIMPLE, brUus, new BaseLanguage0());
skUus.type = Scheme.MODULE;
skUus.icon = true;
skUus.comment = new Row(tKomm, Default.commentColor);
* ; i < br1.body.size() ; i++
kui komm ei lõpegi
r = new Row(t1, Default.foregroundColor);
te = new Text();
te.insert(r, 0); te.remove(1);
PrimitiveMember pUus = new PrimitiveMember(Primitive.SIMPLE, te);
brUus.add(pUus);
p.text.comment = new Row(Default.commentColor);
kommentaar maha
? t1.endsWith("*/")
brKomm.add(skUus);
<======
järgmine rida:
o = br1.member(i);
p = (PrimitiveMember)o;
t1 = p.text.comment.toString().trim();
private static void lineComments(Branch br1, Branch brKomm)
iga primitiivi mitteühi kommentaar on üks realõpu kommentaar
PrimitiveMember p;
..for
* int i=0; i < br1.body.size(); i++
haru iga liikme korral
Object o = br1.member(i);
primitiivi korral
p = (PrimitiveMember)o;
String t1 = p.text.comment.toString().trim();
? t1.length() == 0
<------
String pTekst = p.text.toString().trim();
int tunnus = LINECOMMENT_NOTALLOWED;
? pTekst.length() == 0
tunnus = LINECOMMENT_AFTER_EMPTY;
? i > 0
Object oEelm = br1.member(i-1);
PrimitiveMember pEelm = (PrimitiveMember)oEelm;
String tEelm = pEelm.text.comment.toString().trim();
? tEelm.endsWith(")")
tunnus = LINECOMMENT_NOTALLOWED;
<======
? pTekst.endsWith(";")
tunnus = LINECOMMENT_AFTER_SEMICOLON;
<======
? pTekst.endsWith("{")
tunnus = LINECOMMENT_AFTER_LBRACE;
<======
? pTekst.endsWith("}")
tunnus = LINECOMMENT_AFTER_RBRACE;
<======
? pTekst.endsWith(")")
for() ja if() järel segab looksulgudeta direktiivi
tunnus = LINECOMMENT_NOTALLOWED;
? tunnus == LINECOMMENT_NOTALLOWED
ei teegi kommentaaririda
<----------
Row r;
String tKomm;
r = new Row("kommentaar(" + tunnus + "," + kommNr + ")",
Default.foregroundColor);
Text te = new Text();
te.insert(r, 0); te.remove(1);
PrimitiveMember newP = new PrimitiveMember(Primitive.SIMPLE, te);
br1.insert(newP, i+1); i++;
kommNr++;
teha p koopia ja lisada see brKomm liikmeks
vajalik kommentaar on siis selle liikme kommentaar
newP = p.makeCopy();
brKomm.add(newP);
SKETCHIFY
static boolean java5sketchifyCommentsIncluded;
public boolean sketchify(SketchyText skt0,
main = source
SketchyText skt1,
main = new
AmFrame dialogTargetFrame)
Antud: 1) skeemtekst skt0 - lihttekst keeles JAVA5
taval. jooksvas aknas
2) skeemtekst skt1, selle juurskeem (skt1.main) on
tühi üheharuline lihtskeem - tulemuse "juur",
vastab taval. mitteterminalile "Start( )"
Tulemus: analüüsipuu
lisatud skeemi skt1.main sisse (haru liikmeteks)
//skt0 viia välja liht-tekstifailina (skt0 ==> fnimiOut ==> fnimiIn)
String fnimiOut = Default.tempSketchifyOut;
skt0.file = new AmFile(skt0);
skt0.file.name = fnimiOut;
skt0.file.writeTextFile(fnimiOut);
teisendada fnimOut ==> fnimiIn
String fnimiIn = Default.tempSketchifyIn;
teisendadaDialoogifail(fnimiOut, fnimiIn);
skt0.file = new AmFile(skt0);
skt0.file.name = fnimiIn;
//parsida fnimiIn
Sketch s = parse(fnimiIn, skt0);
String fnimi0 = prepareSourceTextFile(skt0);
parsida fnimi0:
oliViga = false; Sketch s = parse(fnimi0, skt0);
s on nüüd analüüsipuu lihtskeem (või veateade)
? oliViga
skt1.main.insert(s.branch(0), 0);
lisada uus haru
skt1.main.removeMember(1);
eemaldada vana (tühi) haru
<======true
Sketch mudel = null;
praegu
a la item0BListener (import macro)
//mudel failist dialoogis
Item0100Listener.importInto(dialogTargetFrame, null);
kui oli Cancel
? dialogTargetFrame.getTitle().indexOf("noname") > 0
<======
mudel = dialogTargetFrame.contents.main;
importida konkreetse nimega mudel (töökataloogist)
SketchyText skt = new SketchyText(null);
skt.file = new AmFile(skt);
skt.file.name = Default.modelsDirectory + "Java5Model.html";
konkreetne nimi
skt.frame = dialogTargetFrame;
skt.frame.contents = skt;
skt.file.importsFile();
mudel = skt.main;
? mudel != null
BaseLanguage.sketchifyParseTree(s, mudel);
s ==> s
s on nüüd analüüsipuust saadud, mudelile vastav skeem
(või teisendamata analüüsipuu, kui mudelit ei leitud)
skt1 <== s
s ainuke haru panna skt1.main haruks
s.branch(0).baseLanguage =
BaseLanguage.newBaseLanguage(mudel.baseLanguage.type);
skt1.main.insert(s.branch(0), 0);
lisada uus haru
skt1.main.removeMember(1);
eemaldada vana (tühi) haru
? mudel != null
skt1.main.baseLanguage =
BaseLanguage.newBaseLanguage(mudel.baseLanguage.type);
postprocessResult(skt1);
<======true
järeltöötlus skt1 ==> skt1
private void postprocessResult(SketchyText skt1)
Antud: mudeli järgi skeemistatud skt1
Tulemus: antud skeemtekst on teisendatud
Kasutatakse: skeemistamisel järeltöötluseks
BaseLanguageJavaCC.labelTable(skt1.main);
BaseLanguageJavaCC.breaks(skt1.main);
BaseLanguageJavaCC.ifs(skt1.main);
reduce(skt1.main);
Sketch s = skt1.main;
? java5sketchifyCommentsIncluded
kommentaaridTagasi(s, kommentaarid);
private void kommentaaridTagasi(Sketch s, Sketch kommentaarid)
läbida skeem s
* int i = 0; i < s.body.size(); i++
Branch br = s.branch(i);
läbida haru br
* int j = 0; j < br.body.size(); j++
Object o = br.member(j);
? o instanceof Sketch
Sketch ss = (Sketch)o;
töödelda alamskeem ss
kommentaaridTagasi(ss, kommentaarid);
<------
PrimitiveMember p = (PrimitiveMember)o;
töödelda primitiivliige p
String t = p.text.toString().trim();
StringTokenizer st = new StringTokenizer(t, "(,)");
int tArv = st.countTokens();
Object ooo;
PrimitiveMember ppp;
? tArv == 3
String tok1 = st.nextToken().trim();
? tok1.equals("kommentaar")
String tok2 = st.nextToken().trim();
int kk = Integer.parseInt(tok2);
String tok3 = st.nextToken().trim();
int jj = Integer.parseInt(tok3);
Branch brKomm = kommentaarid.branch(0);
Object oo = brKomm.member(jj);
? kk == BLOCKCOMMENT || kk == BLOCKCOMMENTJAVADOC
br.removeMember(j);
br.insert((Sketch)oo, j);
<======
? kk == LINECOMMENT_AFTER_EMPTY
br.removeMember(j);
br.insert((PrimitiveMember)oo, j);
<======
? kk == LINECOMMENT_AFTER_LBRACE
br.removeMember(j);
PrimitiveMember pp = (PrimitiveMember)oo;
pp.text.insert(new Row(Default.foregroundColor), 1);
pp.text.remove(0);
br.insert(pp, j);
<======
? kk == LINECOMMENT_AFTER_SEMICOLON
eelneva primitiivi teksti kommentaariks
<==========
igaks juhuks
<==========
ppp = (PrimitiveMember)ooo;
? ! ppp.text.toString().trim().endsWith(";")
<==========
PrimitiveMember pp = (PrimitiveMember)oo;
kommentaaride skeemist
ppp.text.comment = pp.text.comment.makeCopy();
br.removeMember(j);
primitiiv tekstiga "kommentaar(... "
j--;
<======
? kk == LINECOMMENT_NOTALLOWED || kk == LINECOMMENT_AFTER_RBRACE
br.removeMember(j);
primitiiv tekstiga "kommentaar(... "
j--;
REDUCE
public void reduce(Sketch s)
BaseLanguageJava.changed = true;
..while
* ; BaseLanguageJava.changed ;
BaseLanguageJava.changed = false;
BaseLanguageJava.reduceSimples(s);
moodulskeemidePäised(s);
avadaPäisetaMoodulskeemid(s);
private void moodulskeemidePäised(Sketch s)
läbida skeem s
* int i = 0, n = s.body.size(); i < n; i++
kui skeemi liikmete arv ei muutu
töödelda skeemi s kommentaar s.comment:Row
? s.type == Scheme.MODULE
töödelda skeemi s päis
* int j = 0, np =s.head.size(); j < np; j++
kui päise liikmete arv ei muutu
PrimitiveHead ph = s.primitiveHead(j);
töödelda elementaarpäis ph
String ptekst = ph.text.row(0).toString();
? ptekst.startsWith("piiritlejad: ")
* int k = 0; k < 13; k++
ph.text.row(0).remove(0);
ph.text.row(0).planSize();
? s.head.size() == 1
on väljakirjeldaja, päis tuua alla
Branch sbr = s.branch(0);
PrimitiveMember sbrpm =
(PrimitiveMember)(sbr.member(0));
String rida = ptekst.substring(13) + " " + sbrpm.text.toString();
sbrpm.text.insert(new Row(rida, Default.foregroundColor), 1);
sbrpm.text.remove(0);
s.removePrimitiveHead(0);
<==========
<======
tõsta osa skeemikommentaariks:
StringTokenizer st = new StringTokenizer(ptekst);
String tok1 = "", tok2= "", tok3= "";
<======
tok1 = st.nextToken();
? !st.hasMoreTokens()
<======
tok2 = st.nextToken();
? !st.hasMoreTokens()
<======
String komm = tok1;
? tok1.equals("@")
komm += " " + tok2 + " " + tok3;
<======
? tok1.equals("class") || tok1.equals("interface") || tok1.equals("enum")
komm += " " + tok2;
<======
on meetod
int avs = ptekst.indexOf("(");
? avs == -1
<======
komm = ptekst.substring(0, avs); // + "( )";
s.comment = new Row(komm, Default.commentColor);
s.comment.planSize();
Branch br = s.branch(i);
läbida haru br
* int j = 0, m = br.body.size(); j < m; j++
kui haru liikmete arv ei muutu
töödelda haru br kommentaar br.comment:Row
Object o = br.member(j);
? o instanceof Sketch
Sketch ss = (Sketch)o;
töödelda alamskeem ss
moodulskeemidePäised(ss);
private void avadaPäisetaMoodulskeemid(Sketch s)
Sketch avatav;
avatav = otsidaPäisetaMoodulskeem(s);
? avatav == null
<======
private Sketch otsidaPäisetaMoodulskeem(Sketch s)
? s.type == Scheme.MODULE
? s.head.size() == 0
<======s
skeemis s otsida päiseta moodulskeem
* int i = 0, n = s.body.size(); i < n; i++
kui skeemi liikmete arv ei muutu
Branch br = s.branch(i);
läbida haru br
* int j = 0, m = br.body.size(); j < m; j++
kui haru liikmete arv ei muutu
Object o = br.member(j);
? o instanceof Sketch
Sketch ss = (Sketch)o;
töödelda alamskeem ss
Sketch res = otsidaPäisetaMoodulskeem(ss);
? res != null
<==============res
<======null
TEXTUALIZE
public boolean textualize(SketchyText skt0,
main = source
SketchyText skt1,
main = new
AmFrame dialogTargetFrame)
Sketch skt0Main = skt0.main.makeCopy();
Sketch skt0MainKeep = skt0.main;
skt0.main = skt0Main;
töödeldaCatchPäised(skt0.main);
BaseLanguage.setAll(skt0.main, BaseLanguage.JAVA);
skt0.main.baseLanguage.textualize(skt0, skt1, dialogTargetFrame);
skt0.main = skt0MainKeep;
BaseLanguage.setAll(skt0.main, BaseLanguage.JAVA5);
BaseLanguage.setAll(skt1.main, BaseLanguage.JAVA5);
<======true
private static void töödeldaCatchPäised(Sketch s)
sama, mis BaseLanguageJavaCC
läbida skeem s
* int i = 0, n = s.body.size(); i < n; i++
kui skeemi liikmete arv ei muutu
Branch br = s.branch(i);
? br.head.size() == 1
PrimitiveHead ph = br.primitiveHead(0);
? ph.type == PrimitiveHead.CATCH
Row r = ph.text.row(0);
? !r.isTrivial()
pole tegelikult FINALLY?
r.insert(new Symbol('('), 1);
r = ph.text.row(ph.text.rows.size()-1);
r.append(new Symbol(')'));
läbida haru br
* int j = 0, m = br.body.size(); j< m; j++
kui haru liikmete arv ei muutu
Object o = br.member(j);
? o instanceof Sketch
Sketch ss = (Sketch)o;
töödelda alamskeem ss
töödeldaCatchPäised(ss);
NORMALIZE
Samad, mis Java orig (esialgu):
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
static int label;
kasut. nii normalize kui ka textualize
prepareTex =====================================
void prepareTex(Sketch s)
eeldab: harude baaskeel on JAVA
prepareTex(s.comment);
pa"ised
* int j = 0;j < s.head.size(); j++
prepareTex(s.primitiveHead(j).text);
prepareTex(s.primitiveHead(j).text.comment);
..for
* int i = 0; i < s.body.size(); i++
Branch br = s.branch(i);
? br.baseLanguage.type != BaseLanguage.JAVACC
<------;
prepareTex(br.comment);
..for
* int j = 0;j < br.head.size(); j++
prepareTex(br.primitiveHead(j).text);
prepareTex(br.primitiveHead(j).text.comment);
..for
* int j = 0; j < br.body.size(); j++
Object o = br.member(j);
? o instanceof Sketch
Sketch sk = (Sketch)o;
sk.baseLanguage.prepareTex(sk);
<------
primitiiv
Primitive p = (Primitive)o;
prepareTex(p.text);
prepareTex(p.text.comment);
primitiiv
<======
private void prepareTex(Row r)
kommentaaris
int nOrig = r.elements.size();
õ -> \~o, ä -> \"a, \ö -> \"o, ü -> \"u ; ka SUURED
aa" -> a"a", ..., oo~ -> o~o~ ja _ -> \_
..for
* int j = 1; j < r.elements.size(); j++
char c0 = 'x', c1 = 'x', c2 = 'x';
r.getElement(j);
..if
? r.sy != null
..if
? r.sy.c == 'õ'
r.remove(j);
r.insert(new Symbol('~', Default.literalColor), j);
r.insert(new Symbol('o', Default.literalColor), j);
j++;
<--------------;
..if
? r.sy.c == 'ä'
r.remove(j);
r.insert(new Symbol('\"', Default.literalColor), j);
r.insert(new Symbol('a', Default.literalColor), j);
j++;
<--------------;
..if
? r.sy.c == 'ö'
r.remove(j);
r.insert(new Symbol('\"', Default.literalColor), j);
r.insert(new Symbol('o', Default.literalColor), j);
j++;
<--------------;
..if
? r.sy.c == 'ü'
r.remove(j);
r.insert(new Symbol('\"', Default.literalColor), j);
r.insert(new Symbol('u', Default.literalColor), j);
j++;
<--------------;
ka SUURED:
..if
? r.sy.c == 'Õ'
r.remove(j);
r.insert(new Symbol('~', Default.literalColor), j);
r.insert(new Symbol('O', Default.literalColor), j);
j++;
<--------------;
..if
? r.sy.c == 'Ä'
r.remove(j);
r.insert(new Symbol('\"', Default.literalColor), j);
r.insert(new Symbol('A', Default.literalColor), j);
j++;
<--------------;
..if
? r.sy.c == 'Ö'
r.remove(j);
r.insert(new Symbol('\"', Default.literalColor), j);
r.insert(new Symbol('O', Default.literalColor), j);
j++;
<--------------;
..if
? r.sy.c == 'Ü'
r.remove(j);
r.insert(new Symbol('\"', Default.literalColor), j);
r.insert(new Symbol('U', Default.literalColor), j);
j++;
<--------------;
/*
if(r.sy.c == 'y'){
r.remove(j);
r.insert(new Symbol('\"', Default.literalColor), j);
r.insert(new Symbol('u', Default.literalColor), j);
j++;
continue;
}
if(r.sy.c == 'Y'){
r.remove(j);
r.insert(new Symbol('\"', Default.literalColor), j);
r.insert(new Symbol('U', Default.literalColor), j);
j++;
continue;
}
*/
..if
? r.sy.c == '_'
r.insert(new Symbol('\\', Default.literalColor), j);
j++;
<--------------;
c2 = Character.toLowerCase(r.sy.c);
..if
? j > 2
r.getElement(j-1);
..if
? r.sy != null
c1 = Character.toLowerCase(r.sy.c);
r.getElement(j-2);
? r.sy != null
c0 = Character.toLowerCase(r.sy.c);
? c2 == '\"'
..if
<----------;
..if
? (c1 == 'a')||(c1 == 'o')||(c1 == 'u')
r.insert(new Symbol('\"', Default.literalColor), j-1);
j++;
<------
? c2 == '~'
? (c0 == 'o') && (c1 == 'o')
r.insert(new Symbol('~', Default.literalColor), j-1);
j++;
for
a" -> \a", . . ., o~ -> \~o
..for
* int j = 1; j < r.elements.size(); j++
char c1 = 'x', c2 = 'x';
r.getElement(j);
..if
? r.sy != null
c2 = Character.toLowerCase(r.sy.c);
..if
? j > 1
r.getElement(j-1);
? r.sy != null
c1 = Character.toLowerCase(r.sy.c);
? c2 == '\"'
..if
? (c1 == 'a')||(c1 == 'o')||(c1 == 'u')
r.remove(j);
r.insert(new Symbol('\"', Default.literalColor), j-1);
r.insert(new Symbol('\\', Default.literalColor), j-1);
j++;
<------
? (c2 == '~') && (c1 == 'o')
r.remove(j);
r.insert(new Symbol('~', Default.literalColor), j-1);
r.insert(new Symbol('\\', Default.literalColor), j-1);
j++;
..if
? nOrig != r.elements.size()
r.planSize();
<======
private void prepareTex(Text t)
mittekommentaaris
..for
* int i = 0; i < t.rows.size(); i++
Row r = t.row(i);
int nOrig = r.elements.size();
..for
* int j = 1; j < r.elements.size(); j++
r.getElement(j);
? r.sy != null
..if
? r.sy.c == 'õ'
r.remove(j);
r.insert(new Symbol('o', Default.literalColor), j);
r.insert(new Symbol('~', Default.literalColor), j);
r.insert(new Symbol('\\', Default.literalColor), j);
j += 2;
<----------;
..if
? r.sy.c == 'ä'
r.remove(j);
r.insert(new Symbol('a', Default.literalColor), j);
r.insert(new Symbol('\"', Default.literalColor), j);
r.insert(new Symbol('\\', Default.literalColor), j);
j += 2;
<----------;
..if
? r.sy.c == 'ö'
r.remove(j);
r.insert(new Symbol('o', Default.literalColor), j);
r.insert(new Symbol('\"', Default.literalColor), j);
r.insert(new Symbol('\\', Default.literalColor), j);
j += 2;
<----------;
..if
? r.sy.c == 'ü'
r.remove(j);
r.insert(new Symbol('u', Default.literalColor), j);
r.insert(new Symbol('\"', Default.literalColor), j);
r.insert(new Symbol('\\', Default.literalColor), j);
j += 2;
<----------;
..if
? r.sy.c == 'Õ'
r.remove(j);
r.insert(new Symbol('O', Default.literalColor), j);
r.insert(new Symbol('~', Default.literalColor), j);
r.insert(new Symbol('\\', Default.literalColor), j);
j += 2;
<----------;
..if
? r.sy.c == 'Ä'
r.remove(j);
r.insert(new Symbol('A', Default.literalColor), j);
r.insert(new Symbol('\"', Default.literalColor), j);
r.insert(new Symbol('\\', Default.literalColor), j);
j += 2;
<----------;
..if
? r.sy.c == 'Ö'
r.remove(j);
r.insert(new Symbol('O', Default.literalColor), j);
r.insert(new Symbol('\"', Default.literalColor), j);
r.insert(new Symbol('\\', Default.literalColor), j);
j += 2;
<----------;
..if
? r.sy.c == 'Ü'
r.remove(j);
r.insert(new Symbol('U', Default.literalColor), j);
r.insert(new Symbol('\"', Default.literalColor), j);
r.insert(new Symbol('\\', Default.literalColor), j);
j += 2;
<----------;
..if
? (r.sy.c == '=') ||
(r.sy.c == '+') ||
(r.sy.c == '-') ||
(r.sy.c == '*') ||
(r.sy.c == '/') ||
(r.sy.c == '<') ||
(r.sy.c == '>')
r.insert(new Symbol('$', Default.literalColor), j);
r.insert(new Symbol('$', Default.literalColor), j+2);
j++;
<======
? (r.sy.c == '{') || (r.sy.c == '}')
r.insert(new Symbol('\\', Default.literalColor), j);
r.insert(new Symbol('$', Default.literalColor), j);
r.insert(new Symbol('$', Default.literalColor), j+3);
j += 2;
<======
? r.sy.c == '|'
r.remove(j);
r.insert(new Symbol('$', Default.literalColor), j++);
r.insert(new Symbol('\\', Default.literalColor), j++);
r.insert(new Symbol('m', Default.literalColor), j++);
r.insert(new Symbol('i', Default.literalColor), j++);
r.insert(new Symbol('d', Default.literalColor), j++);
r.insert(new Symbol('$', Default.literalColor), j);
<======
? r.sy.c == '\\'
r.remove(j);
r.insert(new Symbol('$', Default.literalColor), j++);
r.insert(new Symbol('\\', Default.literalColor), j++);
r.insert(new Symbol('b', Default.literalColor), j++);
r.insert(new Symbol('a', Default.literalColor), j++);
r.insert(new Symbol('c', Default.literalColor), j++);
r.insert(new Symbol('k', Default.literalColor), j++);
r.insert(new Symbol('s', Default.literalColor), j++);
r.insert(new Symbol('l', Default.literalColor), j++);
r.insert(new Symbol('a', Default.literalColor), j++);
r.insert(new Symbol('s', Default.literalColor), j++);
r.insert(new Symbol('h', Default.literalColor), j++);
r.insert(new Symbol('$', Default.literalColor), j);
<======
? (r.sy.c == '&') ||
(r.sy.c == '%') ||
(r.sy.c == '&') ||
(r.sy.c == '#') ||
(r.sy.c == '_')
r.insert(new Symbol('\\', Default.literalColor), j);
j++;
<======
? (r.sy.c == '~') ||
(r.sy.c == '^')
r.insert(new Symbol('\\', Default.literalColor), j);
r.insert(new Symbol('}', Default.literalColor), j+2);
r.insert(new Symbol('{', Default.literalColor), j+2);
j+=3;
? nOrig != r.elements.size()
r.planSize();
<======