diff options
Diffstat (limited to 'src/mml_composemusic_mcp/parser_pyxel.py')
| -rw-r--r-- | src/mml_composemusic_mcp/parser_pyxel.py | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/mml_composemusic_mcp/parser_pyxel.py b/src/mml_composemusic_mcp/parser_pyxel.py index 336a55e..f75c169 100644 --- a/src/mml_composemusic_mcp/parser_pyxel.py +++ b/src/mml_composemusic_mcp/parser_pyxel.py @@ -76,6 +76,7 @@ class PyxelParser: self._parse_track_header() continue if self.current_channel is None: + self._warn_outside_track(token) self.ctx.advance() continue self._parse_statement() @@ -102,6 +103,19 @@ class PyxelParser: return self.note_sequence, self.ctx.errors + def _warn_outside_track(self, token: Token) -> None: + if token.type == TokenType.EOF: + return + self.ctx.add_error( + code=ErrorCode.SYNTAX_OUTSIDE_TRACK, + line=token.line, + column=token.column, + message=f"'{token.raw}' はトラック外に書かれています。", + severity="warning", + hint="コマンドはトラックヘッダー(0:, 1:, 2:, 3:)の後に記述してください。", + context=self._context_line(token), + ) + def _parse_track_header(self) -> None: token = self.ctx.advance() ch = token.value |
