mod.Add(ASTNode);
}
+ void OnParse(AST::NoteSequenceBlockWithoutAttributes node)
+ {
+ ASTNode.Block = node;
+ }
+
AST::Phrase ASTNode;
};
st.ASTNode.Sequences.emplace_back(ASTNode);
}
+ void OnParse(AST::NoteSequenceBlockWithoutAttributes node)
+ {
+ ASTNode.Sequences.emplace_back(node);
+ }
+
AST::NoteSequenceBlock ASTNode;
};
template<typename TState>
void success(TState& st)
{
- success(st, std::is_same<TState, PhraseState>{});
- }
-
-private:
- template<typename TState>
- void success(TState& st, std::true_type)
- {
- st.ASTNode.Block = ASTNode;
+ st.OnParse(ASTNode);
}
- template<typename TState>
- void success(TState& st, std::false_type)
- {
- st.ASTNode.Sequences.emplace_back(ASTNode);
- }
-
-public:
AST::NoteSequenceBlockWithoutAttributes ASTNode;
};
st.ASTNode.Sequences.emplace_back(ASTNode);
}
-public:
+ void OnParse(AST::NoteSequence node)
+ {
+ ASTNode.NoteSeq = node;
+ }
+
AST::NoteSequenceStatement ASTNode;
};
template<typename TState>
void success(TState& st)
{
- success(st, std::is_same<TState, NoteSequenceStatementState>{});
- }
-
-private:
- template<typename TState>
- void success(TState& st, std::true_type)
- {
- st.ASTNode.NoteSeq = ASTNode;
- }
-
- template<typename TState>
- void success(TState& st, std::false_type)
- {
- st.ASTNode.Notes.emplace_back(ASTNode);
+ st.OnParse(ASTNode);
}
-public:
AST::NoteSequence ASTNode;
};
st.ASTNode.Notes.push_back(ASTNode);
}
+ void OnParse(AST::NoteSequence node)
+ {
+ ASTNode.Notes.emplace_back(node);
+ }
+
AST::NoteAndExpression ASTNode;
};
st.ASTNode.Notes.emplace_back(ASTNode);
}
+ void OnParse(AST::NoteSequence node)
+ {
+ ASTNode.Notes.emplace_back(node);
+ }
+
AST::NoteRepeatEachExpression ASTNode;
};
st.ASTNode.Notes.emplace_back(ASTNode);
}
+ void OnParse(AST::NoteSequence node)
+ {
+ ASTNode.Notes.emplace_back(node);
+ }
+
AST::NoteRepeatExpression ASTNode;
};
st.ASTNode.Notes.emplace_back(ASTNode);
}
+ void OnParse(AST::SimpleDurationWithModifier node)
+ {
+ ASTNode.Duration = node;
+ }
+
+ void OnParse(AST::NoteNumber node)
+ {
+ ASTNode.Note = node;
+ }
+
AST::NoteAndDuration ASTNode;
};
st.ASTNode.Duration = ASTNode;
}
+ void OnParse(AST::SimpleDurationWithModifier node)
+ {
+ ASTNode.Durations.push_back(node);
+ }
+
AST::DurationSet ASTNode;
};
template<typename TState>
void success(TState& st)
{
- success(st, std::is_same<TState, DurationSetState>{});
- }
-
-private:
- template<typename TState>
- void success(TState& st, std::true_type)
- {
- st.ASTNode.Durations.push_back(ASTNode);
- }
-
- template<typename TState>
- void success(TState& st, std::false_type)
- {
- st.ASTNode.Duration = ASTNode;
+ st.OnParse(ASTNode);
}
-public:
AST::SimpleDurationWithModifier ASTNode;
};
st.ASTNode.Note = ASTNode;
}
+ void OnParse(AST::NoteNumber node)
+ {
+ ASTNode.Notes.push_back(node);
+ }
+
AST::SimpleChord ASTNode;
};
template<typename TState>
void success(TState& st)
{
- success(st, std::is_same<TState, SimpleChordState>{});
- }
-
-private:
- template<typename TState>
- void success(TState& st, std::true_type)
- {
- st.ASTNode.Notes.push_back(ASTNode);
+ st.OnParse(ASTNode);
}
- template<typename TState>
- void success(TState& st, std::false_type)
- {
- st.ASTNode.Note = ASTNode;
- }
-
-public:
AST::NoteNumber ASTNode;
};