Node:Sentence, Next:, Previous:Syntax Notation, Up:Full Syntax



Syntax of Sentences as Terms


sentence          --> module : sentence
                   |  list
                         { where list is a list of sentence }
                   |  clause
                   |  directive
                   |  query
                   |  grammar-rule

clause            --> rule | unit-clause

rule              --> head :- body

unit-clause       --> head
                         { where head is not otherwise a sentence }

directive         --> :- body

query             --> ?- body

head              --> module : head
                   |  goal
                         { where goal is not a variable }

body             --> module : body
                   |  body -> body ; body
                   |  body -> body
                   |  \+ body
                   |  body ; body
                   |  body , body
                   |  goal

goal              --> term
                         { where term is not otherwise a body }

grammar-rule      --> gr-head --> gr-body

gr-head           --> module : gr-head
                   |  gr-head , terminals
                   |  non-terminal
                         { where non-terminal is not a variable }

gr-body           --> module : gr-body
                   |  gr-body -> gr-body ; gr-body
                   |  gr-body -> gr-body
                   |  \+ gr-body
                   |  gr-body ; gr-body
                   |  gr-body , gr-body
                   |  non-terminal
                   |  terminals
                   |  gr-condition

non-terminal      --> term
                         { where term is not otherwise a gr-body }

terminals         --> list | string

gr-condition      --> ! | { body }

module            --> atom