Home My Page Projects Code Snippets Project Openings diderot
Summary Activity Tracker Tasks SCM

SCM Repository

[diderot] Diff of /branches/charisee/src/compiler/codegen/clang.sml
ViewVC logotype

Diff of /branches/charisee/src/compiler/codegen/clang.sml

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 2666, Wed Jun 4 01:59:49 2014 UTC revision 2667, Thu Jun 5 18:54:12 2014 UTC
# Line 78  Line 78 
78        | S_Return of exp option          (* 'return' [ exp ] ';' *)        | S_Return of exp option          (* 'return' [ exp ] ';' *)
79        | S_Break                         (* 'break' ';' *)        | S_Break                         (* 'break' ';' *)
80        | S_Continue                      (* 'continue' ';' *)        | S_Continue                      (* 'continue' ';' *)
81        | S_ExtAssign of ty*var* exp  
82        (*ty varU = _extension e(most likely a cast)*)           (*Added*)
83        | S_Eq of exp * exp               (* exp=exp ;  *)        | S_Eq of exp * exp               (* exp=exp ;  *)
84    
85      and exp      and exp
# Line 100  Line 100 
100        | E_Bool of bool        | E_Bool of bool
101        | E_Str of string        | E_Str of string
102        | E_Sizeof of ty                  (* "sizeof(" ty ")" *)        | E_Sizeof of ty                  (* "sizeof(" ty ")" *)
       | E_Struct of exp list            (* { e, e1, .. }*)  
103    
104          (*Added*)        | E_Struct of exp list            (* { e, e1, .. }*)
105        | E_Ref of ty * exp               (*  *(ty* )& (exp)  *)        | E_Ref of ty * exp               (*  *(ty* )& (exp)  *)
106        | E_Ext of exp                (*__extension___  exp*)        | E_Ext of exp                (*__extension___  exp*)
107          | E_TyVar of ty * var             (*ty varU *)
108          | E_Sqrt of exp                   (*SQRT(e)*)
109    
110    
111    (* assignment operators *)    (* assignment operators *)
# Line 181  Line 181 
181          | prec (E_Bool _) = atomP          | prec (E_Bool _) = atomP
182          | prec (E_Str _) = atomP          | prec (E_Str _) = atomP
183          | prec (E_Sizeof _) = callP          | prec (E_Sizeof _) = callP
184            | prec _ =21 (*FIX ME *)
185      in      in
186      fun mkGrp e = if (prec e < atomP) then E_Grp e else e      fun mkGrp e = if (prec e < atomP) then E_Grp e else e
187      fun mkAssignOp (e1, rator, e2) = let      fun mkAssignOp (e1, rator, e2) = let
# Line 411  Line 412 
412                  | E_Ref(ty,e2 )=>"*("::tyToString ty::"* )&("::e2s(e2,")"::l)                  | E_Ref(ty,e2 )=>"*("::tyToString ty::"* )&("::e2s(e2,")"::l)
413                      (*  *(ty* )& (exp)  *)                      (*  *(ty* )& (exp)  *)
414                  | E_Ext e1=>"__extension__"::e2s(e1,l)                  | E_Ext e1=>"__extension__"::e2s(e1,l)
415                    | E_TyVar(ty,v)=>tyToString ty::v::l
416                    | E_Sqrt(e)=> "SQRT("::e2s(e,")"::l)
417    
418    
419    
# Line 437  Line 440 
440            | stmtToString(S_Return( SOME e))= String.concat["return ",expToString e]            | stmtToString(S_Return( SOME e))= String.concat["return ",expToString e]
441            (*| S_Break                         (* 'break' ';' *)            (*| S_Break                         (* 'break' ';' *)
442            | S_Continue*)            | S_Continue*)
         | stmtToString(S_ExtAssign( ty,v ,e))=String.concat[tyToString ty, " " ,v,"= _extension_ ",  expToString e,"\n"]  
443          | stmtToString (S_Eq(e1,e2))= String.concat[expToString e1, "=", expToString e2]          | stmtToString (S_Eq(e1,e2))= String.concat[expToString e1, "=", expToString e2]
444          |stmtToString _= ""          |stmtToString _= ""
445    

Legend:
Removed from v.2666  
changed lines
  Added in v.2667

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0