diff --git a/res/devtools/syntax/vcm.toml b/res/devtools/syntax/vcm.toml index 524fdc80..96f1e095 100644 --- a/res/devtools/syntax/vcm.toml +++ b/res/devtools/syntax/vcm.toml @@ -1,6 +1,6 @@ language = "VCM" extensions = ["vcm"] -line-comment-start = "#" +line-comment = "#" keywords = [ "on", "off" ] diff --git a/src/coders/syntax_parser.cpp b/src/coders/syntax_parser.cpp index 4b56b607..871cd314 100644 --- a/src/coders/syntax_parser.cpp +++ b/src/coders/syntax_parser.cpp @@ -151,6 +151,12 @@ public: return std::wstring(source.substr(start, pos - start)); } + void emitLineComment(devtools::Location start) { + auto string = readUntilEOL(); + emitToken(TokenTag::COMMENT, std::wstring(string), start); + skipLine(); + } + std::vector tokenize() { skipWhitespace(); while (hasNext()) { @@ -229,16 +235,18 @@ public: } if (is_lua_operator_start(c)) { auto text = parseOperator(); - if (text == L"--") { - auto string = readUntilEOL(); - emitToken(TokenTag::COMMENT, std::wstring(string), start); - skipLine(); + if (text == syntax.lineComment) { + emitLineComment(start); continue; } emitToken(TokenTag::OPERATOR, std::move(text), start); continue; } auto text = readUntilWhitespace(); + if (text.find(syntax.lineComment) == 0) { + emitLineComment(start); + continue; + } emitToken(TokenTag::UNEXPECTED, std::wstring(text), start); } return std::move(tokens);