stmts.sa


Generated by gen_html_sa_files from ICSI. Contact gomes@icsi.berkeley.edu for details
 
---------------------------> Sather 1.1 source file <--------------------------
-- Copyright (C) International Computer Science Institute, 1995.  COPYRIGHT  --
-- NOTICE: This code is provided "AS IS" WITHOUT ANY WARRANTY and is subject --
-- to the terms of the SATHER LIBRARY GENERAL PUBLIC LICENSE contained in    --
-- the file "Doc/License" of the Sather distribution.  The license is also   --
-- available from ICSI, 1947 Center St., Suite 600, Berkeley CA 94704, USA.  --
--------> Please email comments to sather-bugs@icsi.berkeley.edu. <----------

-- $AS_STMT: Supertype of routine or iter statement nodes. 
-- AS_STMT: Implementation to be included by $AS_STMT nodes.
-- AS_STMT_LIST
-- AS_DEC_STMT, AS_ASSIGN_STMT, AS_IF_STMT, AS_LOOP_STMT,
-- AS_RETURN_STMT, AS_YIELD_STMT, AS_QUIT_STMT, AS_CASE_STMT,
-- AS_TYPECASE_STMT, AS_ASSERT_STMT, AS_PROTECT_STMT, AS_RAISE_STMT, 
-- AS_EXPR_STMT, AS_LOCK_STMT, AS_UNLOCK_STMT, AS_INTERF_ATTACH_STMT,
-- AS_WITH_NEAR_STMT, AS_IDENT_LIST, AS_ATTACH_STMT,
-- AS_FORK_STMT, AS_PAR_STMT, AS_LOCK_IF_WHEN, AS_SYNC_STMT
--
-- Single classes sometimes represent several productions.
-- Whenever a comment says "if any" that means that "void" is a possible
-- value and it indicates the the component was not present.
-- 


abstract class $AS_STMT < $AS_NODE, $NEXT{$AS_STMT}

abstract class $AS_STMT < $AS_NODE, $NEXT{$AS_STMT} is -- A supertype of all routine or iter statement nodes. surr_stmt_list : AS_STMT_LIST; surr_stmt_list(l:AS_STMT_LIST); transformed : BOOL; -- During pSather transformation of several transformed(set:BOOL); -- tr nodes new nodes are added to the tree. -- If a tr node is in a parameterized class -- this node gets transformed for each -- instantiation of the parameter. -- However, the new nodes must be created -- only once. end;

class AS_STMT < $AS_STMT

class AS_STMT < $AS_STMT is -- A supertype of all routine or iter statement nodes. include AS_NODE; include NEXT{$AS_STMT}; -- The next statement in the list. attr surr_stmt_list : AS_STMT_LIST; attr transformed : BOOL; end;

class AS_STMT_LIST < $AS_NODE

class AS_STMT_LIST < $AS_NODE is include AS_NODE; attr stmts : $AS_STMT; end;

class AS_DEC_STMT < $AS_STMT

class AS_DEC_STMT < $AS_STMT is -- A local declaration statement. Parser should make one of these -- for each element in a list like "a,b,c:FOO". include AS_STMT; attr name:IDENT; -- Name of the local. attr tp:AS_TYPE_SPEC; -- The type of the local. end;

class AS_ASSIGN_STMT < $AS_STMT

class AS_ASSIGN_STMT < $AS_STMT is -- An assignment statement. include AS_STMT; attr lhs_expr:$AS_EXPR; -- Lhs expr if no declaration. attr name:IDENT; -- Name, for declaration (::= or :FOO:=). attr tp:AS_TYPE_SPEC; -- Type, for declaration (:FOO:=). attr rhs:$AS_EXPR; -- Righthand side. end;

class AS_IF_STMT < $AS_STMT

class AS_IF_STMT < $AS_STMT is -- An "if" statement. include AS_STMT; attr test:$AS_EXPR; -- Boolean expression to test. attr then_part:AS_STMT_LIST; -- Statements to execute if true, if any. attr else_part:AS_STMT_LIST; -- "Else" part, if any. end;

