|
@@ -135,6 +135,7 @@ Type
|
|
Constructor Create(aContext : TWEBIDLContext; aSource : UTF8String);overload;
|
|
Constructor Create(aContext : TWEBIDLContext; aSource : UTF8String);overload;
|
|
Destructor Destroy; override;
|
|
Destructor Destroy; override;
|
|
Procedure Parse;
|
|
Procedure Parse;
|
|
|
|
+ class function TokenTypeToSequenceType(aToken : TIDLToken) : TSequenceType;
|
|
Property Scanner : TWebIDLScanner Read FScanner;
|
|
Property Scanner : TWebIDLScanner Read FScanner;
|
|
Property Context : TWebIDLContext Read FContext;
|
|
Property Context : TWebIDLContext Read FContext;
|
|
Property Version : TWebIDLVersion Read FVersion Write SetVersion;
|
|
Property Version : TWebIDLVersion Read FVersion Write SetVersion;
|
|
@@ -1249,7 +1250,7 @@ begin
|
|
end;
|
|
end;
|
|
|
|
|
|
function TWebIDLParser.ParseSequenceTypeDef(aParent : TIDLBaseObject): TIDLSequenceTypeDefDefinition;
|
|
function TWebIDLParser.ParseSequenceTypeDef(aParent : TIDLBaseObject): TIDLSequenceTypeDefDefinition;
|
|
-(* On Entry we're on sequence. On exit, we're on the > token *)
|
|
|
|
|
|
+(* On Entry we're on sequence|FrozenArray|ObservableArray. On exit, we're on the > token *)
|
|
|
|
|
|
var
|
|
var
|
|
ok: Boolean;
|
|
ok: Boolean;
|
|
@@ -1257,6 +1258,7 @@ begin
|
|
Result:=TIDLSequenceTypeDefDefinition(AddDefinition(aParent,TIDLSequenceTypeDefDefinition,''));
|
|
Result:=TIDLSequenceTypeDefDefinition(AddDefinition(aParent,TIDLSequenceTypeDefDefinition,''));
|
|
ok:=false;
|
|
ok:=false;
|
|
try
|
|
try
|
|
|
|
+ Result.SequenceType:=TokenTypeToSequenceType(CurrentToken);
|
|
Result.TypeName:='sequence';
|
|
Result.TypeName:='sequence';
|
|
ExpectToken(tkLess);
|
|
ExpectToken(tkLess);
|
|
Result.ElementType:=ParseType(Result);
|
|
Result.ElementType:=ParseType(Result);
|
|
@@ -1342,7 +1344,7 @@ function TWebIDLParser.ParseType(aParent : TIDLBaseObject; FetchFirst : Boolean
|
|
|
|
|
|
Const
|
|
Const
|
|
SimplePrefixTokens = [tkUnsigned,tkLong,tkUnrestricted];
|
|
SimplePrefixTokens = [tkUnsigned,tkLong,tkUnrestricted];
|
|
- ComplexPrefixTokens = [tkSequence,tkPromise,tkBracketOpen,tkRecord,tkFrozenArray];
|
|
|
|
|
|
+ ComplexPrefixTokens = [tkSequence,tkPromise,tkBracketOpen,tkRecord,tkFrozenArray,tkObservableArray];
|
|
PrefixTokens = ComplexPrefixTokens+SimplePrefixTokens;
|
|
PrefixTokens = ComplexPrefixTokens+SimplePrefixTokens;
|
|
PrimitiveTokens = [tkBoolean,tkByte,tkOctet,tkFloat,tkDouble,tkShort,tkAny,tkObject];
|
|
PrimitiveTokens = [tkBoolean,tkByte,tkOctet,tkFloat,tkDouble,tkShort,tkAny,tkObject];
|
|
IdentifierTokens = [tkIdentifier,tkByteString,tkUSVString,tkDOMString];
|
|
IdentifierTokens = [tkIdentifier,tkByteString,tkUSVString,tkDOMString];
|
|
@@ -1426,6 +1428,7 @@ begin
|
|
Case tk of
|
|
Case tk of
|
|
tkRecord : Result:=ParseRecordTypeDef(aParent);
|
|
tkRecord : Result:=ParseRecordTypeDef(aParent);
|
|
tkFrozenArray,
|
|
tkFrozenArray,
|
|
|
|
+ tkObservableArray,
|
|
tkSequence : Result:=ParseSequenceTypeDef(aParent);
|
|
tkSequence : Result:=ParseSequenceTypeDef(aParent);
|
|
tkPromise : Result:=ParsePromiseTypeDef(aParent);
|
|
tkPromise : Result:=ParsePromiseTypeDef(aParent);
|
|
tkBracketOpen : Result:=ParseUnionTypeDef(aParent);
|
|
tkBracketOpen : Result:=ParseUnionTypeDef(aParent);
|
|
@@ -1562,6 +1565,15 @@ begin
|
|
ParseDefinitions(Context.Definitions);
|
|
ParseDefinitions(Context.Definitions);
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
+class function TWebIDLParser.TokenTypeToSequenceType(aToken: TIDLToken): TSequenceType;
|
|
|
|
+begin
|
|
|
|
+ case aToken of
|
|
|
|
+ tkObservableArray : Result:=stObservableArray;
|
|
|
|
+ tkFrozenArray : Result:=stFrozenArray;
|
|
|
|
+ tkSequence : Result:=stSequence;
|
|
|
|
+ end;
|
|
|
|
+end;
|
|
|
|
+
|
|
{ TWebIDLContext }
|
|
{ TWebIDLContext }
|
|
|
|
|
|
constructor TWebIDLContext.Create(OwnsDefinitions : Boolean = True);
|
|
constructor TWebIDLContext.Create(OwnsDefinitions : Boolean = True);
|