#import #import #import #import #import #import "SmalltalkParser.h" #include #include "smalltalk.h" typedef unichar(*CIMP)(id, SEL, unsigned); @implementation SmalltalkParser /* From Lemon: */ void *SmalltalkParseAlloc(void *(*mallocProc)(size_t)); void SmalltalkParse(void *yyp, int yymajor, id yyminor, SmalltalkParser* p); void SmalltalkParseFree(void *p, void (*freeProc)(void*)); #define CALL_PARSER(token, arg) SmalltalkParse(parser, TOKEN_##token, arg, self);// NSLog(@"Parsing %@ (%s)", arg, #token) #define CHAR(x) charAt(s, charSel, x) #define WHILE(is) for(j=i ; j', GT) CHARCASE('(', LPAREN) CHARCASE(')', RPAREN) CHARCASE('[', LSQBRACK) CHARCASE(']', RSQBRACK) CHARCASE('{', LBRACE) CHARCASE('}', RBRACE) CHARCASE('^', RETURN) case '#': j = i++; do { c=CHAR(++j); } while (j