/* LLString.hpp */

#ifndef LLString_hpp
#define LLString_hpp

/**
 * The rule for variable length strings where the length of a
 * string is declared, in ASCII, in the first two characters.
 */

#include <string>
#include <vector>

#include "Rule.hpp"

class Visitor;
class ParserContext;

class LLString : public Rule
{
public:
    LLString(const std::string& spelling, const std::vector<const Rule*>& rules);
    LLString(const LLString& LLString);

    LLString& operator=(const LLString& LLString);

    const LLString* clone(void) const;

    static const LLString* parse(ParserContext& context);

    void* accept(Visitor& visitor) const;
};

#endif

/* eof */