(DEFMETHOD OCOMPILE ((O OMETA-COMPILER)) (LET (CODE VALUE ARGS PROD PATTERN CONTENTS TERM PARTS BODY LOCALS NAME) (OOR O (LIST (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (OAND O (LIST))) (LAMBDA (O) (OOR O (LIST (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (OFORM O (LAMBDA (O) (OOR O (LIST (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (APPLYWITHARGUMENTS 'EXACTLY O (LIST 'PROD))) (LAMBDA (O) (LET ((V (APPLY 'ANYTHING (LIST O)))) (SETF NAME V) V)) (LAMBDA (O) (LET ((V (APPLY 'ANYTHING (LIST O)))) (SETF LOCALS V) V)) (LAMBDA (O) (LET ((V (APPLY 'OCOMPILE (LIST O)))) (SETF BODY V) V)))))))))) (LAMBDA (O) (LIST 'DEFMETHOD (INTERN (STRING-UPCASE NAME)) `((O ,*OMETA-COMPILER-TARGET*)) (LIST 'LET LOCALS BODY)))))) (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (OFORM O (LAMBDA (O) (OOR O (LIST (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (APPLYWITHARGUMENTS 'EXACTLY O (LIST 'AND))) (LAMBDA (O) (LET ((V (OMANY O (LAMBDA (O) (APPLY 'OCOMPILE (LIST O)))))) (SETF PARTS V) V)))))))))) (LAMBDA (O) `(OAND O (LIST ,@(LOOP FOR P IN PARTS COLLECT `(LAMBDA (O) ,P)))))))) (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (OFORM O (LAMBDA (O) (OOR O (LIST (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (APPLYWITHARGUMENTS 'EXACTLY O (LIST 'OR))) (LAMBDA (O) (LET ((V (OMANY O (LAMBDA (O) (APPLY 'OCOMPILE (LIST O)))))) (SETF PARTS V) V)))))))))) (LAMBDA (O) `(OOR O (LIST ,@(LOOP FOR P IN PARTS COLLECT `(LAMBDA (O) ,P)))))))) (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (OFORM O (LAMBDA (O) (OOR O (LIST (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (APPLYWITHARGUMENTS 'EXACTLY O (LIST 'MANY))) (LAMBDA (O) (LET ((V (APPLY 'OCOMPILE (LIST O)))) (SETF TERM V) V)))))))))) (LAMBDA (O) `(OMANY O (LAMBDA (O) ,TERM)))))) (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (OFORM O (LAMBDA (O) (OOR O (LIST (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (APPLYWITHARGUMENTS 'EXACTLY O (LIST 'MANY1))) (LAMBDA (O) (LET ((V (APPLY 'OCOMPILE (LIST O)))) (SETF TERM V) V)))))))))) (LAMBDA (O) `(OMANY1 O (LAMBDA (O) ,TERM)))))) (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (OFORM O (LAMBDA (O) (OOR O (LIST (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (APPLYWITHARGUMENTS 'EXACTLY O (LIST 'FORM))))))))))) (LAMBDA (O) '(OFORM O (LAMBDA (O) T)))))) (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (OFORM O (LAMBDA (O) (OOR O (LIST (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (APPLYWITHARGUMENTS 'EXACTLY O (LIST 'FORM))) (LAMBDA (O) (LET ((V (APPLY 'OCOMPILE (LIST O)))) (SETF CONTENTS V) V)))))))))) (LAMBDA (O) `(OFORM O (LAMBDA (O) ,CONTENTS)))))) (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (OFORM O (LAMBDA (O) (OOR O (LIST (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (APPLYWITHARGUMENTS 'EXACTLY O (LIST 'NOT))) (LAMBDA (O) (LET ((V (APPLY 'OCOMPILE (LIST O)))) (SETF PATTERN V) V)))))))))) (LAMBDA (O) `(ONOT O (LAMBDA (O) ,PATTERN)))))) (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (OFORM O (LAMBDA (O) (OOR O (LIST (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (APPLYWITHARGUMENTS 'EXACTLY O (LIST 'APPLY))) (LAMBDA (O) (APPLYWITHARGUMENTS 'EXACTLY O (LIST 'SUPER))) (LAMBDA (O) (LET ((V (APPLY 'ANYTHING (LIST O)))) (SETF PROD V) V)) (LAMBDA (O) (LET ((V (OMANY O (LAMBDA (O) (APPLY 'ANYTHING (LIST O)))))) (SETF ARGS V) V)))))))))) (LAMBDA (O) (ERROR "call to rule in super class not supported yet ~A ~A" PROD ARGS))))) (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (OFORM O (LAMBDA (O) (OOR O (LIST (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (APPLYWITHARGUMENTS 'EXACTLY O (LIST 'APPLY))) (LAMBDA (O) (LET ((V (OOR O (LIST (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (ONOT O (LAMBDA (O) (APPLYWITHARGUMENTS 'EXACTLY O (LIST "super"))))) (LAMBDA (O) (APPLY 'ANYTHING (LIST O)))))))))) (SETF PROD V) V)))))))))) (LAMBDA (O) `(APPLY ,PROD (LIST O)))))) (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (OFORM O (LAMBDA (O) (OOR O (LIST (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (APPLYWITHARGUMENTS 'EXACTLY O (LIST 'APPLY))) (LAMBDA (O) (LET ((V (OOR O (LIST (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (ONOT O (LAMBDA (O) (APPLYWITHARGUMENTS 'EXACTLY O (LIST "super"))))) (LAMBDA (O) (APPLY 'ANYTHING (LIST O)))))))))) (SETF PROD V) V)) (LAMBDA (O) (LET ((V (OMANY O (LAMBDA (O) (APPLY 'ANYTHING (LIST O)))))) (SETF ARGS V) V)))))))))) (LAMBDA (O) `(APPLYWITHARGUMENTS ,PROD O (LIST ,@ARGS)))))) (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (OFORM O (LAMBDA (O) (OOR O (LIST (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (APPLYWITHARGUMENTS 'EXACTLY O (LIST 'ASSIGN))) (LAMBDA (O) (LET ((V (APPLY 'ANYTHING (LIST O)))) (SETF NAME V) V)) (LAMBDA (O) (LET ((V (APPLY 'OCOMPILE (LIST O)))) (SETF VALUE V) V)))))))))) (LAMBDA (O) `(LET ((V ,VALUE)) (SETF ,(INTERN (STRING-UPCASE NAME)) V) V))))) (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (OFORM O (LAMBDA (O) (OOR O (LIST (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (APPLYWITHARGUMENTS 'EXACTLY O (LIST 'PRED))) (LAMBDA (O) (LET ((V (APPLY 'ANYTHING (LIST O)))) (SETF CODE V) V)))))))))) (LAMBDA (O) `(OPRED O ,(READ-FROM-STRING CODE)))))) (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (OFORM O (LAMBDA (O) (OOR O (LIST (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (APPLYWITHARGUMENTS 'EXACTLY O (LIST 'ACTION))) (LAMBDA (O) (LET ((V (APPLY 'ANYTHING (LIST O)))) (SETF CODE V) V)))))))))) (LAMBDA (O) (READ-FROM-STRING CODE)))))))))))))))