당신은 영어를 솔직하게 (정말로 !!!!) 이해할 수 있고 자기 일관성이 있어야합니다. 그러나 나는 말하게되었던 것을 의미 할 때 약간의 추측을 할 수 있습니다. 모든 경우에 내가 맞다고 생각하지 않으면 용서해주십시오.
자, 이제는 명시 적 스택을 통해 LL 구문 분석을 해본 적이 없지만 (필자는 분명한 구현에서 각각의 비 - 터미널에 대한 서브 루틴을 호출 할뿐입니다.),하지만 당신은 확실히 1 토큰 미리보기로 해결할 수 있습니다 그래서 나는 내 방식을 파싱하는 LL에 근거하여 이유를 추측 할 수 있고 당신의 "LL (1)"에서 "(1)"을 무시할 수 있다고 가정 할 것이다. 다음 기호).
첫 번째로,이 파서를 주면 첫 번째 질문은 크릭의 위로 향합니다! ( % * (%%^%)을 입력하면 곧바로 오류가 발생하여 시작하기 전에 "남은"입력이 많이 남습니다. 따라서 구현에 스택이 있으면 비어있는 것으로 간주합니다 ("(2)가 아니라") !!!!! 쉬운 일을 바로 잡으십시오 - 어떻게하면 우리가 당신을 신뢰할 수 있습니까?)
이 파서를 구현하는 방법을 알려주지 않았기 때문에 "a)"가 무엇을 의미하는지에 대해 의견이 있습니다. 설명하지 않고 특정 구현에 대해 물어 보는 것은 무의미합니다. 당신은 당신의 방식대로하고 그것을 제 방식으로합니다. 니 양말이 어디에 있는지 나에게 물어볼지도 모르지만 ... 나는 모른다. 그러나 스택이 입력 기호로 채워져 있다고 가정합니다. 나는 그들에게 무슨 일이 일어나는 지 모르지만 스택 맨 위에 올라가 있다고 가정해야합니다 ("바닥"을 의미합니까? 이것은 일반적으로 스택에 새로운 것을 넣는 곳입니다). 하나의 심볼 만 스택에있을 때 맨 아래. 그것은 거부되지 않았기 때문에 그것은 "("또는 "식별자"[당신의 토큰이 무엇인지 PLAIN으로하십시오!] "id"는 토큰 클래스 약어이고 "("는 리터럴입니다. 토큰. 질문을 설정할 때 신경 써주세요 :-(].
그 시점에서 입력 내용은 구현 방법 및 사용자의 대화 방법에 따라 달라집니다. 입력 기호가 스택으로 이동했지만 입력 스트림에서 제거하고 입력에 심볼이 동시에 있고 스택으로 동시에 이동 또는 복제되는 지점이 없습니다.
또한, 제 의견으로는 스택에 뭔가를 두는 유일한 이유는 "(", 당신이 그것을 거부 할 지 아직 알지 못하기 때문에입니다.) "id entireifier "당신은 토큰을 먹었을 것입니다. 규칙 1에 따라 2가 진행됩니다. 3 [당신의 문법 규칙에서하는 것은"* "무엇입니까? 그것이 당신이 말하지 않는 것을 의미하지 않는 한 제거하십시오].
그러면 누구나 다음에 좋아하는 기호를 입력 할 수 있습니다. 식별자가 아니라면 거절 될 것입니다. "(받아 들여진 입력에 대해 말하면 명확히하십시오!) 그래서"a "는 모순됩니다. 다음 상징이 받아 들여 지더라도 그것은 "("다시 "a")라는 것에 국한되지 않습니다. 여전히 모순입니다.
"c)"와 관련하여 달성하기가 쉽지 않습니다. 그냥 "x"("x"는 식별자로 사용되며 "("는 스택으로 이동하지만 더 이상 입력이 없으며 여기에는 "$"또는 파울 할 다른 것이 없습니다. 그것들을 끝내거나 끝내십시오. "$"는 입력의 끝을 의미하거나 기호 인 경우에주의하십시오!].
그러나 "$"는 입력이 끝나는 것을 의미하지만 그 시점에서 스택에 무언가를 갖는 방법은 없습니다. 유효한 입력은 x 또는 xx 또는 x (x) 또는 x (xx) 또는 xx (x) 또는 xxx (x (xx)) 등입니다. 입력 끝이 보일 때 스택이 비어 있지 않으면 오류가됩니다 조건 [모든 가능한 입력 또는 허용 된 입력에 대해 이야기하고 있다면 분명히하십시오!].
귀하의 "d)"는 영어로 의미 할 수있는 것에 대해 오히려 저의 생각을 뒤엎었습니다. 그것을 고치고 [여기에 언급되지 않은 다른 것들!].
[이 질문을 읽는 모든 사람은 수업 연습이나 이전 과정을 수행 할 수없는 사람의 컨텍스트에서 문제가 어떤 구현과 언어가 수업에 가르쳐 졌는지 알며 오류 응답과 관찰 시간을주의 깊게 정의해야합니다. 그것은 다소 저를 낙담시킵니다.]