summaryrefslogtreecommitdiff
path: root/src/mml_composemusic_mcp/parser_pyxel.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/mml_composemusic_mcp/parser_pyxel.py')
-rw-r--r--src/mml_composemusic_mcp/parser_pyxel.py14
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