This is GdbValueParser.m in view mode; [Download] [Up]
/*
* A n t l r T r a n s l a t i o n H e a d e r
*
* Terence Parr, Will Cohen, and Hank Dietz: 1989-1994
* Purdue University Electrical Engineering
* With AHPCRC, University of Minnesota
* ANTLR Version 1.33
*/
#include <stdio.h>
#define ANTLR_VERSION 133
#import <Foundation/NSString.h>
#ifndef __Attrib_def__
#define __Attrib_def__
typedef id Attrib;
#endif
#define USER_ZZSYN
void zzcr_attr(Attrib* attr, int token, char* text);
#define LL_K 2
#define zzSET_SIZE 8
#include "antlr.h"
#include "tokens.h"
#include "dlgdef.h"
#include "mode.h"
#ifndef PURIFY
#define PURIFY(r,s)
#endif
ANTLR_INFO
#import <Foundation/NSArray.h>
#import <Foundation/NSAutoreleasePool.h>
#import <Foundation/NSValue.h>
#import "Variable.h"
@implementation Variable (Parser)
// Class variables
NSMutableString* gdbParserErrors;
static const unsigned char* scannedString;
static int length, position;
static int nextchar (void)
{
if (position < length)
return scannedString[position++];
else
return -1;
}
+ (NSMutableArray*)variablesFromDescription:(NSString*)string
{
id pool = [NSAutoreleasePool new];
id vars;
gdbParserErrors = [NSMutableString new];
scannedString = [string cString];
length = [string length];
position = 0;
ANTLRf(vars = variables(), nextchar);
if([gdbParserErrors length]) {
NSLog (@"Errors were encountered during parsing of gdb output! Please "
@"submit this output as bug report:\nString to parse:\n%@\n\nError "
@"message:\n%@", string, gdbParserErrors);
[pool release];
return nil;
}
[vars retain];
[pool release];
[gdbParserErrors autorelease];
[vars autorelease];
// NSLog (@"variables = %@", vars);
return vars;
}
@end
void zzcr_attr(Attrib* attr, int token, char* text)
{
switch (token) {
case STRING:
case IDENTIFIER:
case FUNCTION_NAME:
case CHARACTER:
case OCTALINT:
case DECIMALINT:
case HEXADECIMALINT:
case FLOATONE:
case FLOATTWO:
case FLOATTHREE:
*attr = [NSString stringWithCString:text];
break;
default:
break;
}
}
void zzsyn(char* text, int tok, char* egroup,
SetWordType* eset, int etok, int k, char*bad_text)
{
extern id gdbParserErrors;
[gdbParserErrors appendFormat:
@"line %d: syntax error at \"%s\"",
zzline, (tok == zzEOF_TOKEN) ? "EOF" : bad_text];
if(!etok && !eset) {
[gdbParserErrors appendString:@"\n"];
return;
}
if (k==1)
[gdbParserErrors appendString:@" missing"];
else {
[gdbParserErrors
appendFormat:@"; \"%s\" not", bad_text];
if(zzset_deg(eset) > 1)
[gdbParserErrors appendString:@" in"];
}
if(zzset_deg(eset) > 0)
[gdbParserErrors appendString:zzedecode(eset)];
else
[gdbParserErrors appendFormat:@" %s", zztokens[etok]];
if(strlen(egroup) > 0)
[gdbParserErrors appendFormat:@" in %s", egroup];
[gdbParserErrors appendString:@"\n"];
}
id
#ifdef __STDC__
variables(void)
#else
variables()
#endif
{
id _retv;
PURIFY(_retv,sizeof( id ))
zzRULE;
zzBLOCK(zztasp1);
zzMake0;
{
id var; _retv = [NSMutableArray array];
{
zzBLOCK(zztasp2);
zzMake0;
{
if ( (LA(1)==NO_ARGUMENTS) ) {
zzmatch(NO_ARGUMENTS); zzCONSUME;
}
zzEXIT(zztasp2);
}
}
{
zzBLOCK(zztasp2);
zzMake0;
{
if ( (LA(1)==NO_LOCALS) ) {
zzmatch(NO_LOCALS); zzCONSUME;
}
zzEXIT(zztasp2);
}
}
{
zzBLOCK(zztasp2);
zzMake0;
{
while ( (LA(1)==NO_SYMBOL_TABLE) ) {
zzmatch(NO_SYMBOL_TABLE); zzCONSUME;
zzLOOP(zztasp2);
}
zzEXIT(zztasp2);
}
}
{
zzBLOCK(zztasp2);
zzMake0;
{
while ( (setwd1[LA(1)]&0x1) ) {
var = variable();
[_retv addObject:var];
zzLOOP(zztasp2);
}
zzEXIT(zztasp2);
}
}
zzEXIT(zztasp1);
return _retv;
fail:
zzEXIT(zztasp1);
zzsyn(zzMissText, zzBadTok, (ANTLRChar *)"", zzMissSet, zzMissTok, zzErrk, zzBadText);
zzresynch(setwd1, 0x2);
return _retv;
}
}
id
#ifdef __STDC__
variable(void)
#else
variable()
#endif
{
id _retv;
PURIFY(_retv,sizeof( id ))
zzRULE;
Attrib name, class_id;
zzBLOCK(zztasp1);
zzMake0;
{
id value; _retv = [[Variable new] autorelease];
{
zzBLOCK(zztasp2);
zzMake0;
{
if ( (LA(1)==IDENTIFIER)
) {
zzmatch(IDENTIFIER);
name = zzaCur;
[_retv setName: name];
zzCONSUME;
}
else {
if ( (LA(1)==CLASS) ) {
zzmatch(CLASS);
class_id = zzaCur;
[_retv setName:@"class"];
zzCONSUME;
}
else {zzFAIL(1,zzerr1,&zzMissSet,&zzMissText,&zzBadTok,&zzBadText,&zzErrk); goto fail;}
}
zzEXIT(zztasp2);
}
}
zzmatch(EQUAL); zzCONSUME;
value = typed_value();
[_retv setValue:value];
zzEXIT(zztasp1);
return _retv;
fail:
zzEXIT(zztasp1);
zzsyn(zzMissText, zzBadTok, (ANTLRChar *)"", zzMissSet, zzMissTok, zzErrk, zzBadText);
zzresynch(setwd1, 0x4);
return _retv;
}
}
id
#ifdef __STDC__
typed_value(void)
#else
typed_value()
#endif
{
id _retv;
PURIFY(_retv,sizeof( id ))
zzRULE;
zzBLOCK(zztasp1);
zzMake0;
{
id t; _retv = nil;
zzmatch(LPARENTHESIS); zzCONSUME;
t = type();
zzmatch(RPARENTHESIS); zzCONSUME;
_retv = value( t );
[_retv setType:t];
zzEXIT(zztasp1);
return _retv;
fail:
zzEXIT(zztasp1);
zzsyn(zzMissText, zzBadTok, (ANTLRChar *)"", zzMissSet, zzMissTok, zzErrk, zzBadText);
zzresynch(setwd1, 0x8);
return _retv;
}
}
id
#ifdef __STDC__
type(void)
#else
type()
#endif
{
id _retv;
PURIFY(_retv,sizeof( id ))
zzRULE;
zzBLOCK(zztasp1);
zzMake0;
{
_retv = nil;
_retv = ptype();
{
zzBLOCK(zztasp2);
zzMake0;
{
if ( (LA(1)==DOUBLECOLON) ) {
zzmatch(DOUBLECOLON); zzCONSUME;
zzmatch(STAR);
[[_retv typeName] appendString:@"::* "];
zzCONSUME;
}
zzEXIT(zztasp2);
}
}
zzEXIT(zztasp1);
return _retv;
fail:
zzEXIT(zztasp1);
zzsyn(zzMissText, zzBadTok, (ANTLRChar *)"", zzMissSet, zzMissTok, zzErrk, zzBadText);
zzresynch(setwd1, 0x10);
return _retv;
}
}
id
#ifdef __STDC__
ptype(void)
#else
ptype()
#endif
{
id _retv;
PURIFY(_retv,sizeof( id ))
zzRULE;
zzBLOCK(zztasp1);
zzMake0;
{
_retv = nil;
_retv = typebase();
{
zzBLOCK(zztasp2);
zzMake0;
{
if ( (setwd1[LA(1)]&0x20) ) {
{
zzBLOCK(zztasp3);
zzMake0;
{
if ( (LA(1)==CONST) ) {
zzmatch(CONST);
[[_retv typeName] appendString:@"const "];
zzCONSUME;
}
else {
if ( (LA(1)==VOLATILE)
) {
zzmatch(VOLATILE);
[[_retv typeName] appendString:@"volatile "];
zzCONSUME;
}
}
zzEXIT(zztasp3);
}
}
abs_decl( _retv );
}
zzEXIT(zztasp2);
}
}
zzEXIT(zztasp1);
return _retv;
fail:
zzEXIT(zztasp1);
zzsyn(zzMissText, zzBadTok, (ANTLRChar *)"", zzMissSet, zzMissTok, zzErrk, zzBadText);
zzresynch(setwd1, 0x40);
return _retv;
}
}
void
#ifdef __STDC__
abs_decl( id type )
#else
abs_decl(type)
id type ;
#endif
{
zzRULE;
zzBLOCK(zztasp1);
zzMake0;
{
if ( (setwd1[LA(1)]&0x80) ) {
{
zzBLOCK(zztasp2);
zzMake0;
{
if ( (LA(1)==STAR) ) {
zzmatch(STAR);
[[ type typeName] appendString:@"*"];
[ type setTypeKind:kPointer];
zzCONSUME;
}
else {
if ( (LA(1)==AMPERSAND) ) {
zzmatch(AMPERSAND);
[[ type typeName] appendString:@"&"];
[ type setTypeKind:kPointer];
zzCONSUME;
}
else {zzFAIL(1,zzerr2,&zzMissSet,&zzMissText,&zzBadTok,&zzBadText,&zzErrk); goto fail;}
}
zzEXIT(zztasp2);
}
}
{
zzBLOCK(zztasp2);
zzMake0;
{
if ( (setwd2[LA(1)]&0x1) ) {
abs_decl( type );
}
zzEXIT(zztasp2);
}
}
}
else {
if ( (setwd2[LA(1)]&0x2)
) {
direct_abs_decl( type );
}
else {zzFAIL(1,zzerr3,&zzMissSet,&zzMissText,&zzBadTok,&zzBadText,&zzErrk); goto fail;}
}
zzEXIT(zztasp1);
return;
fail:
zzEXIT(zztasp1);
zzsyn(zzMissText, zzBadTok, (ANTLRChar *)"", zzMissSet, zzMissTok, zzErrk, zzBadText);
zzresynch(setwd2, 0x4);
}
}
void
#ifdef __STDC__
direct_abs_decl( id type )
#else
direct_abs_decl(type)
id type ;
#endif
{
zzRULE;
zzBLOCK(zztasp1);
zzMake0;
{
if ( (LA(1)==LPARENTHESIS) && (setwd2[LA(2)]&0x8) ) {
zzmatch(LPARENTHESIS);
[[ type typeName] appendString:@"("];
zzCONSUME;
abs_decl( type );
zzmatch(RPARENTHESIS);
[[ type typeName] appendString:@")"];
zzCONSUME;
rest_of_direct_abs_decl( type );
}
else {
if ( (LA(1)==LSQUAREBRACKET) ) {
array_mod( type );
rest_of_direct_abs_decl( type );
}
else {
if ( (LA(1)==LPARENTHESIS) && (setwd2[LA(2)]&0x10) ) {
func_mod( type );
rest_of_direct_abs_decl( type );
}
else {zzFAIL(2,zzerr4,zzerr5,&zzMissSet,&zzMissText,&zzBadTok,&zzBadText,&zzErrk); goto fail;}
}
}
zzEXIT(zztasp1);
return;
fail:
zzEXIT(zztasp1);
zzsyn(zzMissText, zzBadTok, (ANTLRChar *)"", zzMissSet, zzMissTok, zzErrk, zzBadText);
zzresynch(setwd2, 0x20);
}
}
void
#ifdef __STDC__
rest_of_direct_abs_decl( id type )
#else
rest_of_direct_abs_decl(type)
id type ;
#endif
{
zzRULE;
zzBLOCK(zztasp1);
zzMake0;
{
if ( (setwd2[LA(1)]&0x40) ) {
direct_abs_decl( type );
}
else {
if ( (setwd2[LA(1)]&0x80)
) {
}
else {zzFAIL(1,zzerr6,&zzMissSet,&zzMissText,&zzBadTok,&zzBadText,&zzErrk); goto fail;}
}
zzEXIT(zztasp1);
return;
fail:
zzEXIT(zztasp1);
zzsyn(zzMissText, zzBadTok, (ANTLRChar *)"", zzMissSet, zzMissTok, zzErrk, zzBadText);
zzresynch(setwd3, 0x1);
}
}
void
#ifdef __STDC__
array_mod( id type )
#else
array_mod(type)
id type ;
#endif
{
zzRULE;
zzBLOCK(zztasp1);
zzMake0;
{
id num;
zzmatch(LSQUAREBRACKET);
[[ type typeName] appendString:@"["];
zzCONSUME;
{
zzBLOCK(zztasp2);
zzMake0;
{
if ( (setwd3[LA(1)]&0x2) ) {
num = int_number( type );
[[ type typeName] appendString:[num stringValue]];
}
zzEXIT(zztasp2);
}
}
zzmatch(RSQUAREBRACKET);
[[ type typeName] appendString:@"]"];
zzCONSUME;
[ type setTypeKind:kArray];
zzEXIT(zztasp1);
return;
fail:
zzEXIT(zztasp1);
zzsyn(zzMissText, zzBadTok, (ANTLRChar *)"", zzMissSet, zzMissTok, zzErrk, zzBadText);
zzresynch(setwd3, 0x4);
}
}
void
#ifdef __STDC__
func_mod( id typeObj )
#else
func_mod(typeObj)
id typeObj ;
#endif
{
zzRULE;
zzBLOCK(zztasp1);
zzMake0;
{
id funcType;
zzmatch(LPARENTHESIS); zzCONSUME;
{
zzBLOCK(zztasp2);
zzMake0;
{
if ( (setwd3[LA(1)]&0x8) ) {
funcType = type();
[[ typeObj typeName] appendString:[funcType typeName]];
{
zzBLOCK(zztasp3);
zzMake0;
{
while ( (LA(1)==COMMA) ) {
zzmatch(COMMA); zzCONSUME;
funcType = type();
[[ typeObj typeName] appendString:[funcType typeName]];
zzLOOP(zztasp3);
}
zzEXIT(zztasp3);
}
}
}
zzEXIT(zztasp2);
}
}
zzmatch(RPARENTHESIS); zzCONSUME;
zzEXIT(zztasp1);
return;
fail:
zzEXIT(zztasp1);
zzsyn(zzMissText, zzBadTok, (ANTLRChar *)"", zzMissSet, zzMissTok, zzErrk, zzBadText);
zzresynch(setwd3, 0x10);
}
}
id
#ifdef __STDC__
typebase(void)
#else
typebase()
#endif
{
id _retv;
PURIFY(_retv,sizeof( id ))
zzRULE;
zzBLOCK(zztasp1);
zzMake0;
{
id string = [NSMutableString string];
id synType;
_retv = [[Type new] autorelease];
[_retv setTypeName:string];
if ( (setwd3[LA(1)]&0x20) ) {
{
zzBLOCK(zztasp2);
zzMake0;
{
if ( (LA(1)==UNSIGNED)
) {
zzmatch(UNSIGNED);
[string appendString:@"unsigned "];
zzCONSUME;
}
zzEXIT(zztasp2);
}
}
{
zzBLOCK(zztasp2);
zzMake0;
{
if ( (LA(1)==LONG) ) {
{
zzBLOCK(zztasp3);
zzMake0;
{
zzmatch(LONG);
[string appendString:@"long "];
[_retv setScalarTypeKind:kLong];
zzCONSUME;
{
zzBLOCK(zztasp4);
zzMake0;
{
if ( (LA(1)==UNSIGNED) ) {
zzmatch(UNSIGNED);
[string appendString:@"unsigned "];
zzCONSUME;
}
zzEXIT(zztasp4);
}
}
{
zzBLOCK(zztasp4);
zzMake0;
{
if ( (LA(1)==INT) ) {
zzmatch(INT);
[string appendString:@"int "];
[_retv setScalarTypeKind:kInt];
zzCONSUME;
}
else {
if ( (LA(1)==LONG) ) {
{
zzBLOCK(zztasp5);
zzMake0;
{
zzmatch(LONG);
[string appendString:@"long "];
[_retv setScalarTypeKind:kLong];
zzCONSUME;
{
zzBLOCK(zztasp6);
zzMake0;
{
if ( (LA(1)==INT)
) {
zzmatch(INT);
[string appendString:@"int "];
zzCONSUME;
}
zzEXIT(zztasp6);
}
}
zzEXIT(zztasp5);
}
}
}
}
zzEXIT(zztasp4);
}
}
zzEXIT(zztasp3);
}
}
}
else {
if ( (LA(1)==INT) ) {
zzmatch(INT);
[string appendString:@"int "];
[_retv setScalarTypeKind:kInt];
zzCONSUME;
}
else {
if ( (LA(1)==SHORT) ) {
{
zzBLOCK(zztasp3);
zzMake0;
{
zzmatch(SHORT);
[string appendString:@"short "];
[_retv setScalarTypeKind:kShort];
zzCONSUME;
{
zzBLOCK(zztasp4);
zzMake0;
{
if ( (LA(1)==UNSIGNED) ) {
zzmatch(UNSIGNED);
[string appendString:@"unsigned "];
zzCONSUME;
}
zzEXIT(zztasp4);
}
}
{
zzBLOCK(zztasp4);
zzMake0;
{
if ( (LA(1)==INT) ) {
zzmatch(INT);
[string appendString:@"int "];
zzCONSUME;
}
zzEXIT(zztasp4);
}
}
zzEXIT(zztasp3);
}
}
}
else {
if ( (LA(1)==CHAR)
) {
zzmatch(CHAR);
[string appendString:@"char "];
[_retv setScalarTypeKind:kChar];
zzCONSUME;
}
else {zzFAIL(1,zzerr7,&zzMissSet,&zzMissText,&zzBadTok,&zzBadText,&zzErrk); goto fail;}
}
}
}
zzEXIT(zztasp2);
}
}
[_retv setTypeKind:kScalar];
}
else {
if ( (LA(1)==FLOAT) ) {
zzmatch(FLOAT);
[string appendString:@"float "];
[_retv setTypeKind:kScalar]; [_retv setScalarTypeKind:kFloat];
zzCONSUME;
}
else {
if ( (LA(1)==DOUBLE) ) {
zzmatch(DOUBLE);
[string appendString:@"double "];
[_retv setTypeKind:kScalar]; [_retv setScalarTypeKind:kDouble];
zzCONSUME;
}
else {
if ( (LA(1)==STRUCT) ) {
zzmatch(STRUCT);
[string appendString:@"struct "];
zzCONSUME;
{
zzBLOCK(zztasp2);
zzMake0;
{
if ( (setwd3[LA(1)]&0x40) ) {
synType = identifier();
[string appendString:synType];
}
else {
if ( (LA(1)==LCURLYBRACE)
) {
zzmatch(LCURLYBRACE);
[string appendString:@"{ "];
zzCONSUME;
{
zzBLOCK(zztasp3);
int zzcnt=1;
zzMake0;
{
do {
synType = type();
[string appendString:[synType typeName]];
synType = identifier();
[string appendString:synType];
{
zzBLOCK(zztasp4);
zzMake0;
{
if ( (LA(1)==LSQUAREBRACKET) ) {
array_mod( _retv );
}
zzEXIT(zztasp4);
}
}
zzmatch(SEMICOLON);
[string appendString:@"; "];
zzCONSUME;
zzLOOP(zztasp3);
} while ( (setwd3[LA(1)]&0x80) );
zzEXIT(zztasp3);
}
}
zzmatch(RCURLYBRACE);
[string appendString:@"}"];
zzCONSUME;
}
else {zzFAIL(1,zzerr8,&zzMissSet,&zzMissText,&zzBadTok,&zzBadText,&zzErrk); goto fail;}
}
zzEXIT(zztasp2);
}
}
[_retv setTypeKind:kStructure];
}
else {
if ( (LA(1)==CLASS) ) {
zzmatch(CLASS); zzCONSUME;
synType = identifier();
[string appendString:@"struct "];
[string appendString:synType];
[_retv setTypeKind:kClass];
}
else {
if ( (LA(1)==UNION) ) {
zzmatch(UNION);
[string appendString:@"union "];
zzCONSUME;
{
zzBLOCK(zztasp2);
zzMake0;
{
if ( (setwd4[LA(1)]&0x1)
) {
synType = identifier();
[string appendString:synType];
}
else {
if ( (LA(1)==LCURLYBRACE) ) {
zzmatch(LCURLYBRACE);
[string appendString:@"{ "];
zzCONSUME;
{
zzBLOCK(zztasp3);
int zzcnt=1;
zzMake0;
{
do {
synType = type();
[string appendString:[synType typeName]];
synType = identifier();
[string appendString:synType];
{
zzBLOCK(zztasp4);
zzMake0;
{
if ( (LA(1)==LSQUAREBRACKET) ) {
array_mod( _retv );
}
zzEXIT(zztasp4);
}
}
zzmatch(SEMICOLON);
[string appendString:@"; "];
zzCONSUME;
zzLOOP(zztasp3);
} while ( (setwd4[LA(1)]&0x2) );
zzEXIT(zztasp3);
}
}
zzmatch(RCURLYBRACE);
[string appendString:@"}"];
zzCONSUME;
}
else {zzFAIL(1,zzerr9,&zzMissSet,&zzMissText,&zzBadTok,&zzBadText,&zzErrk); goto fail;}
}
zzEXIT(zztasp2);
}
}
[_retv setTypeKind:kUnion];
}
else {
if ( (LA(1)==ENUM) ) {
zzmatch(ENUM);
[string appendString:@"enum "];
zzCONSUME;
{
zzBLOCK(zztasp2);
zzMake0;
{
if ( (setwd4[LA(1)]&0x4)
) {
synType = identifier();
[string appendString:synType];
}
else {
if ( (LA(1)==LCURLYBRACE) ) {
zzmatch(LCURLYBRACE);
[string appendString:@"{ "];
zzCONSUME;
synType = identifier();
[string appendString:synType];
{
zzBLOCK(zztasp3);
zzMake0;
{
while ( (LA(1)==COMMA) ) {
zzmatch(COMMA);
[string appendString:@", "];
zzCONSUME;
synType = identifier();
[string appendString:synType];
zzLOOP(zztasp3);
}
zzEXIT(zztasp3);
}
}
zzmatch(RCURLYBRACE);
[string appendString:@"}"];
zzCONSUME;
}
else {zzFAIL(1,zzerr10,&zzMissSet,&zzMissText,&zzBadTok,&zzBadText,&zzErrk); goto fail;}
}
zzEXIT(zztasp2);
}
}
[_retv setTypeKind:kEnum];
}
else {
if ( (setwd4[LA(1)]&0x8) ) {
{
zzBLOCK(zztasp2);
zzMake0;
{
if ( (LA(1)==CONST) ) {
zzmatch(CONST);
[string appendString:@"const "];
zzCONSUME;
}
else {
if ( (LA(1)==VOLATILE)
) {
zzmatch(VOLATILE);
[string appendString:@"volatile "];
zzCONSUME;
}
else {zzFAIL(1,zzerr11,&zzMissSet,&zzMissText,&zzBadTok,&zzBadText,&zzErrk); goto fail;}
}
zzEXIT(zztasp2);
}
}
synType = typebase();
[string appendString:[synType typeName]];
[synType setTypeName:string];
_retv = synType;
}
else {
if ( (LA(1)==VOID) ) {
zzmatch(VOID);
[string appendString:@"void "]; [_retv setTypeKind:kVoid];
zzCONSUME;
}
else {zzFAIL(1,zzerr12,&zzMissSet,&zzMissText,&zzBadTok,&zzBadText,&zzErrk); goto fail;}
}
}
}
}
}
}
}
}
zzEXIT(zztasp1);
return _retv;
fail:
zzEXIT(zztasp1);
zzsyn(zzMissText, zzBadTok, (ANTLRChar *)"", zzMissSet, zzMissTok, zzErrk, zzBadText);
zzresynch(setwd4, 0x10);
return _retv;
}
}
id
#ifdef __STDC__
value( id type )
#else
value(type)
id type ;
#endif
{
id _retv;
PURIFY(_retv,sizeof( id ))
zzRULE;
zzBLOCK(zztasp1);
zzMake0;
{
id num, string, synType; _retv = nil;
if ( (setwd4[LA(1)]&0x20) ) {
num = number( type );
_retv = num;
{
zzBLOCK(zztasp2);
zzMake0;
{
if ( (setwd4[LA(1)]&0x40) ) {
string = descriptive_value();
[_retv setDescription:string];
}
zzEXIT(zztasp2);
}
}
}
else {
if ( (setwd4[LA(1)]&0x80) ) {
synType = identifier();
_retv = [[[ type valueClass] new] autorelease];
[_retv setStringValue:synType];
}
else {
if ( (LA(1)==LCURLYBRACE)
) {
NSMutableArray* array = [NSMutableArray array];
_retv = [[[ type valueClass] new] autorelease];
compound_value( array );
[_retv setArrayValue:array];
}
else {zzFAIL(1,zzerr13,&zzMissSet,&zzMissText,&zzBadTok,&zzBadText,&zzErrk); goto fail;}
}
}
zzEXIT(zztasp1);
return _retv;
fail:
zzEXIT(zztasp1);
zzsyn(zzMissText, zzBadTok, (ANTLRChar *)"", zzMissSet, zzMissTok, zzErrk, zzBadText);
zzresynch(setwd5, 0x1);
return _retv;
}
}
id
#ifdef __STDC__
descriptive_value(void)
#else
descriptive_value()
#endif
{
id _retv;
PURIFY(_retv,sizeof( id ))
zzRULE;
Attrib d1, d2, d3;
zzBLOCK(zztasp1);
zzMake0;
{
_retv = nil;
if ( (LA(1)==CHARACTER) ) {
zzmatch(CHARACTER);
d1 = zzaCur;
_retv = d1;
zzCONSUME;
}
else {
if ( (LA(1)==STRING) ) {
zzmatch(STRING);
d2 = zzaCur;
_retv = d2;
zzCONSUME;
}
else {
if ( (LA(1)==FUNCTION_NAME) ) {
zzmatch(FUNCTION_NAME);
d3 = zzaCur;
_retv = d3;
zzCONSUME;
}
else {zzFAIL(1,zzerr14,&zzMissSet,&zzMissText,&zzBadTok,&zzBadText,&zzErrk); goto fail;}
}
}
zzEXIT(zztasp1);
return _retv;
fail:
zzEXIT(zztasp1);
zzsyn(zzMissText, zzBadTok, (ANTLRChar *)"", zzMissSet, zzMissTok, zzErrk, zzBadText);
zzresynch(setwd5, 0x2);
return _retv;
}
}
id
#ifdef __STDC__
number( id type )
#else
number(type)
id type ;
#endif
{
id _retv;
PURIFY(_retv,sizeof( id ))
zzRULE;
Attrib n1, n2, n3, n4;
zzBLOCK(zztasp1);
zzMake0;
{
_retv = nil;
if ( (LA(1)==FLOATONE) ) {
zzmatch(FLOATONE);
n1 = zzaCur;
_retv = [SimpleValue numberWithString: n1];
zzCONSUME;
}
else {
if ( (LA(1)==FLOATTWO)
) {
zzmatch(FLOATTWO);
n2 = zzaCur;
_retv = [SimpleValue numberWithString: n2];
zzCONSUME;
}
else {
if ( (LA(1)==FLOATTHREE) ) {
zzmatch(FLOATTHREE);
n3 = zzaCur;
_retv = [SimpleValue numberWithString: n3];
zzCONSUME;
}
else {
if ( (LA(1)==STRING) ) {
zzmatch(STRING);
n4 = zzaCur;
_retv = [SimpleValue numberWithString: n4];
zzCONSUME;
}
else {
if ( (setwd5[LA(1)]&0x4) ) {
_retv = int_number( type );
}
else {zzFAIL(1,zzerr15,&zzMissSet,&zzMissText,&zzBadTok,&zzBadText,&zzErrk); goto fail;}
}
}
}
}
zzEXIT(zztasp1);
return _retv;
fail:
zzEXIT(zztasp1);
zzsyn(zzMissText, zzBadTok, (ANTLRChar *)"", zzMissSet, zzMissTok, zzErrk, zzBadText);
zzresynch(setwd5, 0x8);
return _retv;
}
}
id
#ifdef __STDC__
int_number( id type )
#else
int_number(type)
id type ;
#endif
{
id _retv;
PURIFY(_retv,sizeof( id ))
zzRULE;
Attrib n1, n2, n3;
zzBLOCK(zztasp1);
zzMake0;
{
id numberString; _retv = nil;
{
zzBLOCK(zztasp2);
zzMake0;
{
if ( (LA(1)==OCTALINT) ) {
zzmatch(OCTALINT);
n1 = zzaCur;
numberString = n1;
zzCONSUME;
}
else {
if ( (LA(1)==DECIMALINT)
) {
zzmatch(DECIMALINT);
n2 = zzaCur;
numberString = n2;
zzCONSUME;
}
else {
if ( (LA(1)==HEXADECIMALINT) ) {
zzmatch(HEXADECIMALINT);
n3 = zzaCur;
numberString = n3;
zzCONSUME;
}
else {zzFAIL(1,zzerr16,&zzMissSet,&zzMissText,&zzBadTok,&zzBadText,&zzErrk); goto fail;}
}
}
zzEXIT(zztasp2);
}
}
if ([type typeKind] == kPointer)
_retv = [PointerValue pointerWithAddress:numberString];
else
_retv = [SimpleValue numberWithString:numberString];
zzEXIT(zztasp1);
return _retv;
fail:
zzEXIT(zztasp1);
zzsyn(zzMissText, zzBadTok, (ANTLRChar *)"", zzMissSet, zzMissTok, zzErrk, zzBadText);
zzresynch(setwd5, 0x10);
return _retv;
}
}
void
#ifdef __STDC__
compound_value( id components )
#else
compound_value(components)
id components ;
#endif
{
zzRULE;
zzBLOCK(zztasp1);
zzMake0;
{
id val;
zzmatch(LCURLYBRACE); zzCONSUME;
{
zzBLOCK(zztasp2);
zzMake0;
{
if ( (setwd5[LA(1)]&0x20) ) {
{
zzBLOCK(zztasp3);
zzMake0;
{
val = variable_or_typed_value();
[ components addObject:val];
{
zzBLOCK(zztasp4);
zzMake0;
{
while ( (LA(1)==COMMA) ) {
zzmatch(COMMA); zzCONSUME;
val = variable_or_typed_value();
[ components addObject:val];
zzLOOP(zztasp4);
}
zzEXIT(zztasp4);
}
}
zzEXIT(zztasp3);
}
}
}
else {
if ( (LA(1)==DOTS) ) {
zzmatch(DOTS); zzCONSUME;
}
}
zzEXIT(zztasp2);
}
}
zzmatch(RCURLYBRACE); zzCONSUME;
zzEXIT(zztasp1);
return;
fail:
zzEXIT(zztasp1);
zzsyn(zzMissText, zzBadTok, (ANTLRChar *)"", zzMissSet, zzMissTok, zzErrk, zzBadText);
zzresynch(setwd5, 0x40);
}
}
id
#ifdef __STDC__
variable_or_typed_value(void)
#else
variable_or_typed_value()
#endif
{
id _retv;
PURIFY(_retv,sizeof( id ))
zzRULE;
zzBLOCK(zztasp1);
zzMake0;
{
_retv = nil;
if ( (setwd5[LA(1)]&0x80)
) {
_retv = variable();
}
else {
if ( (LA(1)==LPARENTHESIS) ) {
_retv = typed_value();
}
else {zzFAIL(1,zzerr17,&zzMissSet,&zzMissText,&zzBadTok,&zzBadText,&zzErrk); goto fail;}
}
zzEXIT(zztasp1);
return _retv;
fail:
zzEXIT(zztasp1);
zzsyn(zzMissText, zzBadTok, (ANTLRChar *)"", zzMissSet, zzMissTok, zzErrk, zzBadText);
zzresynch(setwd6, 0x1);
return _retv;
}
}
id
#ifdef __STDC__
identifier(void)
#else
identifier()
#endif
{
id _retv;
PURIFY(_retv,sizeof( id ))
zzRULE;
Attrib name1, name2;
zzBLOCK(zztasp1);
zzMake0;
{
if ( (LA(1)==IDENTIFIER) ) {
zzmatch(IDENTIFIER);
name1 = zzaCur;
_retv= name1;
zzCONSUME;
}
else {
if ( (LA(1)==CLASS) ) {
zzmatch(CLASS);
name2 = zzaCur;
_retv= name2;
zzCONSUME;
}
else {zzFAIL(1,zzerr18,&zzMissSet,&zzMissText,&zzBadTok,&zzBadText,&zzErrk); goto fail;}
}
zzEXIT(zztasp1);
return _retv;
fail:
zzEXIT(zztasp1);
zzsyn(zzMissText, zzBadTok, (ANTLRChar *)"", zzMissSet, zzMissTok, zzErrk, zzBadText);
zzresynch(setwd6, 0x2);
return _retv;
}
}
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.