5 #ifndef HOBBES_PARSE_GRAMMAR_HPP_INCLUDED 6 #define HOBBES_PARSE_GRAMMAR_HPP_INCLUDED 21 virtual void show(std::ostream&)
const = 0;
30 void show(std::ostream&)
const;
32 const std::string& value()
const;
40 void show(std::ostream&)
const;
42 const std::string& value()
const;
49 virtual T with(
const GSymRef*)
const = 0;
50 virtual T with(
const GStr*)
const = 0;
55 if (
const GSymRef* x = dynamic_cast<const GSymRef*>(p.get())) {
57 }
else if (
const GStr* x = dynamic_cast<const GStr*>(p.get())) {
60 std::ostringstream ss;
61 ss <<
"Internal error, can't switch on unknown grammar value type: ";
63 throw std::runtime_error(ss.str());
68 inline BoundGrammarValue(
const std::string& vn,
const GrammarValuePtr& e) : varname(vn), element(e) { }
83 typedef std::vector<GrammarSymDef>
Grammar;
std::vector< GrammarRule > GrammarRules
Definition: grammar.H:80
ExprPtr makeParser(cc *, const Grammar &, const LexicalAnnotation &)
Definition: grammar.C:49
std::pair< std::string, GrammarRules > GrammarSymDef
Definition: grammar.H:82
std::vector< BoundGrammarValue > BoundGrammarValues
Definition: grammar.H:72
virtual void show(std::ostream &) const =0
std::vector< GrammarSymDef > Grammar
Definition: grammar.H:83
GrammarRule(const BoundGrammarValues &vs, const ExprPtr &e)
Definition: grammar.H:75
GrammarValuePtr element
Definition: grammar.H:70
T switchOf(const PrimitivePtr &p, const switchConst< T > &f)
Definition: expr.H:1045
BoundGrammarValues values
Definition: grammar.H:77
std::string varname
Definition: grammar.H:69
std::string x
Definition: grammar.H:44
BoundGrammarValue(const std::string &vn, const GrammarValuePtr &e)
Definition: grammar.H:68
ExprPtr reduction
Definition: grammar.H:78
std::shared_ptr< Expr > ExprPtr
Definition: expr.H:58
virtual T with(const GSymRef *) const =0
Definition: lannotation.H:36
Definition: lannotation.H:22
std::vector< V > values(const std::map< K, V > &m)
Definition: array.H:218
std::string x
Definition: grammar.H:34
std::shared_ptr< GrammarValue > GrammarValuePtr
Definition: grammar.H:25