Interface for qBeta module object
Grammar: obj
-- A grammar ia a 4-tuple G = (N,T,P,S) where
-- N is a set of nonterminal symbols
-- T is a set of terminal symbols, the intersection of N and T is empty
-- P is a set of productions
-- S is a sybol in N called the start symbol
%visible StringLib,Containers.OrderedList,Containers.Set
Grammar:
nonTerminals: obj Set
terminals: obj Set
rules: obj OrderedList
start: ref Nonterminal
Symbol:
id: var integer
print:<
isTerminal:<
out V: var Boolean
NonTerminal: Symbol
print::
Terminal: Symbol
isTerminal::
print::
Rule:
leftSide: ref Nonterminal
alternatives: obj OrderedList
print:
i: var integer
print:
SymbolList: OrderedList
print:
Alternative:
print:
noOfRules: var integer
addRule:
R: ref Rule
alt: ref Alternative
print:
parse:<
output: ref AbstractSyntaxTree
Text:
AbstractSyntaxTree:
%Module demo