(DEFMETHOD APPLICATION ((O OMETA-PARSER)) (LET (ARGS PROD) (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) (APPLY 'SPACES (LIST O))) (LAMBDA (O) (APPLYWITHARGUMENTS 'EXACTLY O (LIST #\<))) (LAMBDA (O) (LET ((V (APPLY 'NAME (LIST O)))) (SETF PROD V) V)) (LAMBDA (O) (LET ((V (OMANY O (LAMBDA (O) (APPLY 'ARGUMENT (LIST O)))))) (SETF ARGS V) V)) (LAMBDA (O) (APPLY 'SPACES (LIST O))) (LAMBDA (O) (APPLYWITHARGUMENTS 'EXACTLY O (LIST #\>))) (LAMBDA (O) `(APPLY ',(INTERN (STRING-UPCASE PROD)) ,@ARGS))))))))))))))) (DEFMETHOD ARGUMENT ((O OMETA-PARSER)) (LET () (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) (ONOT O (LAMBDA (O) (APPLYWITHARGUMENTS 'EXACTLY O (LIST #\>))))) (LAMBDA (O) (APPLY 'HOSTLANGUAGETINYEXPRESSION (LIST O)))))))))))))))) (DEFMETHOD OCHARACTER ((O OMETA-PARSER)) (LET (X) (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) (APPLY 'SPACES (LIST O))) (LAMBDA (O) (APPLYWITHARGUMENTS 'EXACTLY O (LIST #\$))) (LAMBDA (O) (LET ((V (APPLY 'OCHAR (LIST O)))) (SETF X V) V)) (LAMBDA (O) X)))))))))))))) (DEFMETHOD EXPR ((O OMETA-PARSER)) (LET (XS X) (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) (LET ((V (APPLY 'EXPR4 (LIST O)))) (SETF X V) V)) (LAMBDA (O) (LET ((V (OMANY O (LAMBDA (O) (OOR O (LIST (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (APPLYWITHARGUMENTS 'TOKEN O (LIST "|"))) (LAMBDA (O) (APPLY 'EXPR4 (LIST O)))))))))))) (SETF XS V) V)) (LAMBDA (O) `(OR ,X ,@XS))))))))))))))) (DEFMETHOD EXPR1 ((O OMETA-PARSER)) (LET (CS X) (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) (APPLY 'APPLICATION (LIST O)))))) (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (APPLY 'SEMANTICACTION (LIST O)))))) (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (APPLY 'SEMANTICPREDICATE (LIST O)))))) (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (LET ((V (OOR O (LIST (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (APPLYWITHARGUMENTS 'OKEYWORD O (LIST "nil")))))) (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (APPLYWITHARGUMENTS 'OKEYWORD O (LIST "true")))))) (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (APPLYWITHARGUMENTS 'OKEYWORD O (LIST "false")))))) (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (APPLY 'ONUMBER (LIST O)))))) (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (APPLY 'OSTRING (LIST O)))))) (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (APPLY 'OCHARACTER (LIST O)))))) (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (APPLY 'OSYMBOL (LIST O)))))))))) (SETF X V) V)) (LAMBDA (O) `(APPLY 'EXACTLY ,X))))) (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (APPLYWITHARGUMENTS 'TOKEN O (LIST "\""))) (LAMBDA (O) (LET ((V (OMANY O (LAMBDA (O) (OOR O (LIST (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (ONOT O (LAMBDA (O) (APPLYWITHARGUMENTS 'EXACTLY O (LIST #\"))))) (LAMBDA (O) (APPLY 'OCHAR (LIST O)))))))))))) (SETF CS V) V)) (LAMBDA (O) (APPLYWITHARGUMENTS 'EXACTLY O (LIST #\"))) (LAMBDA (O) `(AND ,@(LOOP FOR C IN CS COLLECT `(APPLY 'EXACTLY ,C)) ,'`(ACTION ,(STRING CS))))))) (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (APPLYWITHARGUMENTS 'TOKEN O (LIST "("))) (LAMBDA (O) (LET ((V (APPLY 'EXPR (LIST O)))) (SETF X V) V)) (LAMBDA (O) (APPLYWITHARGUMENTS 'TOKEN O (LIST ")"))) (LAMBDA (O) X)))) (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (APPLYWITHARGUMENTS 'TOKEN O (LIST "{"))) (LAMBDA (O) (APPLYWITHARGUMENTS 'TOKEN O (LIST "}"))) (LAMBDA (O) '(FORM (LAMBDA () T)))))) (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (APPLYWITHARGUMENTS 'TOKEN O (LIST "{"))) (LAMBDA (O) (LET ((V (APPLY 'EXPR (LIST O)))) (SETF X V) V)) (LAMBDA (O) (APPLYWITHARGUMENTS 'TOKEN O (LIST "}"))) (LAMBDA (O) `(FORM ,X))))))))))))))) (DEFMETHOD EXPR2 ((O OMETA-PARSER)) (LET (X) (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) (APPLYWITHARGUMENTS 'TOKEN O (LIST "~"))) (LAMBDA (O) (LET ((V (APPLY 'EXPR2 (LIST O)))) (SETF X V) V)) (LAMBDA (O) (LIST 'NOT X))))) (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (APPLYWITHARGUMENTS 'TOKEN O (LIST "&"))) (LAMBDA (O) (LET ((V (APPLY 'EXPR1 (LIST O)))) (SETF X V) V)) (LAMBDA (O) (LIST 'NOT (LIST 'NOT X)))))) (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (APPLY 'EXPR1 (LIST O)))))))))))))))) (DEFMETHOD EXPR3 ((O OMETA-PARSER)) (LET (N R) (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) (LET ((V (APPLY 'EXPR2 (LIST O)))) (SETF R V) V)) (LAMBDA (O) (OOR O (LIST (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (APPLYWITHARGUMENTS 'TOKEN O (LIST "*"))) (LAMBDA (O) (LET ((V (LIST 'MANY R))) (SETF R V) V))))) (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (APPLYWITHARGUMENTS 'TOKEN O (LIST "+"))) (LAMBDA (O) (LET ((V (LIST 'MANY1 R))) (SETF R V) V))))) (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (APPLY 'EMPTY (LIST O))))))))) (LAMBDA (O) (OOR O (LIST (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (APPLYWITHARGUMENTS 'EXACTLY O (LIST #\:))) (LAMBDA (O) (LET ((V (APPLY 'NAME (LIST O)))) (SETF N V) V)) (LAMBDA (O) (PUSHNEW (INTERN (STRING-UPCASE N)) (LOCALS O))) (LAMBDA (O) (LET ((V `(ASSIGN ,N ,R))) (SETF R V) V))))) (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (APPLY 'EMPTY (LIST O))))))))) (LAMBDA (O) R)))) (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (APPLYWITHARGUMENTS 'TOKEN O (LIST ":"))) (LAMBDA (O) (LET ((V (APPLY 'NAME (LIST O)))) (SETF N V) V)) (LAMBDA (O) (PUSHNEW (INTERN (STRING-UPCASE N)) (LOCALS O))) (LAMBDA (O) `(ASSIGN ,N (APPLY 'ANYTHING)))))))))))))))) (DEFMETHOD EXPR4 ((O OMETA-PARSER)) (LET (XS) (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) (LET ((V (OMANY O (LAMBDA (O) (APPLY 'EXPR3 (LIST O)))))) (SETF XS V) V)) (LAMBDA (O) `(AND ,@XS))))))))))))))) (DEFMETHOD HOSTLANGUAGEEXPRESSION ((O OMETA-PARSER)) (LET (EXPR) (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) (LET ((V (OOR O (LIST (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (OMANY O (LAMBDA (O) (OOR O (LIST (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (ONOT O (LAMBDA (O) (APPLYWITHARGUMENTS 'EXACTLY O (LIST #\]))))) (LAMBDA (O) (APPLY 'ANYTHING (LIST O)))))))))))))))))) (SETF EXPR V) V)) (LAMBDA (O) (COERCE EXPR 'STRING))))))))))))))) (DEFMETHOD HOSTLANGUAGETINYEXPRESSION ((O OMETA-PARSER)) (LET (XS) (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) (APPLY 'SPACES (LIST O))) (LAMBDA (O) (APPLYWITHARGUMENTS 'EXACTLY O (LIST #\'))) (LAMBDA (O) (LET ((V (OMANY O (LAMBDA (O) (OOR O (LIST (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (ONOT O (LAMBDA (O) (APPLYWITHARGUMENTS 'EXACTLY O (LIST #\'))))) (LAMBDA (O) (APPLY 'ANYTHING (LIST O)))))))))))) (SETF XS V) V)) (LAMBDA (O) (APPLYWITHARGUMENTS 'EXACTLY O (LIST #\'))) (LAMBDA (O) (COERCE XS 'STRING))))) (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (APPLY 'SPACES (LIST O))) (LAMBDA (O) (LET ((V (OMANY1 O (LAMBDA (O) (APPLY 'LETTER (LIST O)))))) (SETF XS V) V)) (LAMBDA (O) (INTERN (STRING-UPCASE (COERCE XS 'STRING))))))) (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (APPLY 'LISPEXPR (LIST O)))))))))))))))) (DEFMETHOD LISPEXPR ((O OMETA-PARSER)) (LET (X) (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) (LET ((V (OOR O (LIST (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (APPLY 'LISPLIST (LIST O)))))) (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (APPLY 'LISPATOM (LIST O)))))))))) (SETF X V) V)) (LAMBDA (O) X)))))))))))))) (DEFMETHOD LISPATOM ((O OMETA-PARSER)) (LET () (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) (APPLY 'SPACES (LIST O))) (LAMBDA (O) (OOR O (LIST (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (APPLY 'LISPOPERATOR (LIST O)))))) (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (APPLY 'ONUMBER (LIST O)))))) (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (APPLY 'NAME (LIST O)))))))))))))))))))))) (DEFMETHOD LISPOPERATOR ((O OMETA-PARSER)) (LET () (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) (APPLYWITHARGUMENTS 'EXACTLY O (LIST #\>)))))) (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (APPLYWITHARGUMENTS 'EXACTLY O (LIST #\<)))))) (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (APPLYWITHARGUMENTS 'EXACTLY O (LIST #\+)))))) (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (APPLYWITHARGUMENTS 'EXACTLY O (LIST #\!)))))) (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (APPLYWITHARGUMENTS 'EXACTLY O (LIST #\=)))))) (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (APPLYWITHARGUMENTS 'EXACTLY O (LIST #\-)))))) (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (APPLYWITHARGUMENTS 'EXACTLY O (LIST #\_)))))))))))))))) (DEFMETHOD LISPLIST ((O OMETA-PARSER)) (LET (XS X) (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) (APPLY 'SPACES (LIST O))) (LAMBDA (O) (APPLYWITHARGUMENTS 'EXACTLY O (LIST #\())) (LAMBDA (O) (APPLY 'SPACES (LIST O))) (LAMBDA (O) (APPLYWITHARGUMENTS 'EXACTLY O (LIST #\)))) (LAMBDA (O) NIL)))) (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (APPLY 'SPACES (LIST O))) (LAMBDA (O) (APPLYWITHARGUMENTS 'EXACTLY O (LIST #\())) (LAMBDA (O) (LET ((V (OOR O (LIST (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (APPLY 'LISPLIST (LIST O)))))) (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (APPLY 'LISPATOM (LIST O)))))))))) (SETF X V) V)) (LAMBDA (O) (LET ((V (OMANY O (LAMBDA (O) (OOR O (LIST (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (OMANY1 O (LAMBDA (O) (APPLY 'OSPACE (LIST O))))) (LAMBDA (O) (OOR O (LIST (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (APPLY 'LISPLIST (LIST O)))))) (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (APPLY 'LISPATOM (LIST O)))))))))))))))))) (SETF XS V) V)) (LAMBDA (O) (APPLY 'SPACES (LIST O))) (LAMBDA (O) (APPLYWITHARGUMENTS 'EXACTLY O (LIST #\)))) (LAMBDA (O) (CONS X XS))))))))))))))) (DEFMETHOD OKEYWORD ((O OMETA-PARSER)) (LET (XS) (OOR O (LIST (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (LET ((V (APPLY 'ANYTHING (LIST O)))) (SETF XS V) V))))) (LAMBDA (O) (OOR O (LIST (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (APPLY 'SPACES (LIST O))) (LAMBDA (O) (APPLYWITHARGUMENTS 'SEQ O (LIST XS))) (LAMBDA (O) (ONOT O (LAMBDA (O) (OOR O (LIST (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (APPLY 'LETTER (LIST O)))))) (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (APPLY 'DIGIT (LIST O))))))))))) (LAMBDA (O) XS)))))))))))))) (DEFMETHOD NAME ((O OMETA-PARSER)) (LET (XS X) (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) (APPLY 'SPACES (LIST O))) (LAMBDA (O) (LET ((V (APPLY 'LETTER (LIST O)))) (SETF X V) V)) (LAMBDA (O) (LET ((V (OMANY O (LAMBDA (O) (OOR O (LIST (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (APPLY 'LETTER (LIST O)))))) (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (APPLY 'DIGIT (LIST O)))))))))))) (SETF XS V) V)) (LAMBDA (O) (CONCATENATE 'STRING (STRING X) (COERCE XS 'STRING)))))))))))))))) (DEFMETHOD ONUMBER ((O OMETA-PARSER)) (LET (FP IP) (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) (APPLY 'SPACES (LIST O))) (LAMBDA (O) (LET ((V (OMANY1 O (LAMBDA (O) (APPLY 'DIGIT (LIST O)))))) (SETF IP V) V)) (LAMBDA (O) (OOR O (LIST (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (APPLYWITHARGUMENTS 'EXACTLY O (LIST #\.))) (LAMBDA (O) (LET ((V (OMANY1 O (LAMBDA (O) (APPLY 'DIGIT (LIST O)))))) (SETF FP V) V)) (LAMBDA (O) (FORMAT NIL "~A.~A" IP FP))))) (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (APPLY 'EMPTY (LIST O))) (LAMBDA (O) (READ-FROM-STRING (COERCE IP 'STRING)))))))))))))))))))))) (DEFMETHOD PRODUCTION ((O OMETA-PARSER)) (LET (XS X 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) (ONOT O (LAMBDA (O) (ONOT O (LAMBDA (O) (OOR O (LIST (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (LET ((V (APPLY 'NAME (LIST O)))) (SETF NAME V) V)))))))))))) (LAMBDA (O) (LET ((V (APPLYWITHARGUMENTS 'PRODUCTIONPART O (LIST NAME)))) (SETF X V) V)) (LAMBDA (O) (LET ((V (OMANY O (LAMBDA (O) (OOR O (LIST (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (APPLYWITHARGUMENTS 'TOKEN O (LIST ";"))) (LAMBDA (O) (APPLYWITHARGUMENTS 'PRODUCTIONPART O (LIST NAME)))))))))))) (SETF XS V) V)) (LAMBDA (O) (APPLY 'SPACES (LIST O))) (LAMBDA (O) (APPLY 'END (LIST O))) (LAMBDA (O) `(PROD ,NAME ,(LOCALS O) (OR ,X ,@XS)))))))))))))))) (DEFMETHOD PRODUCTIONPART ((O OMETA-PARSER)) (LET (RHS BODY NAME REQUIREDNAME) (OOR O (LIST (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (LET ((V (APPLY 'ANYTHING (LIST O)))) (SETF REQUIREDNAME V) V))))) (LAMBDA (O) (OOR O (LIST (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (LET ((V (APPLY 'NAME (LIST O)))) (SETF NAME V) V)) (LAMBDA (O) (OPRED O (EQUAL NAME REQUIREDNAME))) (LAMBDA (O) (LET ((V (APPLY 'EXPR4 (LIST O)))) (SETF BODY V) V)) (LAMBDA (O) (OOR O (LIST (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (APPLYWITHARGUMENTS 'TOKEN O (LIST "::="))) (LAMBDA (O) (LET ((V (APPLY 'EXPR (LIST O)))) (SETF RHS V) V)) (LAMBDA (O) `(AND ,BODY ,RHS))))) (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (APPLY 'EMPTY (LIST O))) (LAMBDA (O) BODY)))))))))))))))))))) (DEFMETHOD SEMANTICACTION ((O OMETA-PARSER)) (LET (R) (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) (APPLYWITHARGUMENTS 'TOKEN O (LIST "!["))) (LAMBDA (O) (LET ((V (APPLY 'HOSTLANGUAGEEXPRESSION (LIST O)))) (SETF R V) V)) (LAMBDA (O) (APPLYWITHARGUMENTS 'TOKEN O (LIST "]"))) (LAMBDA (O) (LIST 'ACTION R))))) (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (APPLYWITHARGUMENTS 'TOKEN O (LIST "=>"))) (LAMBDA (O) (APPLYWITHARGUMENTS 'TOKEN O (LIST "["))) (LAMBDA (O) (LET ((V (APPLY 'HOSTLANGUAGEEXPRESSION (LIST O)))) (SETF R V) V)) (LAMBDA (O) (APPLYWITHARGUMENTS 'TOKEN O (LIST "]"))) (LAMBDA (O) (LIST 'ACTION R))))))))))))))) (DEFMETHOD SEMANTICPREDICATE ((O OMETA-PARSER)) (LET (R) (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) (APPLYWITHARGUMENTS 'TOKEN O (LIST "?["))) (LAMBDA (O) (LET ((V (APPLY 'HOSTLANGUAGEEXPRESSION (LIST O)))) (SETF R V) V)) (LAMBDA (O) (APPLYWITHARGUMENTS 'TOKEN O (LIST "]"))) (LAMBDA (O) (LIST 'PRED R))))))))))))))) (DEFMETHOD OSTRING ((O OMETA-PARSER)) (LET (S) (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) (APPLY 'SPACES (LIST O))) (LAMBDA (O) (APPLYWITHARGUMENTS 'EXACTLY O (LIST #\'))) (LAMBDA (O) (LET ((V (OMANY O (LAMBDA (O) (OOR O (LIST (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (ONOT O (LAMBDA (O) (APPLYWITHARGUMENTS 'EXACTLY O (LIST #\'))))) (LAMBDA (O) (APPLY 'OCHAR (LIST O)))))))))))) (SETF S V) V)) (LAMBDA (O) (APPLYWITHARGUMENTS 'EXACTLY O (LIST #\'))) (LAMBDA (O) (COERCE S 'STRING))))))))))))))) (DEFMETHOD OSYMBOL ((O OMETA-PARSER)) (LET (N S) (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) (APPLY 'SPACES (LIST O))) (LAMBDA (O) (APPLYWITHARGUMENTS 'EXACTLY O (LIST #\#))) (LAMBDA (O) (LET ((V (OOR O (LIST (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (APPLY 'NAME (LIST O)))))) (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (LET ((V (APPLY 'OSTRING (LIST O)))) (SETF S V) V)) (LAMBDA (O) `(SUBSEQ ,S 1))))))))) (SETF N V) V)) (LAMBDA (O) `',(INTERN (STRING-UPCASE (COERCE N 'STRING))))))))))))))))) (DEFMETHOD TOKEN ((O OMETA-PARSER)) (LET (XS) (OOR O (LIST (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (LET ((V (APPLY 'ANYTHING (LIST O)))) (SETF XS V) V))))) (LAMBDA (O) (OOR O (LIST (LAMBDA (O) (OAND O (LIST (LAMBDA (O) (APPLY 'SPACES (LIST O))) (LAMBDA (O) (APPLYWITHARGUMENTS 'SEQ O (LIST XS))))))))))))))))