/src/tools/syntax/tree/liberty_ast_class_marker.e
Specman e | 62 lines | 38 code | 10 blank | 14 comment | 0 complexity | 7e5db3a965ccea3b2014c390e9e85ee4 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_CLASS_MARKER 16 17inherit 18 LIBERTY_AST_NON_TERMINAL_NODE 19 20create {LIBERTY_NODE_FACTORY} 21 make 22 23feature {} 24 first_keyword: FIXED_STRING is 25 local 26 keyword: EIFFEL_TERMINAL_NODE 27 do 28 keyword ::= nodes.first 29 Result := keyword.name 30 end 31 32feature {LIBERTY_AST_HANDLER} 33 is_deferred: BOOLEAN is 34 do 35 Result := count = 2 and then first_keyword.is_equal(once "KW deferred") 36 end 37 38 is_expanded: BOOLEAN is 39 do 40 Result := count = 2 and then first_keyword.is_equal(once "KW expanded") 41 end 42 43 is_separate: BOOLEAN is 44 do 45 Result := count = 2 and then first_keyword.is_equal(once "KW separate") 46 end 47 48feature {ANY} 49 count: INTEGER is 50 do 51 Result := nodes.count 52 end 53 54 name: STRING is "Class_Marker" 55 56feature {} 57 possible_counts: SET[INTEGER] is 58 once 59 Result := {AVL_SET[INTEGER] << 1, 2 >> } 60 end 61 62end