Gramàtica pel Llenguatge Objective-CGramàtica pel Llenguatge Objective-CAquest apèndix presenta una gramàtica formal per les extensions Objective-C del llenguatge C -- com el llenguatge Objective-C està implementat per l'entorn de desenvolupament Cocoa. Aquest afegeix a la gràmàtica de l'estàndard C trobada en l'Apèndic A de El Llenguatge de Programació C (segona edició, 1988) d'en Brian W. Kernighan i en Dennis M. Ritchie, publicat per Prentice Hall, i que ha de llegir-se juntament amb aquest llibre. Les extensions Objective-C presenten alguns simbols nous (com és class interface), però també utilitza simbols (com són function definition) que estan explicats en la gramàtica de l'estandard C. Els símbols mencionats però que no s'explicaran aquí són els següents:
compound statement D'aquests, identifier i string són símbols indefinits. L'Objective-C afegeix símbols indefinits dels seus propis. Dos convencions de notació utilitzades aquí es diferencien de les usades en El Llenguatge de Programació C:
D'altra banda, aquest apèndix segueix les convencions de El Llenguatge de Programació C. Cada part de la gramàtica consisteix d'un símbol seguit per un doble punt i una llista indexada de posibilitats mutuament excloses per extendre el simbol. Per exemple:
receiver: Tanmateix, hi ha una excepció: Encara que sigui extrany, alguns són mutuament no exclosos, els constituents de classes, categories i protocols són llistats en linies separades per mostrar l'ordre dels elements d'una forma més clara. Per exemple:
protocol-declaration: Aquesta excepció de la regla general és fàcilment reconeguts ja que cada llista acaba amb Només hi han cuatre punts d'entrada on el llenguatge Objective-C modifica les regles definides per l'estàndard C:
Aquest apèndix és així dividit en quatre seccions corresponents a aquests punts. On una regla de la gramàtica estàndard C està modificat per una extensió Objective-C, la regla sencera éstà separada en el seu formulari modificat. Continguts:
Declaracions Externes Declaracions Externes
external-declaration:
function-definition
declaration
class-interface
class-implementation
category-interface
category-implementation
protocol-declaration
protocol-declaration-list
class-declaration-list
class-interface:
@interface class-name [ : superclass-name ]
[ protocol-reference-list ]
[ instance-variables ]
[ interface-declaration-list ]
@end
class-implementation:
@implementation class-name [ : superclass-name ]
[ instance-variables ]
[ implementation-definition-list ]
@end
category-interface:
@interface class-name ( category-name )
[ protocol-reference-list ]
[ interface-declaration-list ]
@end
category-implementation:
@implementation class-name ( category-name )
[ implementation-definition-list ]
@end
protocol-declaration:
@protocol protocol-name
[ protocol-reference-list ]
[ interface-declaration-list ]
@end
protocol-declaration-list:
@protocol protocol-list ;
class-declaration-list:
@class class-list ;
class-list:
class-name
class-list , class-name
protocol-reference-list:
< protocol-list >
protocol-list:
protocol-name
protocol-list , protocol-name
class-name:
identifier
superclass-name:
identifier
category-name:
identifier
protocol-name:
identifier
instance-variables:
{ instance-variable-declaration }
instance-variable-declaration:
visibility-specification
struct-declaration-list [instance-variables]
instance-variable-declaration visibility-specification
instance-variable-declaration struct-declaration-list [instance-variables]
visibility-specification:
@private
@protected
@public
interface-declaration-list:
declaration
method-declaration
interface-declaration-list declaration
interface-declaration-list method-declaration
method-declaration:
class-method-declaration
instance-method-declaration
class-method-declaration:
+ [ method-type ] method-selector ;
instance-method-declaration:
– [ method-type ] method-selector ;
implementation-definition-list:
function-definition
declaration
method-definition
implementation-definition-list function-definition
implementation-definition-list declaration
implementation-definition-list method-definition
method-definition:
class-method-definition
instance-method-definition
class-method-definition:
+ [ method-type ] method-selector [ declaration-list ] compound-statement
instance-method-definition:
– [ method-type ] method-selector [ declaration-list ] compound-statement
method-selector:
unary-selector
keyword-selector [ , ... ]
keyword-selector [ , parameter-type-list ]
unary-selector:
selector
keyword-selector:
keyword-declarator
keyword-selector keyword-declarator
keyword-declarator:
: [ method-type ] identifier
selector : [ method-type ] identifier
selector:
identifier
method-type:
( type-name )
Especificadors de Tipus
type-specifier:
void
char
short
int
long
float
double
signed
unsigned
id [ protocol-reference-list ]
class-name [ protocol-reference-list ]
struct-or-union-specifier
enum-specifier
typedef-name
struct-or-union-specifier:
struct-or-union [ identifier ] { struct-declaration-list }
struct-or-union [ identifier ] { @defs ( class-name ) }
struct-or-union identifier
Qualificadors de Tipustype-qualifier: const volatile protocol-qualifier protocol-qualifier: in out inout bycopy byref oneway Expressions Fonamentalsprimary-expression: identifier constant string ( expression ) self message-expression selector-expression protocol-expression encode-expression message-expression: [ receiver message-selector ] receiver: expression class-name super message-selector: selector keyword-argument-list keyword-argument-list: keyword-argument keyword-argument-list keyword-argument keyword-argument: selector : expression : expression selector-expression: @selector ( selector-name ) selector-name: selector keyword-name-list keyword-name-list: keyword-name keyword-name-list keyword-name keyword-name: selector : : protocol-expression: @protocol ( protocol-name ) encode-expression: @encode ( type-name ) Excepcions i Sincronitzacióexception-declarator: declarator try-statement: @trystatement catch-statement: @catch (exception-declarator)statement finally-statement: @finallystatement throw-statement: @throw(identifier) try-block: try-statement catch-statement [ finally-statement ] synchronize-statement: @synchronize(identifier) per Carles el 12/07/2004 - 09:56, actualitzat el 28/08/2005 - 10:54 | versió per a imprimir | entreu o registreu-vos per a enviar comentaris
|
apadrinamentsAjuda a fer crèixer la barra verda amb les teves donacions!
8% (20,0 de 256,0€) 61% (190,0 de 314,0€) 88% (1.011,0 de 1.144,5€) 0% (0,0 de 374,1€) 4% (50,0 de 1.235,0€) 47% (545,0 de 1.170,0€) 61% (700,0 de 1.155,0€) comesfa.orgel teu usuariopcionsQui està en líniaAra hi han 8 usuaris i 527 convidats connectats.
Usuaris connectats:
és popular |