Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
guide:start [2023/04/21 13:35]
rajit [Referencing a process]
guide:start [2023/04/21 13:43] (current)
rajit [Referencing a particular language body]
Line 19: Line 19:
 ==== Referencing a process ==== ==== Referencing a process ====
  
-Once the ''Act'' pointer has been created, a process (provided in the command-line arguments) within the file can be accessed and expanded:+Once the ''Act'' pointer has been created, a process (provided in the command-line arguments) within the file can be accessed and expanded (if necessary):
 <code> <code>
 Process *p = a->findProcess (argv[2]); Process *p = a->findProcess (argv[2]);
Line 26: Line 26:
 } }
 </code> </code>
 +In this example, the assumption is that ''argv[2]'' holds a string that corresponds to the process name.
 ==== Referencing the languages body ==== ==== Referencing the languages body ====
  
Line 34: Line 34:
 lang = p->getlang(); lang = p->getlang();
 </code> </code>
 +This provides access to all the sub-languages specified within the process.((The refinement body is processed by the expansion phase, and hence the expanded process will contains the appropriate sub-language bodies after taking the specified number of refinement steps into account. This is why ''-ref=k'' is an ACT command-line option.))
 ==== Referencing a particular language body ==== ==== Referencing a particular language body ====
  
 A language body can be accessed from the languages pointer. For example, for the chp body: A language body can be accessed from the languages pointer. For example, for the chp body:
-<code>+<code c++>
 act_chp *chp; act_chp *chp;
 chp = lang->getchp(); chp = lang->getchp();
 </code> </code>
 +Note that the ''chp'' pointer will be NULL if there is no CHP sub-language specified within the process definition.
  
-Finally, to get a pointer to the actual object that stores the chp data structure:+Finally, to get a pointer to the actual object that stores the CHP data structure:
 <code> <code>
 act_chp_lang_t *chp_lang; act_chp_lang_t *chp_lang;
Line 53: Line 54:
  
 ==== The statement list data structure ==== ==== The statement list data structure ====
-The linked list ''list_t'' contains elements of type ''listitem_t''. See ''list.h'' or ''list.c'' for details and available methods. This is used to store lists of statements. To get the actual statement stored in the list of statements, call ''list_value'' on the required ''listitem_t'' of the list: +The linked list ''list_t'' contains elements of type ''listitem_t''. See ''list.h'' or ''list.c'' for details and available methods. In a CHP data structure, this is used to store lists of statements. To get the actual statement stored in the list of statements, call ''list_value'' on the required ''listitem_t'' of the list: 
-<code>+<code c++>
 act_chp_lang_t *c; // contains the overall chp body act_chp_lang_t *c; // contains the overall chp body
 act_chp_lang_t *stmt; act_chp_lang_t *stmt;
Line 60: Line 61:
 listitem_t *li; listitem_t *li;
  
 +// if c->type is ACT_CHP_SEMI or ACT_CHP_COMMA 
 stmt_list = c->u.semi_comma.cmd; // returns the linked list stmt_list = c->u.semi_comma.cmd; // returns the linked list