Jump to content

SOM IDL Language Grammar: Difference between revisions

From EDM2
Created page with "<PRE> specification : [comment] definition+ definition : type_dcl ; [comment] | const_dcl ; [comment] | interface ; [comment] | module ; [comment] | pragma_stm ..."
 
No edit summary
 
Line 1: Line 1:
{{Template:SOMPG}}
{{IBM-Reprint}}
<PRE>
<PRE>
specification : [comment] definition+  
specification : [comment] definition+  

Latest revision as of 23:20, 9 May 2021

System Object Model Programming Guide
  1. About This Book
  2. Introduction to the SOMobjects Developer Toolkit
  3. Tutorial for Implementing SOM Classes
  4. Using SOM Classes in Client Programs
  5. SOM IDL and the SOM Compiler
  6. Implementing Classes in SOM
  7. Distributed SOM (DSOM)
  8. The SOM Interface Repository Framework
  9. The Metaclass Framework
  10. The Event Management Framework
  11. SOMobjects Error Codes
  12. SOM IDL Language Grammar
  13. Implementing Sockets Subclasses
  14. Glossary

Reprint Courtesy of International Business Machines Corporation, © International Business Machines Corporation

specification : [comment] definition+ 
definition : type_dcl ; [comment] 
  | const_dcl ; [comment] 
  | interface ; [comment] 
  | module   ; [comment] 
  | pragma_stm 
module : module identifier [comment] 
  { [comment] definition+ } 
interface : interface identifier 
  | interface_dcl 
interface_dcl : interface identifier [inheritance] [comment] 
  { [comment] export* } [comment] 
inheritance : scoped_name {, scoped_name}* 
export : type_dcl ; [comment] 
  | const_dcl ; [comment] 
  | attr_dcl ; [comment] 
  | op_dcl ; [comment] 
  | implementation_body ; [comment] 
  | pragma_stm 
scoped_name : identifier 
  | :: identifer 
  | scoped_name :: identifer 
const_dcl : const const_type identifier = 
  const_expr 
const_type : integer_type 
  | char_type 
  | boolean_type 
  | floating_pt_type 
  | string_type 
  | scoped_name 
const_expr : or_expr 
or_expr : xor_expr 
  | or_expr 
  | xor_expr 
xor_expr : and_expr|xor_expr ^ and_expr 
and_expr : shift_expr 
  | and_expr & shift_expr 
shift_expr : add_expr: 
  | shift_expr:epv.:pk. >> add_expr 
  | shift_expr:epv. << add_expr 
add_expr : mult_expr 
  | add_expr + mult_expr 
  | add_expr - mult_expr 
mult_expr : unary_expr 
  | mult_expr * unary_expr 
  | mult_expr / unary_expr 
  | mult_expr % unary_expr 
unary_expr : unary_operator primary_expr 
  | primary_expr 
unary_operator : - 
  | + 
  | ~ 
primary_expr : scoped_name 
  | literal 
  | ( const_expr ) 
literal : integer_literal 
  | string_literal 
  | character_literal 
  | floating_pt_literal 
  | boolean_literal 
type_dcl : typedef type_declarator 
  | constr_type_spec 
type_declarator : type_spec declarator {, declarator}* 
type_spec : simple_type_spec 
  | constr_type_spec 
simple_type_spec : base_type_spec 
  | template_type_spec 
  | scoped_name 
base_type_spec : floating_pt_type 
  | integer_type 
  | char_type 
  | boolean_type 
  | octet_type 
  | any_type 
  | voidptr_type 
template_type_spec : sequence_type 
  | string_type 
constr_type_spec : struct_type 
  | union_type 
  | enum_type 
declarator : [stars] std_declarator 
std_declarator : simple_declarator 
  | complex_declarator 
simple_declarator : identifier 
complex_declarator : array_declarator 
array_declarator : simple_declarator fixed_array_size+ 
fixed_array_size : [ const_expr ] 
floating_pt_type : float 
  | double 
integer_type : signed_int 
  | unsigned_int 
signed_int : long 
  | short 
unsigned_int : unsigned signed_int 
char_type : char 
boolean_type : boolean 
octet_type : octet 
any_type : any 
voidptr_type : void stars 
struct_type : ( struct|exception) identifier 
  | ( struct|exception) [comment] 
  { [comment] member* } 
member : type_declarator ; [comment] 
union_type : union identifier 
  | union identifier switch 
  ( switch_type_spec ) [ 
  comment] 
  { [comment] case+ } 
switch_type_spec : integer_type 
  | char_type 
  | boolean_type 
  | enum_type 
  | scoped_name 
case : case_label+ element_spec ; [comment] 
case_label : case const_expr : [comment] 
  | default : [comment] 
element_spec : type_spec declarator 
enum_type : enum identifier { identifier 
  {, identifier}* [comment] } 
sequence_type : sequence < simple_type_spec , const_expr > 
  | sequence < simple_type_spec > 
string_type : string < const_expr > 
  | string 
attr_dcl : [readonly] attribute simple_type_spec 
  declarator {, declarator}* 
op_dcl : [oneway] op_type_spec [stars] identifier 
  parameter_dcls [raises_expr] [context_expr] 
op_type_spec : simple_type_spec 
  | void 
parameter_dcls : ( param_dcl {, param_dcl}* [comme nt] ) 
  | ( ) 
param_dcl : param_attribute simple_type_spec declarator 
param_attribute : in 
  | out 
  | inout 
raises_expr : raises ( scope_name+ ) 
context_expr : context ( context_string{, context_string}* ) 
implementation_body : implementation [comment] 
  { [comment] implementation+ } 
implementation : modifier_stm 
  | pragma_stm 
  | passthru 
  | member 
pragma_stm : #pragma modifier modifier_stm 
  | #pragma somtemittypes on 
  | #pragma somtemittypes off 
modifier_stm : smidentifier : [modifier {, modifier}*] ;[comment] 
  | modifier ; [comment] 
modifier : smidentifier 
  | smidentifier = modifier_value 
modifier_value : smidentifier 
  | string_literal 
  | integer_literal 
  | keyword 
passthru : passthru identifier = string_literal+ ; [comment] 
smidentifier : identifer 
  | _identifier 
stars | *+