61 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
		
		
			
		
	
	
			61 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
|  | package webidl; | ||
|  | 
 | ||
|  | typedef Data = Array<Definition>; | ||
|  | 
 | ||
|  | typedef Position = { | ||
|  | 	var file : String; | ||
|  | 	var line : Int; | ||
|  | 	var pos : Int; | ||
|  | } | ||
|  | 
 | ||
|  | typedef Definition = { | ||
|  | 	var pos : Position; | ||
|  | 	var kind : DefinitionKind; | ||
|  | } | ||
|  | 
 | ||
|  | enum DefinitionKind { | ||
|  | 	DInterface( name : String, attrs : Array<Attrib>, fields : Array<Field> ); | ||
|  | 	DImplements( type : String, interfaceName : String ); | ||
|  | 	DEnum( name : String, values : Array<String> ); | ||
|  | } | ||
|  | 
 | ||
|  | typedef Field = { | ||
|  | 	var name : String; | ||
|  | 	var kind : FieldKind; | ||
|  | 	var pos : Position; | ||
|  | } | ||
|  | 
 | ||
|  | enum FieldKind { | ||
|  | 	FMethod( args : Array<FArg>, ret : TypeAttr ); | ||
|  | 	FAttribute( t : TypeAttr ); | ||
|  | 	DConst( name : String, type : Type, value : String ); | ||
|  | } | ||
|  | 
 | ||
|  | typedef FArg = { name : String, opt : Bool, t : TypeAttr }; | ||
|  | typedef TypeAttr = { var t : Type; var attr : Array<Attrib>; }; | ||
|  | 
 | ||
|  | enum Type { | ||
|  | 	TVoid; | ||
|  | 	TInt; | ||
|  | 	TShort; | ||
|  | 	TFloat; | ||
|  | 	TDouble; | ||
|  | 	TBool; | ||
|  | 	TAny; | ||
|  | 	TVoidPtr; | ||
|  | 	TCustom( id : String ); | ||
|  | 	TArray( t : Type ); | ||
|  | } | ||
|  | 
 | ||
|  | enum Attrib { | ||
|  | 	// fields | ||
|  | 	AValue; | ||
|  | 	ARef; | ||
|  | 	AConst; | ||
|  | 	AOperator( op : String ); | ||
|  | 	// interfaces | ||
|  | 	ANoDelete; | ||
|  | 	APrefix( prefix : String ); | ||
|  | 	AJSImplementation( name : String ); | ||
|  | } |