2012-10-25 3 views
1

저는 ActionScript 3을 3 일 동안 만 사용 했으므로 저는 중요한 newb이지만 대부분의 다른 언어를 사용했습니다. 구문 오류 : leftbracket 전에 세미콜론을 예상합니다

나는 상위 레이어의 프레임 하나에서 다음과 같은 코드가 있습니다

var level:Array = new Array(); 
var level[0] = new Object(); 

나는 다음과 같은 오류가 점점 오전 : 일을 할

Scene 1, Layer 'levels', Frame 1, Line 2 
1086: Syntax error: expecting semicolon before leftbracket. 

나는 많은 예제를 검토 한 결과를 보인다있는 내가하고있는 똑같은 일을하고, 나는 또한 객체를 따로 따로 정의한 다음 동일한 오류로 배열에 추가하려고 시도했다. 나는 또한 답을 찾았지만, 내가 찾은 모든 질문은이 상황과는 조금 다릅니다. 어떤 도움이나 링크에 미리 감사드립니다.

+0

입니다. 컴파일러는 충돌 오류를 던져야하지만 대신 세미콜론을 사용하는 것이 가장 좋습니다. Flash Professional은 아주 훌륭한 코드 편집기가 아닙니다. 보다 수용 가능한 코드 편집기를 원한다면 FlashDevelop (PC 전용) 또는 Flash Builder (Cro $$ 플랫폼)를 살펴보십시오. – TheDarkIn1978

+0

나는 게시하기 전에 내 오류를 발견 했어야하고 나는 게시 직후 그것을 알아 냈어야했기 때문에 조금 당황 스럽지만, 여기에 올린 모든 위대한 답변들이 다른 사람들에게 도움이되기를 바랍니다. 새로운 구문을 가르쳐 주신 PST에게 감사드립니다. –

+0

pst의 대답을 올바른 것으로 받아들이는 것을 잊지 마십시오. – TheDarkIn1978

답변

5

구문/문법 생산

var level[0] = new Object(); 

은 무효이다.

var 생산에는 간단한 식별자가 필요하며 표현식이 아닌 이 필요합니다. 파서는 대략적으로 생산을 var level;[0] = ..;으로 취급하려고 시도했지만 (누락 된 세미콜론으로 인해 실패했지만 [0] = ..;도 유효하지 않은 생산이기 때문에 어쨌든 실패했습니다).

시도 :

var level:Array = new Array(); 
level[0] = new Object(); // no "var" here so it is a valid grammar production 

또는 더 간결 :


1

var level:Array = [{}]; // using Array and Object literal notations 
그 ANTLR 생산 규칙에 대한 AS3.g를 참조하십시오. 또는 ECMAScript (AS가 파생 된)의 경우 12.2 Variable Statement from ES5-Annotated을 참조하고 선택적 식별자 ( =) 또는 다른 선언 ( ,) 또는 문장의 끝 ( ;)이 뒤에 오는 식별자가 필요합니다.

0

만 기본적으로, 당신은`level` 변수를 두 번 선언 한

level[0] = {}; 

또는

level.push({}); 
관련 문제