--- branches/charisee/src/compiler/ein/printer.sml 2015/03/27 17:41:18 3152 +++ branches/charisee_dev/src/compiler/ein/printer.sml 2015/11/23 19:29:51 3459 @@ -16,43 +16,62 @@ fun handleAlpha alpha= String.concat[String.concatWith "," (List.map handleIndex alpha)] fun handleBeta(a,b)=String.concat["δ_(",handleIndex a, ",", handleIndex b,")"] fun handleSumRange (mu,lb,ub)= String.concat[(handleIndex mu),"[",iTos(lb),"-",iTos(ub),"]"] - - (*printbody:ein_exp ->string*) - fun printbody term = (case term - of E.Const r => iTos(r) - | E.ConstR r =>RationalEin.toString r + fun printbody b= (case b + of E.B(E.Const r) => iTos(r) + | E.B(E.ConstR r) =>RationalEin.toString r | E.Tensor(id, []) =>String.concat[" S",iTos(id)] | E.Tensor(id, alpha) =>String.concat[" T",iTos(id),"_",handleAlpha alpha] + | E.G(E.Delta(ix)) => handleBeta ix + | E.G(E.Epsilon(ix, jx, kx)) => String.concat["ϵ_",iTos(ix), iTos(jx), iTos(kx)] + | E.G(E.Eps2(ix, jx)) => String.concat["ϵ_",iTos(ix), iTos(jx)] + | E.Field(id, []) =>String.concat[" F",iTos(id)] | E.Field(id, alpha) =>String.concat[" F",iTos(id),"_",handleAlpha alpha] - | E.Krn(tid,[],pos) =>String.concat[" H ",iTos(tid),"[", (printbody pos),"]"] - | E.Krn(tid,betas,pos) => String.concat[" H",iTos(tid),"^{", String.concat (List.map handleBeta betas),"} [",(printbody pos),"]"] - | E.Delta(ix) => handleBeta ix - | E.Value(ix)=> String.concat["_",iTos(ix),"_"] - | E.Epsilon(ix, jx, kx) => String.concat["ϵ_",iTos(ix), iTos(jx), iTos(kx)] - | E.Eps2(ix, jx) => String.concat["ϵ_",iTos(ix), iTos(jx)] - | E.Sum ([(v,_,_)],e1)=>String.concat[" Σ_",handleIndex v,"⋐" ,printbody e1,"⋑",handleIndex v] - | E.Sum (sumindex,e1)=>String.concat[" Σ_",String.concatWith ","(List.map handleSumRange sumindex),"⋐" ,printbody e1,"⋑"] - | E.Neg e1 => String.concat["-NEG-", printbody e1] | E.Lift e1 => String.concat["LIFT ⊢", printbody e1,"⊣"] - | E.Add el => String.concat["(",String.concatWith "+" (List.map printbody el),")"] - | E.Sub(e1, e2) => String.concat ["(",printbody(e1),"---- ",printbody(e2)] - | E.Prod el => String.concat["(",String.concatWith "* " (List.map printbody el),")"] - | E.Div(e1,e2) => String.concat ["(",printbody(e1),")/( ",printbody (e2),")"] + + | E.Conv(fid,alpha, tid ,[])=> String.concat["|v",iTos(fid),"_{",handleAlpha alpha, "}★h(",iTos(tid),")|"] + | E.Conv(fid,alpha, tid, beta)=> String.concat["|v",iTos(fid),"_{",handleAlpha alpha, "}★h(",iTos(tid),")dx_",handleAlpha beta,"}|"] + (* + | E.Conv _ => "F" + *) | E.Partial alpha => String.concat["d/dx_",handleAlpha alpha] | E.Apply(e1, e2)=> String.concat [ printbody(e1),"@{", printbody(e2),"} "] - | E.Conv(fid,alpha, tid ,[])=> String.concat["|v",iTos(fid),"_{",handleAlpha alpha, "}★h",iTos(tid),"|"] - | E.Conv(fid,alpha, tid, beta)=> String.concat["|v",iTos(fid),"★",handleAlpha beta,"}|"] - | E.Probe (e1,e2)=> String.concat ["[",printbody(e1), "","[", printbody(e2),"]]"] - | E.Img (fid,alpha,pos)=> String.concat [" V", iTos(fid),"_",handleAlpha alpha,"[", - (String.concatWith "," (List.map printbody pos)),"]"] - | E.Sqrt e => String.concat[ "√(", printbody e ,")"] - | E.PowInt(e,n1) => String.concat[ "(",printbody e ,")^",iTos n1] - | E.PowReal(e,n1) => String.concat[ "(", printbody e ,")^",RationalEin.toString n1] - | E.Cosine e=> String.concat["Cosine(",printbody e ,")"] - | E.ArcCosine e=> String.concat["ArcCosine(",printbody e ,")"] - | E.Sine e => String.concat["Sine(",printbody e ,")"] - | E.ArcSine e => String.concat["ArcSine(",printbody e ,")"] + (* + | E.Probe (e1,e2)=> String.concat [printbody(e1),"[", printbody(e2),"]"] + *) + | E.Probe (e1,e2)=> String.concat ["Probe(",printbody(e1),")"] + | E.Value(ix)=> String.concat["_",iTos(ix),"_"] + | E.Img (fid,alpha,pos)=> String.concat [" V", iTos(fid),"_",handleAlpha alpha,"[", (String.concatWith "," (List.map printbody pos)),"]"] + | E.Krn(tid,[],pos) =>String.concat[" H ",iTos(tid),"[", (printbody pos),"]"] + | E.Krn(tid,betas,pos) => String.concat[" H",iTos(tid),"^{", String.concat (List.map handleBeta betas),"} [",(printbody pos),"]"] + + | E.Sum ([(v,_,_)],e1)=>String.concat[" Σ_",handleIndex v,"⋐" ,printbody e1,"⋑",handleIndex v] + | E.Sum (sumindex,e1)=>String.concat[" Σ_", String.concatWith ","(List.map handleSumRange sumindex),"⋐" ,printbody e1,"⋑"] + (* + | E.Sum (sumindex,e1)=>String.concat[" Σ",printbody e1,"⋑"] + *) + | E.Op1(E.Neg, e1) => String.concat["-NEG-", printbody e1] + | E.Op1(E.Sqrt ,e )=> String.concat[ "√(", printbody e ,")"] + | E.Op1(E.PowInt n1,e) => String.concat[ "(",printbody e ,")^",Int.toString n1] + | E.Op1(E.PowReal n1,e) => String.concat[ "(", printbody e ,")^",RationalEin.toString n1] + | E.Op1(E.PowEmb (sx,n),e)=>String.concat["POW(",printbody e,"^", iTos n,")"] + | E.Op1(E.Exp, e1)=> String.concat["E^(",printbody e1,")"] + | E.Op1(t,e)=>(case t + of E.Cosine => String.concat["Cosine(",printbody e ,")"] + | E.ArcCosine => String.concat["ArcCosine(",printbody e ,")"] + | E.Sine => String.concat["Sine(",printbody e ,")"] + | E.ArcSine => String.concat["ArcSine(",printbody e ,")"] + | E.Tangent => String.concat["Tangent(",printbody e ,")"] + | E.ArcTangent => String.concat["ArcTangent(",printbody e ,")"] + (*end case*)) + | E.Op2(E.Sub,e1, e2) => String.concat ["(",printbody(e1),"---- ",printbody(e2)] + | E.Op2(E.Div,e1,e2) => String.concat ["(",printbody(e1),")/( ",printbody (e2),")"] + (* + | E.Opn(E.Add, el) => String.concat["(",String.concatWith "+" (List.map printbody el),")"] + | E.Opn(E.Prod, el) => String.concat["{*{",String.concatWith "* " (List.map printbody el),"}*}"]*) + | E.Opn(E.Add, el) => String.concat["Add(",String.concatWith "+" (List.map printbody el),")"] + | E.Opn(E.Prod, el) => String.concat["Prod<",String.concatWith "* " (List.map printbody el),">"] + (* end case *)) (*printerE:EIN ->string*) @@ -69,7 +88,8 @@ | Param(_,_)="" in - String.concat["-EIN-" ,Param(params, 0)," <",printbody(body),">"," _{",Index(index,0),"} "] + String.concat["-EIN-" ,Param(params, 0)," <",printbody(body),">"," _{",Index(index,0),"} "] + end end (* local *)
Click to toggle
does not end with </html> tag
does not end with </body> tag
The output has ended thus: ," _{",Index(index,0),"} "] + end end (* local *)