현재이 문제를 겪었을 때 시험을 보면서 과거 논문을 조사하고 있습니다. 이하 은 단순한 산술 식을 설명 EBNF의 문법을 같은 1 + 2 * 3 - 4 : Expression = Operand, {Operator, Operand};
Operand = "1"|"2"|"3"|"4"|"5"|"6"|"7"|"8"|"9";
Operator = "+"|"-"|"*
모두. 내가 문자열을 구문 분석 할 때 나는 내 문제 을 발견 (그것이 더 큰 문법의 일부) 문법을 만든 00 */3,5 * * 5 미국/뉴욕 '/'입력에서 어떠한 대안 4 : I 예외를 라인 (1)을 다음 없었다 내가 발견 한 것처럼 문제는 하위 문자열 /3,5가 "with_step_value"규칙과 완전히 구문 분석된다는 것인데, 파서가 첫 번째 syb
에서 규칙을 트리거 토큰을 감지 : public class DLRBaseListener implements DLRListener {
@Override public void enterDlr(DLRParser.DlrContext ctx) { }
@Override public void exitDlr(DLRParser.DlrContext ctx) { }
왜 우리가 Chomsky 표준 형식으로 문법을 변환하고 싶을 때 새로운 시작 상태 S0 -> S를 추가합니까? 우리가 그렇게하지 않으면 어떻게 될까요? 처음에는 그것이 엡실론 규칙 때문이라고 생각했습니다. 그러나 우리는 시작 변수에서 엡실론 규칙을 제거하지 않습니다. 그렇다면 S0 -> S를 추가하면 어떤 이점이 있습니까? 감사합니다.
C++의 문맥 자유 문법 (CFG) 문을 입력으로 받아들이는 플랫폼을 만드는 방법이 궁금합니다. 모범적 인 목적을 위해 CFG가 포커 이동을 지시한다고 가정합니다. 그래서 이동 문의 일반적인 형태는 move statement -> PLAYER_ID MOVE_ID MOVE
될 경우 PLAYER_ID -> INTEGER
MOVE_ID -> INTEGER
내 대학에서 컴파일러 디자인 과정을 마친 후 간단한 프로그래밍 언어로 컴파일러를 만들었지 만 파서에 문제가 있습니다. 나는 컴파일러를 mosml로 만들고 내장 파서 mosmlyac을 사용하여 파서를 구성했다. 다음은 문법과 연관성 + 우선 순위를 보여주는 파서의 발췌 부분입니다. ...
%right ASSIGN
%left OR
%left AND
%n
나는에서오고 ES6 문법 번역하기 위해 노력하고있어 : https://tc39.github.io/ecma262/#sec-ecmascript-language-lexical-grammar 및 https://gist.github.com/rbuckton/0d8c1f1c607f52f5ae37을 내 문제는 선언의 많은이 같은 포함되어 있습니다 : ObjectLiter