GrammarRules

GrammarRules[rules]

represents grammar rules to be deployed to a cloud object that implements the grammar in a form suitable for use with functions like GrammarApply and Interpreter.

GrammarRules[rules,defs]

uses grammar definitions defs.

Details and Options

  • Grammar rules are of the form pattern->expr or pattern:>expr.
  • The pattern in a grammar rule must be a combination of the following elements:
  • "string"literal string
    StringExpression[]arbitrary string pattern
    RegularExpression[]regular expression
    form1|form2|alternative forms
    OptionalElement[form,def]optional form, with default
    FixedOrder[form1,form2,]forms that must occur in a fixed order
    AnyOrder[form1,form2,]forms that can occur in any order
    form..form repeated any number of times
    DelimitedSequence[form,]form repeated with delimiters in between
    GrammarToken["name"]built-in or defined domain
    CaseSensitive[form]form that must match case sensitively
    x:formform named to be used
  • CloudDeploy[GrammarRules[]] deploys a grammar and returns a cloud object, which can be used in GrammarApply and Interpreter.
  • The rules associated with the grammar in effect specify how inputs should be transformed to expressions.
  • In GrammarRules[rules,defs], the list defs can give subsidiary rules for grammar domains that can be used in the main grammar rules.
  • GrammarRules supports the following options:
  • AllowLooseGrammarAutomaticwhether to allow extra grammatical "fluff"
    IgnoreDiacriticsTruewhether to ignore diacritics when applying grammar rules
    IgnoreCaseTruedefault for case insensitivity
    AmbiguityFunctionAutomaticdefault function for handling ambiguity
    SaveDefinitionsFalsewhether to save all definitions associated with rules and defs
    InitializationNonean expression to be evaluated when the grammar is applied

Examples

open allclose all

Basic Examples  (2)

Deploy a simple grammar for adding numbers:

Apply the deployed grammar to a natural language string:

Define rules for custom GrammarToken objects:

Apply the grammar:

Properties & Relations  (1)

Repeated and DelimitedSequence are equivalent to recursive grammar rules:

Possible Issues  (1)

Expressions on the right-hand side of a grammar rule evaluate during GrammarApply:

To keep an expression unevaluated, use a wrapper like HoldComplete or Inactivate:

Wolfram Research (2014), GrammarRules, Wolfram Language function, https://reference.wolfram.com/language/ref/GrammarRules.html (updated 2015).

Text

Wolfram Research (2014), GrammarRules, Wolfram Language function, https://reference.wolfram.com/language/ref/GrammarRules.html (updated 2015).

CMS

Wolfram Language. 2014. "GrammarRules." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2015. https://reference.wolfram.com/language/ref/GrammarRules.html.

APA

Wolfram Language. (2014). GrammarRules. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/GrammarRules.html

BibTeX

@misc{reference.wolfram_2023_grammarrules, author="Wolfram Research", title="{GrammarRules}", year="2015", howpublished="\url{https://reference.wolfram.com/language/ref/GrammarRules.html}", note=[Accessed: 29-March-2024 ]}

BibLaTeX

@online{reference.wolfram_2023_grammarrules, organization={Wolfram Research}, title={GrammarRules}, year={2015}, url={https://reference.wolfram.com/language/ref/GrammarRules.html}, note=[Accessed: 29-March-2024 ]}