Synopsis - Cross-Reference
File: src/Synopsis/PTree/Atoms.hh1// 2// Copyright (C) 2004 Stefan Seefeld 3// All rights reserved. 4// Licensed to the public under the terms of the GNU LGPL (>= 2), 5// see the file COPYING for details. 6// 7#ifndef Synopsis_PTree_Atoms_hh_ 8#define Synopsis_PTree_Atoms_hh_ 9 10#include <Synopsis/PTree/NodesFwd.hh> 11#include <Synopsis/PTree/Node.hh> 12 13namespace Synopsis 14{ 15namespace PTree 16{ 17 18class Literal : public Atom 19{ 20public: 21 Literal(Token const &tk) : Atom(tk), my_type(tk.type) {} 22 virtual void accept(Visitor *visitor) { visitor->visit(this);} 23 Token::Type type() const { return my_type;} 24private: 25 Token::Type my_type; 26}; 27 28class CommentedAtom : public Atom 29{ 30public: 31 CommentedAtom(Token const &tk, Node *c = 0) : Atom(tk), my_comments(c) {} 32 CommentedAtom(char const *p, size_t l, Node *c = 0) : Atom(p, l), my_comments(c) {} 33 virtual void accept(Visitor *visitor) { visitor->visit(this);} 34 35 Node *get_comments() { return my_comments;} 36 void set_comments(Node *c) { my_comments = c;} 37private: 38 Node *my_comments; 39}; 40 41// class DupLeaf is used by Ptree::Make() and QuoteClass (qMake()). 42// The string given to the constructors are duplicated. 43 44class DupAtom : public CommentedAtom 45{ 46public: 47 DupAtom(char const *, size_t); 48 DupAtom(char const *, size_t, char const *, size_t); 49 virtual void accept(Visitor *visitor) { visitor->visit(this);} 50}; 51 52class Identifier : public CommentedAtom 53{ 54public: 55 Identifier(Token const &t) : CommentedAtom(t) {} 56 Identifier(char const *p, size_t l) : CommentedAtom(p, l) {} 57 virtual void accept(Visitor *visitor) { visitor->visit(this);} 58}; 59 60class Keyword : public CommentedAtom 61{ 62public: 63 Keyword(Token const &t) : CommentedAtom(t) {} 64 Keyword(char const *str, int len) : CommentedAtom(str, len) {} 65 virtual Token::Type token() const = 0; 66 virtual void accept(Visitor *visitor) { visitor->visit(this);} 67}; 68 69template <Token::Type t> 70class KeywordT : public Keyword 71{ 72public: 73 KeywordT(Token const &tk) : Keyword(tk) {} 74 KeywordT(char const *ptr, size_t length) : Keyword(ptr, length) {} 75 virtual Token::Type token() const { return t;} 76 virtual void accept(Visitor *visitor) { visitor->visit(this);} 77}; 78 79class UserKeyword : public Keyword 80{ 81public: 82 UserKeyword(Token const &t) : Keyword(t) {} 83 virtual Token::Type token() const { return my_type;} 84 virtual void accept(Visitor *visitor) { visitor->visit(this);} 85private: 86 Token::Type my_type; 87}; 88 89} 90} 91 92#endif
Generated on Tue May 13 02:39:21 2008 by
synopsis (version 0.10)
synopsis (version 0.10)