blob: b767640800434028a5b73b25204ff72bd51073d2 [file] [log] [blame]
# 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}
}