# This file is part of TagSoup and is Copyright 2002-2008 by John Cowan. # # TagSoup is licensed under the Apache License, # Version 2.0. You may obtain a copy of this license at # http://www.apache.org/licenses/LICENSE-2.0 . You may also have # additional legal rights not granted by this license. # # TagSoup is distributed in the hope that it will be useful, but # unless required by applicable law or agreed to in writing, TagSoup # is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS # OF ANY KIND, either express or implied; not even the implied warranty # of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # State Table Markup Language default namespace = "http://www.ccil.org/~cowan/XML/tagsoup/stml" start = statetable ## Root element statetable = element statetable { attribute version {"1.0"}, attribute id {xsd:ID}?, symbol*, action+, state+ } ## A symbol specifies a non-character input to the state machine symbol = element symbol { attribute id {xsd:ID} } ## An action is the name for what the state machine does action = element action { attribute id {xsd:ID} } ## A state specifies an internal state of the machine state = element state { attribute id {xsd:ID}, tr* } ## A tr specifies a state transition tr = element tr { (attribute symbol {xsd:IDREF} | attribute char {xsd:string {length = "1"}}), attribute action {xsd:IDREF}, attribute newstate {xsd:IDREF} }