Skip to content

Tutorial Pattern Matching

Keith Sterling edited this page Sep 26, 2017 · 11 revisions

Pattern Matching

You can build a lot of simple questions and answers with this form, but it becomes unmanageable when you get to very large numbers. You end up repeating yourself and trying to guess every possible combination of a question someone might ask.

To solve this problem AIML comes with power pattern matching capabilities. Instead of including every possible world in every possible combination, an AIML developer uses special syntax which can be used to match one or more words. This allows the AIML developer to focus on the core aspects of the question.

The purpose of this is to allow the developer to ignore the unimportant parts of the question and focus only on the core aspects. As with most languages there many different ways to ask the question, but most are just variations on a core theme. This is where pattern matching helps.

These matching operators are

  • Priority. Matches the exact word specified by proceeding the word with a $
  • 0 or more. Matches 0 or more words in a sequence. Can be either # or ^ depending upon precedence preference
  • 1 or more. Matches 1 or more words in a sequence. Can be either _ or * depending upon precedence preference
  • Sets. Matches a word as a member of a specific set. Sets are files of words, each file contains one set, such as colours or numbers.
  • ISet. Similar to sets but, but the members are contained inline to the AIML
  • Bot. Matches a word again a bot predicate, such as bot name, age, location etc
  • Regex. Matches a one-word regular expression

For more information on pattern matching and operator, precedence see Pattern Matching

Operator Precedence

In terms of precedence, the parser checks for each type of matching in a specific order defined by the following rules

	Precedence
		$	Priority
		#	0 or more
		_ 	1 or more
		word
		set
		iset		
		bot
		regex
                word
		^	0 or more
		*	1 or more

Back to Tutorial | Back - Getting Started | Next - Sets

Clone this wiki locally