class AS_LOOP_STMT < $AS_STMT

class AS_LOOP_STMT < $AS_STMT is -- A "loop" statement. include AS_STMT; attr body:AS_STMT_LIST; -- The body of the loop, if any. end;

class AS_RETURN_STMT < $AS_STMT

class AS_RETURN_STMT < $AS_STMT is -- A "return" statement. include AS_STMT; attr val:$AS_EXPR; -- Return value, if any. end;

class AS_YIELD_STMT < $AS_STMT

class AS_YIELD_STMT < $AS_STMT is -- A "yield" statement. include AS_STMT; attr val:$AS_EXPR; -- Yield value, if any. end;

class AS_QUIT_STMT < $AS_STMT

class AS_QUIT_STMT < $AS_STMT is -- A "quit" statement. include AS_STMT; end;

class AS_CASE_STMT < $AS_STMT

class AS_CASE_STMT < $AS_STMT is -- A "case" statement. include AS_STMT; attr test:$AS_EXPR; -- The expression to test. attr when_part:AS_CASE_WHEN; -- The list of "when" clauses. attr else_part:AS_STMT_LIST; -- The "else" part. attr no_else:BOOL; -- True if there is no "else" part. end;

class AS_CASE_WHEN < $AS_NODE

class AS_CASE_WHEN < $AS_NODE is -- A "when" clause of a "case" statement. The parser should make -- one of these for each object listed, eg. "when a,b,c then". -- When there are multiple targets, the `then_part's should be -- pointers to the same object. include AS_NODE; include NEXT{SAME}; -- Other clauses, if any. attr val:$AS_EXPR; -- A value to compare against. attr then_part:AS_STMT_LIST; -- The statements to execute. end;

class AS_TYPECASE_STMT < $AS_STMT

class AS_TYPECASE_STMT < $AS_STMT is -- A "typecase" statement. Parser should put any declaration or -- assignment in a separate object before this. include AS_STMT; attr name:IDENT; -- The local to switch on. attr when_part:AS_TYPECASE_WHEN; -- The list of "when" clauses. attr else_part:AS_STMT_LIST; -- The "else" part. attr no_else:BOOL; -- True if there is no "else" part. end;

class AS_TYPECASE_WHEN < $AS_NODE, $NEXT{AS_TYPECASE_WHEN}

class AS_TYPECASE_WHEN < $AS_NODE, $NEXT{AS_TYPECASE_WHEN} is -- A "when" clause of a "typecase" statement. include AS_NODE; include NEXT{SAME}; -- Other clauses, if any. attr tp:AS_TYPE_SPEC; -- A type to compare against. attr then_part:AS_STMT_LIST; -- The statements to execute. end;

class AS_ASSERT_STMT < $AS_STMT

class AS_ASSERT_STMT < $AS_STMT is -- An "assert" statement. include AS_STMT; attr test:$AS_EXPR; -- The boolean expression to test. end;

class AS_PROTECT_STMT < $AS_STMT

class AS_PROTECT_STMT < $AS_STMT is -- A "protect" statement. include AS_STMT; attr body:AS_STMT_LIST; -- The statements to protect. attr when_part:AS_PROTECT_WHEN; -- The "when" parts. attr else_part:AS_STMT_LIST; -- The "else" parts. attr no_else:BOOL; -- True if there is no "else" part. end;

class AS_PROTECT_WHEN < $AS_NODE

class AS_PROTECT_WHEN < $AS_NODE is -- The "when" part of a "protect" statement. include AS_NODE; include NEXT{SAME}; attr tp:AS_TYPE_SPEC; -- The types to check. attr then_part:AS_STMT_LIST; -- The statements to execute. end;

class AS_PAR_STMT < $AS_STMT

class AS_PAR_STMT < $AS_STMT is -- A "par" statement. (pSather) include AS_STMT; attr body: AS_STMT_LIST; attr helper_class : IDENT; attr rout : AS_ROUT_DEF; -- Pointer to replacing routine; end;

class AS_INTERF_ATTACH_STMT < $AS_STMT

class AS_INTERF_ATTACH_STMT < $AS_STMT is -- pSather -- fork, par, and attach will be transformed into AS_INTERF_ATTACH. include AS_STMT; attr routname: IDENT; attr helpername : IDENT; attr gatename : IDENT; attr at : $AS_EXPR; end;

class AS_LOCK_STMT < $AS_STMT

class AS_LOCK_STMT < $AS_STMT is -- A "lock" statement. (pSather) include AS_STMT; attr e_list: $AS_EXPR; -- The expressions to be locked. attr then_part: AS_STMT_LIST; attr if_when_part:AS_LOCK_IF_WHEN; -- The list of "if - when" clauses. attr else_part:AS_STMT_LIST; -- The "else" part. attr no_else:BOOL; -- True if there is no "else" part. end;

class AS_LOCK_IF_WHEN < $AS_NODE

class AS_LOCK_IF_WHEN < $AS_NODE is -- A "if - when" clause of a "lock" statement. The parser should make -- one of these for each object listed, eg. "if x when a,b,c then". include AS_NODE; include NEXT{SAME}; -- Other clauses, if any. attr val:$AS_EXPR; -- the guard. attr e_list: $AS_EXPR; -- the expressions to be locked. attr then_part:AS_STMT_LIST; -- The statements to execute. elts_size:INT is if void(e_list) then return 0-- AS_LOCK_IF_WHEN::e_list else return e_list.size-- AS_LOCK_IF_WHEN::e_list end end; end;

class AS_UNLOCK_STMT < $AS_STMT

class AS_UNLOCK_STMT < $AS_STMT is -- A "unlock" statement. (pSather) include AS_STMT; attr e: $AS_EXPR; -- The expression to be unlocked. end;

class AS_SYNC_STMT < $AS_STMT

class AS_SYNC_STMT < $AS_STMT is -- A "sync" statement. include AS_STMT; end;

class AS_WITH_NEAR_STMT < $AS_STMT

class AS_WITH_NEAR_STMT < $AS_STMT is -- A "with_near" statement. (pSather) include AS_STMT; attr elts_size: INT; -- is computed during parse. attr idents: AS_IDENT_LIST; attr self_occurred : BOOL; attr near_part: AS_STMT_LIST; attr else_part: AS_STMT_LIST; end;

class AS_IDENT_LIST < $AS_NODE

class AS_IDENT_LIST < $AS_NODE is -- A list of identifiers. Used to represent the ident_list of -- a with_near statement. include AS_NODE; include NEXT{SAME}; -- Other clauses, if any. attr name: IDENT end;

class AS_ATTACH_STMT < $AS_STMT

class AS_ATTACH_STMT < $AS_STMT is -- An assignment statement. (pSather) include AS_STMT; attr lhs:$AS_EXPR; -- Lhs (Gate) expr. attr rhs:$AS_EXPR; -- Right hand side. attr dont_print:BOOL; -- while AS_out attr helper_class : IDENT; attr rout : AS_ROUT_DEF; -- Pointer to replacing routine end;

class AS_FORK_STMT < $AS_STMT

class AS_FORK_STMT < $AS_STMT is -- A "fork" statement (pSather) include AS_STMT; attr body: AS_STMT_LIST; -- The statements to execute. attr at : $AS_EXPR; attr helper_class : IDENT; attr rout : AS_ROUT_DEF; -- Pointer to replacing routine end;

class AS_RAISE_STMT < $AS_STMT

class AS_RAISE_STMT < $AS_STMT is -- A "raise" statement. include AS_STMT; attr val:$AS_EXPR; -- The exception object. end;

class AS_EXPR_STMT < $AS_STMT

class AS_EXPR_STMT < $AS_STMT is -- A "expression" statement. include AS_STMT; attr e: $AS_EXPR; -- The expression. --pSather attr at:$AS_EXPR; -- Computed during pSather Trafo end;