당신은 볼 때 구문 분석을 호출해서는 안됩니다 callSomething()
(나는 당신이 callSomething
아닌 의미한다고 가정합니다 doSomething
). 차이 a
및 callSomething
다른 메소드 호출 중에 하나 인 방법이 정의된다.
새 정의가 표시되면 해당 정의를 추가 할 수 있는지 확인하는 것과 관련된 검사를 수행해야합니다.
- 동일한 서명으로 기능이 존재하지 않는지 확인
- 메소드 선언이 올바른 범위에서 수행되고 있는지 확인하십시오 (즉, 메소드를 다른 메소드 선언 내에 선언 할 수 있습니까?).
이러한 검사가 통과되었다고 가정하면이를지도에 추가하고 해당 방법의 내용을 확인할 수 있습니다.
와 같은 메소드 호출을 찾으면 callSomething()
다음 점검을 수행해야합니다.
callSomething
지도에 존재 합니까 ?
- 제대로 호출 되었습니까 (발견 된 서명과 일치하는 인수 수)?
- 인수가 유효합니까 (변수 이름을 사용하는 경우 선언 되었습니까?이 범위에서 액세스 할 수 있습니까?)?
- 어디에서 callSomething을 호출 할 수 있습니까 (비공개, 공개, 보호)?
만약 당신 callSomething()
이 괜찮다면,이 시점에서 당신이하고 싶은 것은 실제로 당신이 그것에 접근하고자하는 방법에 달려 있습니다. 엄밀히 말하면,이 시점에서 그러한 호출이 괜찮다는 것을 알고 나면 추가 세부 사항으로 가지 않고 메소드 이름과 인수 만 저장할 수 있습니다. 프로그램을 실행할 때 런타임에 있어야하는 인수를 사용하여 메소드를 호출합니다.
더 나아가고 싶다면 문자열뿐만 아니라 실제 방법에 대한 링크를 저장할 수 있습니다. 이것은 더 효율적이지만 메모리를 관리해야하는 경우 혼동 될 수 있습니다. 처음에는 끈을 붙잡고있는 것이 좋습니다. 나중에 최적화를 시도 할 수 있습니다.
참고이하는 모든 당신이 당신의 프로그램에 모든 토큰을 인식하고 그들이 알고있는 수단 프로그램, lexxed 한 가정입니다 됩니다 . 그것들이 아직 서로 이해가되는지 아는 것은 아닙니다. 파싱 단계입니다. 아직 토큰이 무엇인지 모르는 경우 먼저 해당 정보를 얻는 데 중점을 두십시오.
도움이 되길 바랍니다. 프로그래머 SE에 오신 것을 환영합니다!