E040: Expected Token But Found — 이 토큰을 기대했는데 다른 게 나왔어요
E040: Expected Token But Found — 이 토큰을 기대했는데 다른 게 나왔어요
컴파일러가 특정 토큰(키워드, 기호, 식별자 등)을 기대했는데, 그 자리에서 다른 토큰을 발견했을 때 이 에러가 나와요.
본문
이건 일반적인 문법 에러로, 코드 구조가 그 위치에서 파서가 기대한 것과 맞지 않다는 뜻이에요. 흔한 원인으로는 구두점이 빠진 경우, 괄호가 짝이 맞지 않는 경우, 식별자가 기대되는 자리에 키워드가 쓰인 경우 등이 있어요.
예제 (Example)
def example(x: Int y: Int) = x + y
x: Int와 y: Int 사이에 구분자(쉼표)가 빠져 있어요. 파서가 y 다음에 다른 것을 기대했는데 :를 만난 거죠.
오류 메시지 (Error)
-- [E040] Syntax Error: example.scala:1:20 -------------------------------------
1 |def example(x: Int y: Int) = x + y
| ^
| an identifier expected, but ':' found
해결 방법 (Solution)
파라미터 사이에 빠진 쉼표를 추가하거나, 파라미터를 별도의 목록으로 나누면 돼요.
// Add the missing comma between parameters
def example(x: Int, y: Int) = x + y
// Or use separate parameter lists
def example(x: Int)(y: Int) = x + y