1996-05-13 17:32:56 +00:00
|
|
|
/* definition section */
|
|
|
|
|
|
|
|
/* literal block */
|
|
|
|
%{
|
|
|
|
#include <gnustep/base/preface.h>
|
|
|
|
#include <Foundation/NSUtilities.h>
|
|
|
|
#include <Foundation/NSString.h>
|
|
|
|
#include <Foundation/NSData.h>
|
|
|
|
#include <Foundation/NSArray.h>
|
|
|
|
#include <Foundation/NSDictionary.h>
|
|
|
|
%}
|
|
|
|
|
|
|
|
/* token declarations */
|
|
|
|
%token <obj> NSSTRING NSDATA ERROR
|
|
|
|
|
|
|
|
%union {
|
|
|
|
id obj;
|
|
|
|
}
|
|
|
|
|
|
|
|
%type <obj> root object array objlist dictionary keyval_list keyval_pair
|
|
|
|
|
|
|
|
/* rules section */
|
|
|
|
%%
|
|
|
|
root: object
|
|
|
|
{
|
|
|
|
/* want an object, followed by nothing else (<<EOF>>) */
|
|
|
|
return (int)$1;
|
|
|
|
}
|
|
|
|
| error
|
|
|
|
{
|
|
|
|
return (int)nil;
|
|
|
|
}
|
|
|
|
| ERROR
|
|
|
|
{
|
|
|
|
return (int)nil;
|
|
|
|
}
|
|
|
|
;
|
|
|
|
|
|
|
|
object: NSSTRING
|
|
|
|
| NSDATA
|
|
|
|
| array
|
|
|
|
| dictionary
|
|
|
|
;
|
|
|
|
|
|
|
|
array: '(' objlist ')'
|
|
|
|
{$$ = $2;}
|
|
|
|
| '(' ')'
|
1997-09-01 21:59:51 +00:00
|
|
|
{$$ = [NSArray array];}
|
1996-05-13 17:32:56 +00:00
|
|
|
;
|
1997-09-01 21:59:51 +00:00
|
|
|
|
1996-05-13 17:32:56 +00:00
|
|
|
objlist: objlist ',' object
|
|
|
|
{
|
|
|
|
$$ = $1;
|
|
|
|
[$$ addObject:$3];
|
|
|
|
}
|
|
|
|
| object
|
|
|
|
{
|
|
|
|
$$ = [[[NSMutableArray alloc]
|
|
|
|
initWithCapacity:1] autorelease];
|
|
|
|
[$$ addObject:$1];
|
|
|
|
}
|
|
|
|
;
|
|
|
|
|
|
|
|
dictionary: '{' keyval_list '}'
|
|
|
|
{$$ = $2;}
|
|
|
|
| '{' '}'
|
1997-09-01 21:59:51 +00:00
|
|
|
{$$ = [NSDictionary dictionary];}
|
1996-05-13 17:32:56 +00:00
|
|
|
;
|
|
|
|
keyval_list: keyval_list keyval_pair
|
|
|
|
{
|
|
|
|
$$ = $1;
|
|
|
|
[$$ addEntriesFromDictionary:$2];
|
1997-09-01 21:59:51 +00:00
|
|
|
[$2 release];
|
1996-05-13 17:32:56 +00:00
|
|
|
}
|
|
|
|
| keyval_pair
|
1997-09-01 21:59:51 +00:00
|
|
|
{
|
|
|
|
$$ = $1;
|
|
|
|
[$$ autorelease];
|
|
|
|
}
|
1996-05-13 17:32:56 +00:00
|
|
|
;
|
|
|
|
keyval_pair: NSSTRING '=' object ';'
|
|
|
|
{
|
1997-09-01 21:59:51 +00:00
|
|
|
$$ = [[NSMutableDictionary alloc]
|
|
|
|
initWithCapacity:1];
|
1996-05-13 17:32:56 +00:00
|
|
|
[$$ setObject:$3 forKey:$1];
|
|
|
|
}
|
|
|
|
;
|
|
|
|
%%
|
|
|
|
|
|
|
|
/* C code section */
|
|
|
|
int plerror(char *s)
|
|
|
|
{
|
|
|
|
return 0;
|
|
|
|
}
|