GUIDOLib  1.7.7
Guido Engine Internal Documentation
GuidoParser.h
1 /*
2  GUIDO Library
3  Copyright (C) 2013 Grame
4 
5  This Source Code Form is subject to the terms of the Mozilla Public
6  License, v. 2.0. If a copy of the MPL was not distributed with this
7  file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 
9  Grame Research Laboratory, 11, cours de Verdun Gensoul 69002 Lyon - France
10  research@grame.fr
11 
12  */
13 
14 #ifndef __GuidoParser__
15 #define __GuidoParser__
16 
17 #include <istream>
18 #include <string>
19 #include <sstream>
20 #include <map>
21 #include <stack>
22 #include <locale.h>
23 
24 #include "GuidoStream.h"
25 #include "GUIDOFactory.h"
26 
27 class ARFactory;
28 class TagParameter;
29 
30 
31 
32 /* \brief a class for reading gmn streams
33 */
34 class GuidoParser {
35 
36  protected:
37 
38  virtual void initScanner();
39  virtual void destroyScanner();
40 
43  int fndots;
44 
45  bool fnt_enumSet; /* enum of rel.dur explicitely specified? */
46  long int fnt_enum; /* rel. dur. of current / last note: */
47  long int fnt_denom;
48 
49  int fErrorLine; //< filled in case of syntax error
50  int fErrorColumn; //< filled in case of syntax error
51  std::string fErrorMsg; //< filled in case of syntax error
52 
53  virtual int _yyparse();
54 
55  public:
56  enum vartype { kString, kInt, kFloat };
57 
58  struct variable {
59  std::string fValue;
61  };
62  struct vareval {
63  std::string fName;
64  std::string fValue;
65  const char* fPtr;
66  };
67 
68  std::map<std::string, variable> fEnv;
69  std::stack<vareval> fVStreams; // local streams intended to parse variables
70 
71  void *fScanner; // the flex scanner
72  std::istream *fStream; // input stream
74  std::string fText; // the current text
75 
76  typedef std::vector<TagParameter*> ParamsList;
77 
78  GuidoParser();
79  virtual ~GuidoParser();
80 
81  virtual ARHandler parse();
82  virtual const ARFactory *getFactory() const { return fFactory; }
83 
84  virtual void setStream(std::istream *stream);
85  virtual bool get(char& c); // return the next char in stream or in expanded variable
86  virtual bool getSettings(GuidoLayoutSettings&); // return the engine settings if any
87 
88  virtual void noteInit (const char *id);
89  virtual void tabInit (int string, const char *fret);
90  virtual void noteAcc (int n);
91  virtual void noteOct (int n);
92  virtual void noteEnum (long int n);
93  virtual void noteDenom (long int n);
94  virtual void noteDot ();
95  virtual void noteDdot ();
96  virtual void noteTdot ();
97  virtual void noteAbsDur (long int n);
98  virtual void appendNote ();
99 
100  virtual void chordInit ();
101  virtual void chordInitNote ();
102  virtual void seqAppendChord ();
103 
104  virtual void seqInit ();
105  virtual void seqExit ();
106 
107  virtual void segmInit ();
108  virtual void segmExit ();
109  virtual void segmAppendSeq ();
110 
111  virtual void tagStart (const char* id, long int no);
112  virtual void tagIntArg (long int n);
113  virtual void tagFloatArg (double r);
114  virtual void tagArgUnit (const char* unit);
115  virtual void tagStrArg (const char *s);
116  virtual void tagAdd ();
117  virtual void tagAddArg (const char *s);
118  virtual void tagEnd ();
119  virtual void tagRange ();
120 
121  virtual void tagParameter (TagParameter* param);
122  virtual TagParameter* floatParam (float val);
123  virtual TagParameter* floatParam (float val, const char* unit);
124  virtual TagParameter* intParam (int val);
125  virtual TagParameter* intParam (int val, const char* unit);
126  virtual TagParameter* strParam (const char*);
127  virtual TagParameter* varParam (const char* name);
128  virtual void setParamName (TagParameter* p, const char* name);
129 
130  virtual bool variableSymbols (const char* name);
131  virtual void variableDecl (const char* name, const char* value, vartype type);
132 
133  virtual void setError(int line, int column, const char *msg)
134  { fErrorLine = line; fErrorColumn = column; fErrorMsg = msg; }
135 
136  virtual int getErrorLine() const { return fErrorLine; }
137  virtual int getErrorColumn() const { return fErrorColumn; }
138  virtual const char* getErrorMsg() const { return fErrorMsg.c_str(); }
139  void parseError(int line, int column, const char* msg);
140  private:
141  bool getVariable (const char* name, variable& var);
142 };
143 
144 #endif
GuidoParser::vareval::fValue
std::string fValue
Definition: GuidoParser.h:64
GuidoParser::fzaehlerSet
int fzaehlerSet
Definition: GuidoParser.h:41
GuidoParser::parseError
void parseError(int line, int column, const char *msg)
GuidoParser::tagStart
virtual void tagStart(const char *id, long int no)
GuidoParser::~GuidoParser
virtual ~GuidoParser()
GuidoParser::fnt_enumSet
bool fnt_enumSet
Definition: GuidoParser.h:45
GuidoParser::variable::fType
vartype fType
Definition: GuidoParser.h:60
GuidoParser::get
virtual bool get(char &c)
GuidoParser::ParamsList
std::vector< TagParameter * > ParamsList
Definition: GuidoParser.h:76
GuidoParser::initScanner
virtual void initScanner()
GuidoParser::noteDdot
virtual void noteDdot()
GuidoParser::chordInitNote
virtual void chordInitNote()
NodeAR
Definition: GUIDOInternal.h:31
GuidoParser::tagRange
virtual void tagRange()
GuidoParser::variableDecl
virtual void variableDecl(const char *name, const char *value, vartype type)
GuidoParser::fFactory
ARFactory * fFactory
Definition: GuidoParser.h:73
GuidoParser::setStream
virtual void setStream(std::istream *stream)
GuidoParser::noteDenom
virtual void noteDenom(long int n)
GuidoParser::tagIntArg
virtual void tagIntArg(long int n)
GuidoParser::tagFloatArg
virtual void tagFloatArg(double r)
GuidoParser::noteDot
virtual void noteDot()
GuidoParser::noteOct
virtual void noteOct(int n)
GuidoParser::variable::fValue
std::string fValue
Definition: GuidoParser.h:59
GuidoParser::tagArgUnit
virtual void tagArgUnit(const char *unit)
GuidoParser::vartype
vartype
Definition: GuidoParser.h:56
GuidoParser::seqInit
virtual void seqInit()
GuidoParser::segmExit
virtual void segmExit()
ARFactory
Class used in order to build the abstract representation (AR) structure of music.
Definition: ARFactory.h:60
GuidoParser::intParam
virtual TagParameter * intParam(int val)
GuidoParser::getSettings
virtual bool getSettings(GuidoLayoutSettings &)
GuidoParser::floatParam
virtual TagParameter * floatParam(float val)
GuidoParser::tagAdd
virtual void tagAdd()
GuidoParser::getFactory
virtual const ARFactory * getFactory() const
Definition: GuidoParser.h:82
GuidoParser::fnt_denom
long int fnt_denom
Definition: GuidoParser.h:47
GuidoParser::segmAppendSeq
virtual void segmAppendSeq()
GuidoParser::destroyScanner
virtual void destroyScanner()
GuidoParser::strParam
virtual TagParameter * strParam(const char *)
GuidoParser::tagParameter
virtual void tagParameter(TagParameter *param)
GuidoParser::getErrorMsg
virtual const char * getErrorMsg() const
Definition: GuidoParser.h:138
GuidoParser::variableSymbols
virtual bool variableSymbols(const char *name)
GuidoParser::kString
Definition: GuidoParser.h:56
GuidoParser::setError
virtual void setError(int line, int column, const char *msg)
Definition: GuidoParser.h:133
GuidoParser::tagStrArg
virtual void tagStrArg(const char *s)
GuidoParser::variable
Definition: GuidoParser.h:58
GuidoParser::chordInit
virtual void chordInit()
GuidoParser::appendNote
virtual void appendNote()
TagParameter
The base class for all guido tags.
Definition: TagParameter.h:26
GuidoParser::faccidentals
int faccidentals
Definition: GuidoParser.h:42
GuidoParser::fEnv
std::map< std::string, variable > fEnv
Definition: GuidoParser.h:68
GuidoParser::fErrorLine
int fErrorLine
Definition: GuidoParser.h:49
GuidoParser::vareval
Definition: GuidoParser.h:62
GuidoParser::getErrorLine
virtual int getErrorLine() const
Definition: GuidoParser.h:136
GuidoLayoutSettings
Engine settings for the graphic score layout.
Definition: GUIDOEngine.h:255
GuidoParser::noteInit
virtual void noteInit(const char *id)
GuidoParser::_yyparse
virtual int _yyparse()
GuidoParser::fScanner
void * fScanner
Definition: GuidoParser.h:71
GuidoParser::getErrorColumn
virtual int getErrorColumn() const
Definition: GuidoParser.h:137
GuidoParser::seqAppendChord
virtual void seqAppendChord()
GuidoParser::vareval::fPtr
const char * fPtr
Definition: GuidoParser.h:65
GuidoParser::tagEnd
virtual void tagEnd()
GuidoParser::fVStreams
std::stack< vareval > fVStreams
Definition: GuidoParser.h:69
GuidoParser::vareval::fName
std::string fName
Definition: GuidoParser.h:63
GuidoParser::noteEnum
virtual void noteEnum(long int n)
GuidoParser::seqExit
virtual void seqExit()
GuidoParser::segmInit
virtual void segmInit()
GuidoParser::setParamName
virtual void setParamName(TagParameter *p, const char *name)
GuidoParser::tagAddArg
virtual void tagAddArg(const char *s)
GuidoParser::GuidoParser
GuidoParser()
GuidoParser::fnt_enum
long int fnt_enum
Definition: GuidoParser.h:46
GuidoParser::tabInit
virtual void tabInit(int string, const char *fret)
GuidoParser::parse
virtual ARHandler parse()
GuidoParser::noteTdot
virtual void noteTdot()
GuidoParser::fStream
std::istream * fStream
Definition: GuidoParser.h:72
GuidoParser::fText
std::string fText
Definition: GuidoParser.h:74
GuidoParser::fErrorColumn
int fErrorColumn
Definition: GuidoParser.h:50
GuidoParser::fndots
int fndots
Definition: GuidoParser.h:43
GuidoParser::fErrorMsg
std::string fErrorMsg
Definition: GuidoParser.h:51
GuidoParser::kFloat
Definition: GuidoParser.h:56
GuidoParser
Definition: GuidoParser.h:34
GuidoParser::varParam
virtual TagParameter * varParam(const char *name)
GuidoParser::noteAbsDur
virtual void noteAbsDur(long int n)
GuidoParser::noteAcc
virtual void noteAcc(int n)
GuidoParser::kInt
Definition: GuidoParser.h:56

Guido Project Copyright © 2019 Grame-CNCM