나는 수식 검사기와 같은 것을 만들고 있는데이를 수행하기 위해 ParseKit 프레임 워크를 사용하고 있습니다. 내 접근 방식은 적절한 문법을 작성하는 것이고 언제 didMatchFormula 콜백 메소드가 샘플 문자열에서 호출되는지는 수식이 발견되어 유효하다고 가정합니다. 그러나 한 가지 어려움이 있습니다 - 수식 부분 다음에 다른 문자가 포함되어 있
내 bnf 문법을 검사 할 수있는 도구가 있습니까? 예 : <assign>::=<var>=<expr>
<var>::=A|B|C
<expr>::=<expr>+<expr>
|<var>
A = B + C 내 BNF 문법 A = B의 C *에 따른 유효 성명 아니다. 주어진 문이 유효한지 확인하는 도구가 있습니까?
3 개 이상의 "a"뒤에 BNF 표현식과 동일한 "b"가 오는 시퀀스를 어떻게 찾습니까? 나는 {<letter>} or {<letter> | <digit>}
가 0 번 이상 발생하는 반복적 인 항목에 대한 사용되지만 I "는이"확인 "B"를 만들기 위해 반복 한 반복 횟수를 얻는 방법을 모르는 것을 알고있다 시간의 같은 수의이 같은
라켓에 구현 된 유도 규칙 집합이 있습니다. 선택 사항이 없다고 가정 할 수 있습니다. 즉, BNF에서 파이프를 포함하는 규칙이 없음을 의미합니다. :: = | 라켓에 , 나는 이런 식으로 뭔가를 가지고있다 : (define *rules*
'((S . ("b" "a"))
(B . ("a"))
(C . (S B))))
해당 터미
현재 주제에 대한 개인 교육을위한 컴파일러 프런트 엔드를 작성 중이며 연산자 오버로딩을 통해 C++에서 BNF 정의를 처리하는 방식과 관련된 문제가 발생했습니다. Rule.h : class Rule
{
public:
ChainRule operator>>(Rule& right);
OrRule operator|(Rule& right);
추상 구문 트리가 메모리에서 어떻게 발생하는지, 각 구문의 트리가 될 것인가, 아니면 단일 루트 트리가 될 것인가를 결정하는 데 문제가 있습니까? . 샘플 소스 : P: 10
if A < 15:
P: 9
다음은 BNF-문법입니다 : SPC 흰색 공간과 NL 개행 문자를 나타냅니다 <Prog> ::= <Stmts>
<Stmts> ::= <
감산 + 3 " 이 문자열을 두 개의 하위 문자열로 나누고 특정 작업을 수행하려고합니다. // for addition
String s = "3 + 3";
int indexOfPlus = s.indexOf('+');
String beforePlus = s.substring(0,indexOfPlus);
String afterPlus= s.substri
재귀가 남아있는 언어에 대한 파서를 만들고 싶습니다. 어떻게해야할지 모르겠습니다. 구문 분석에 대한 유일한 경험은 ll (1)입니다. 예를 들어 cqlQuery ::= prefixAssignment cqlQuery
| scopedClause
prefixAssignment ::= '>' prefix '=' uri
| '>' uri
scopedCla