// Security Automaton extended for Chinese Wall Policy // for one subject ChineseWallPolicyChecker = List(ChineseWallAutomaton) EOF. ChineseWallAutomaton = "Chinese" "Wall" "automaton" AutomatonName "currentState" State ["startState" State] ["transitions" List(Transition)] "groups" List(Group) "citypes" List(CIType) "history" List(Access). State = List(Group) List(CIType). Access = ObjektId "group" Group. Group = GroupName ["citype" CIType]. CIType = CITypeName. Transition = Access. // has boolean exec() method that checks Chinese Wall Policy: // newAccess.group gives group g1 // if g1 in ChineseWallPolicyChecker.currentState ok else // if g1.citype is different from previous types ok else denied ObjektId = Ident. GroupName = Ident. CITypeName = Ident. AutomatonName = Ident. List(S) ~ "(" {S} ")".