/src/tools/syntax/tree/liberty_ast_routine_execution.e
Specman e | 73 lines | 48 code | 11 blank | 14 comment | 0 complexity | d66f7b0c7942b3d431e8c29ebc3fa1cb MD5 | raw file
1-- This file is part of Liberty Eiffel. 2-- 3-- Liberty Eiffel is free software: you can redistribute it and/or modify 4-- it under the terms of the GNU General Public License as published by 5-- the Free Software Foundation, version 3 of the License. 6-- 7-- Liberty Eiffel is distributed in the hope that it will be useful, 8-- but WITHOUT ANY WARRANTY; without even the implied warranty of 9-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 10-- GNU General Public License for more details. 11-- 12-- You should have received a copy of the GNU General Public License 13-- along with Liberty Eiffel. If not, see <http://www.gnu.org/licenses/>. 14-- 15class LIBERTY_AST_ROUTINE_EXECUTION 16 17inherit 18 LIBERTY_AST_NON_TERMINAL_NODE 19 20create {LIBERTY_NODE_FACTORY} 21 make 22 23feature {LIBERTY_AST_HANDLER} 24 is_external: BOOLEAN is 25 do 26 Result := count = 1 27 ensure 28 Result = not is_regular 29 end 30 31 is_regular: BOOLEAN is 32 do 33 Result := count = 2 34 ensure 35 Result = not is_external 36 end 37 38 local_block: LIBERTY_AST_LOCAL_BLOCK is 39 require 40 is_regular 41 do 42 Result ::= nodes.item(0) 43 end 44 45 do_block: LIBERTY_AST_DO_BLOCK is 46 require 47 is_regular 48 do 49 Result ::= nodes.item(1) 50 end 51 52 external_clause: LIBERTY_AST_EXTERNAL is 53 require 54 is_external 55 do 56 Result ::= nodes.item(0) 57 end 58 59feature {ANY} 60 count: INTEGER is 61 do 62 Result := nodes.count 63 end 64 65 name: STRING is "Routine_Execution" 66 67feature {} 68 possible_counts: SET[INTEGER] is 69 once 70 Result := {AVL_SET[INTEGER] << 1, 2 >> } 71 end 72 73end